From c84d96043ee65ac341649813f7f2a587db97e869 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Mon, 26 Jul 2010 08:45:10 +0000 Subject: [PATCH] Import release 2.0.4 --- .gitignore | 16 +- .gitmodules | 3 + .kdev4/kmess.kdev4 | 43 - AUTHORS | 4 + CMakeLists.txt | 25 +- ChangeLog | 176 + Doxyfile | 2 +- FEATURES | 6 + NEWS | 39 + cmake/config-kmess.h.in | 3 + cmake/get-git-version.sh | 25 + cmake/get-svn-version.sh | 35 - configure | 2 +- contrib/isf-qt/.gitignore | 6 + contrib/isf-qt/CMakeLists.txt | 64 +- contrib/isf-qt/ChangeLog | 32 + contrib/isf-qt/README | 23 +- contrib/isf-qt/TODO | 3 +- contrib/isf-qt/cmake/isfqtconfig.h.in | 4 +- contrib/isf-qt/include/IsfQtStroke | 1 + contrib/isf-qt/include/isfinkcanvas.h | 46 +- contrib/isf-qt/include/isfqt.h | 112 +- contrib/isf-qt/include/isfqtdrawing.h | 68 +- contrib/isf-qt/include/isfqtstroke.h | 117 + contrib/isf-qt/src/CMakeLists.txt | 15 +- .../isf-qt/src/data/algorithms/bitpacking.cpp | 10 +- .../isf-qt/src/data/algorithms/bitpacking.h | 6 +- .../src/data/algorithms/bitpacking_byte.cpp | 10 +- .../src/data/algorithms/bitpacking_byte.h | 6 +- .../src/data/algorithms/deltatransform.cpp | 4 +- .../src/data/algorithms/deltatransform.h | 4 +- .../isf-qt/src/data/algorithms/huffman.cpp | 18 +- contrib/isf-qt/src/data/algorithms/huffman.h | 8 +- contrib/isf-qt/src/data/compression.cpp | 34 +- contrib/isf-qt/src/data/compression.h | 8 +- contrib/isf-qt/src/data/datasource.cpp | 26 +- contrib/isf-qt/src/data/datasource.h | 24 +- contrib/isf-qt/src/data/multibytecoding.cpp | 34 +- contrib/isf-qt/src/data/multibytecoding.h | 16 +- contrib/isf-qt/src/gif-support.h | 8 +- contrib/isf-qt/src/isfinkcanvas.cpp | 497 +- contrib/isf-qt/src/isfqt-internal.h | 108 +- contrib/isf-qt/src/isfqt.cpp | 528 +- contrib/isf-qt/src/isfqtdrawing.cpp | 719 +- contrib/isf-qt/src/isfqtstroke.cpp | 517 ++ contrib/isf-qt/src/tagsparser.cpp | 826 ++- contrib/isf-qt/src/tagsparser.h | 46 +- contrib/isf-qt/src/tagswriter.cpp | 260 +- contrib/isf-qt/src/tagswriter.h | 18 +- contrib/isf-qt/tests/CMakeLists.txt | 3 +- contrib/isf-qt/tests/decode/main.cpp | 4 +- contrib/isf-qt/tests/inkedit/main.cpp | 45 +- contrib/isf-qt/tests/inkedit/main.h | 9 +- contrib/isf-qt/tests/inkedit/testinkedit.ui | 19 + contrib/isf-qt/tests/test_isfdrawing.cpp | 2 +- contrib/isf-qt/tests/test_isfdrawing.h | 2 +- .../isf-qt/tests/test_multibyte_coding.cpp | 16 +- .../isf-qt/tests/test_png_fortification.cpp | 90 + contrib/isf-qt/tests/test_png_fortification.h | 36 + data/kmess.desktop | 1 - data/kmess.notifyrc | 4 + data/sounds/kmess_chat.mp3 | Bin 0 -> 55081 bytes data/sounds/kmess_logoff.mp3 | Bin 0 -> 47558 bytes data/sounds/kmess_logon.mp3 | Bin 0 -> 47558 bytes data/sounds/kmess_msg.mp3 | Bin 0 -> 47976 bytes kmess.kdev4 | 2 +- kmess.supp | 606 -- po/ar.po | 591 +- po/ca.po | 598 +- po/de.po | 689 +- po/el.po | 626 +- po/es.po | 605 +- po/et.po | 647 +- po/fi.po | 587 +- po/fr.po | 607 +- po/gl.po | 6270 +++++++++++++++++ po/hu.po | 589 +- po/it.po | 835 +-- po/ja.po | 790 ++- po/kmess.pot | 574 +- po/nl.po | 816 ++- po/pt.po | 592 +- po/pt_BR.po | 723 +- po/ru.po | 3235 +++++---- po/sk.po | 2244 ++++-- po/tr.po | 701 +- po/zh_CN.po | 577 +- po/zh_TW.po | 252 +- src/CMakeLists.txt | 23 +- src/account.cpp | 34 +- src/account.h | 6 +- src/accountsmanager.cpp | 10 +- src/chat/chat.cpp | 44 +- src/chat/chatmaster.cpp | 33 +- src/chat/chatmessageview.cpp | 11 +- src/chat/chatmessageview.h | 2 + src/chat/chatstatusbar.cpp | 2 +- src/chat/chatview.cpp | 19 +- src/chat/chatview.h | 2 + src/chat/chatwindow.cpp | 152 +- src/chat/chatwindow.h | 2 +- src/chat/chatwindow.ui | 2 +- src/chat/contactframe.cpp | 22 +- src/chat/contactframe.ui | 13 +- src/chat/contactswidget.cpp | 24 +- src/chat/contactswidget.ui | 6 +- src/chat/winkswidget.cpp | 26 +- src/contact/contact.cpp | 17 + src/contact/contact.h | 6 + src/contact/contactextension.cpp | 8 +- src/contact/group.cpp | 2 +- src/contact/msnobject.cpp | 6 +- src/contact/msnstatus.cpp | 32 + src/contact/msnstatus.h | 2 + src/dialogs/addcontactdialog.cpp | 2 +- src/dialogs/addemoticondialog.cpp | 6 +- src/dialogs/chathistorydialog.cpp | 4 +- src/dialogs/contactaddeduserdialog.cpp | 9 + src/dialogs/contactpropertiesdialog.cpp | 29 +- src/dialogs/invitedialog.cpp | 14 +- src/dialogs/userpicturesdialog.cpp | 18 +- src/emoticontheme.cpp | 46 +- src/kmess.cpp | 34 +- src/kmessinterface.cpp | 16 +- src/kmessview.cpp | 184 +- src/kmessview.h | 6 + src/kmessview.ui | 208 +- src/kmessviewdelegate.cpp | 75 +- src/kmessviewdelegate.h | 13 +- src/main.cpp | 1 + src/model/contactlist.cpp | 30 +- src/model/contactlist.h | 2 +- src/model/contactlistmodelfilter.cpp | 8 +- src/model/contactlistmodelitem.cpp | 63 +- .../applications/msnobjecttransferp2p.cpp | 2 +- src/network/msnchallengehandler.cpp | 2 +- src/network/msnconnection.cpp | 10 +- src/network/msnnotificationconnection.cpp | 192 +- src/network/msnnotificationconnection.h | 2 + src/network/msnswitchboardconnection.cpp | 99 +- src/network/soap/addressbookservice.cpp | 145 +- src/network/soap/addressbookservice.h | 4 + src/network/soap/httpsoapconnection.cpp | 26 +- src/network/soap/httpsoapconnection.h | 2 + src/network/soap/offlineimservice.cpp | 8 +- src/network/soap/passportloginservice.cpp | 26 +- src/network/soap/roamingservice.cpp | 56 +- src/notification/chatnotification.cpp | 2 +- .../contactstatusnotification.cpp | 2 +- src/notification/macnotification.cpp | 194 + src/notification/macnotification.h | 67 + src/notification/newsystemtraywidget.cpp | 231 + src/notification/newsystemtraywidget.h | 67 + src/notification/notificationmanager.cpp | 49 +- src/notification/notificationmanager.h | 4 + src/notification/systemtraywidget.cpp | 4 +- src/settings/accountpage.cpp | 11 +- src/settings/accountsmanagerpage.cpp | 6 +- src/settings/chatloggingpage.cpp | 2 +- src/settings/chatstylepage.cpp | 12 +- src/settings/emoticonspage.cpp | 6 +- src/settings/globalsettingsdialog.cpp | 4 +- src/utils/inlineeditlabel.cpp | 6 +- src/utils/likeback/likebackbar.cpp | 2 +- src/utils/likeback/likebackdialog.cpp | 2 +- src/utils/nowlisteningclient.cpp | 62 +- src/utils/nowlisteningclient.h | 2 + src/utils/xautolock.cpp | 9 +- src/utils/xmlfunctions.cpp | 6 +- 169 files changed, 20944 insertions(+), 10246 deletions(-) create mode 100644 .gitmodules delete mode 100644 .kdev4/kmess.kdev4 create mode 100755 cmake/get-git-version.sh delete mode 100755 cmake/get-svn-version.sh create mode 100644 contrib/isf-qt/.gitignore create mode 100644 contrib/isf-qt/include/IsfQtStroke create mode 100644 contrib/isf-qt/include/isfqtstroke.h create mode 100644 contrib/isf-qt/src/isfqtstroke.cpp create mode 100644 contrib/isf-qt/tests/test_png_fortification.cpp create mode 100644 contrib/isf-qt/tests/test_png_fortification.h create mode 100644 data/sounds/kmess_chat.mp3 create mode 100644 data/sounds/kmess_logoff.mp3 create mode 100644 data/sounds/kmess_logon.mp3 create mode 100644 data/sounds/kmess_msg.mp3 delete mode 100644 kmess.supp create mode 100644 po/gl.po create mode 100644 src/notification/macnotification.cpp create mode 100644 src/notification/macnotification.h create mode 100644 src/notification/newsystemtraywidget.cpp create mode 100644 src/notification/newsystemtraywidget.h diff --git a/.gitignore b/.gitignore index d76b74e..a5c618a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,16 @@ -build +# Build files and dirs +build* + +# KDevelop and other IDE-specific project files +*.kdev* + +# Doxygen files +apidocs/ +kmess.tag + +# Mac stuff .DS_Store +finkbuild + +# ./configure script stuff +Makefile diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..72173c7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "contrib/isf-qt"] + path = contrib/isf-qt + url = git://gitorious.org/kmess/libisf-qt.git diff --git a/.kdev4/kmess.kdev4 b/.kdev4/kmess.kdev4 deleted file mode 100644 index 64cb04c..0000000 --- a/.kdev4/kmess.kdev4 +++ /dev/null @@ -1,43 +0,0 @@ -[Buildset] -Number of Builditems=1 - -[Buildset][Builditem0] -Itemname=KMess -Itempath=./ -Projectname=KMess - -[CMake] -BuildDirs=./build -CMakeDir=/usr/share/cmake/Modules -Current CMake binary=cmake -CurrentBuildDir=./build -CurrentInstallDir= -ProjectRootRelative=./ - -[Chat Window debug-Run Options] -Arguments=--runtest chatwindow -Executable=./build/src/kmess -Working Directory=./build/src/ - -[Contact List debug-Run Options] -Arguments=--runtest contactlist -Executable=./build/src/kmess -Working Directory=./build/src/ - -[Debug-Run Options] -Executable=./build/src/kmess - -[MakeBuilder] -Abort on First Error=false -Number Of Jobs=3 -Run Multiple Jobs=true - -[Project] -VersionControlSupport=kdevsubversion - -[Run Options] -Run Targets=Chat Window debug,Contact List debug,Debug - -[Veritas] -executables= -framework=QTest diff --git a/AUTHORS b/AUTHORS index 8995ded..de05a1f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -83,6 +83,10 @@ Barthe Guillaume Scias + Galician: + + Indalecio Freiría Santos + German: Jan Tönjes diff --git a/CMakeLists.txt b/CMakeLists.txt index 344ad2d..c2eb1f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,7 @@ IF( NOT KDE4_FOUND ) " \n" " You will need this package and the matching development package.\n" " Usually the package names for this library are:\n" - " on Debian: 'kdebase-runtime' and 'kdelibs4-dev'\n" - " on Ubuntu: 'kdebase-runtime' and 'kdelibs5-dev'\n" + " on Debian and Ubuntu: 'kdebase-runtime' and 'kdelibs5-dev'\n" " on openSUSE: 'kdebase4-runtime' and 'libkde4-devel'\n" " \n" " Please refer to the KMess board for more info,\n" @@ -49,7 +48,7 @@ FIND_PACKAGE( LibXslt ) MACRO_LOG_FEATURE( LIBXSLT_FOUND "LibXSLT" "A library to transform XML into other formats" "http://www.xmlsoft.org/XSLT" TRUE "" "Required for the chat styles system. * Usually the package names for this library are: - on Debian and Ubuntu: 'libxslt' and 'libxslt-dev' + on Debian and Ubuntu: 'libxslt' and 'libxslt1-dev' on openSUSE: 'libxslt' and 'libxslt-devel' * Please refer to the KMess board for more info, and specially to this guide: http://trac.kmess.org/wiki/Compiling%20KMess" ) @@ -63,7 +62,7 @@ IF( NOT GCRYPT_FOUND ) MACRO_LOG_FEATURE( GCRYPT_FOUND "GCrypt" "A library to encrypt messages with various cyphers" "http://www.gnupg.org/" TRUE "" "It is required for the Live Messenger login process. * Usually the package names for this library are: - on Debian and Ubuntu: 'libgcrypt' and 'libgcrypt-dev' + on Debian and Ubuntu: 'libgcrypt' and 'libgcrypt11-dev' on openSUSE: 'libgcrypt' and 'libgcrypt-devel' on Fedora: 'gcrypt' and 'gcrypt-devel' * Please refer to the KMess board for more info, @@ -109,6 +108,18 @@ MACRO_LOG_FEATURE( ISFQT_FOUND "LibISF-Qt" "Library to manage Microsoft's Mobile In absence of an installed isf-qt version, the bundled version will be compiled.") MACRO_BOOL_TO_01( ISFQT_FOUND HAVE_LIBISFQT ) # For config-kmess.h.in +# Check for KNotificationItem. KDE 4.3.1 and later have it integrated in kdelibs/experimental. +# It will be available by default in 4.4. +IF( ${KDE_VERSION} VERSION_LESS 4.3.70 ) # KDE trunk has a higher version number than this. + MACRO_OPTIONAL_FIND_PACKAGE(LibKNotificationItem-1) + MACRO_LOG_FEATURE( LIBKNOTIFICATIONITEM-1_FOUND "LibKNotificationItem-1" "The experimental new KDE systray library" "http://www.kde.org" FALSE "" + "LibKNotificationItem-1 is the experimental new KDE systray library. It will be included + by default in KDE 4.4 and is available for use in KDE 4.3.1 and above." ) + MACRO_BOOL_TO_01( LIBKNOTIFICATIONITEM-1_FOUND HAVE_NEW_TRAY ) +ELSE() + SET( HAVE_NEW_TRAY 1 ) +ENDIF() + # Display the dependency collection results MACRO_DISPLAY_FEATURE_LOG() @@ -138,8 +149,8 @@ INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES} ${LIBXM #### Define the app version number #### # Switch between the following two commands to force using a predefined version number -# EXECUTE_PROCESS( COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/get-svn-version.sh OUTPUT_VARIABLE KMESS_VERSION ) -SET( KMESS_VERSION "2.0.3" ) +# EXECUTE_PROCESS( COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cmake/get-git-version.sh OUTPUT_VARIABLE KMESS_VERSION ) +SET( KMESS_VERSION "2.0.4" ) #### Define compiler flags #### @@ -167,7 +178,7 @@ ENDIF( CMAKE_COMPILER_IS_GNUCXX ) # - relwithdebinfo (release with debug info) # - minsizerel (minsize release) # Uncomment the next line to always force building in full debug mode -SET( CMAKE_BUILD_TYPE debugfull ) +# SET( CMAKE_BUILD_TYPE debugfull ) # Enable the KMess debug output when compiling a debug build IF( CMAKE_BUILD_TYPE STREQUAL debugfull OR KMESS_DEBUG_OUTPUT EQUAL 1 ) diff --git a/ChangeLog b/ChangeLog index c3551a4..27f8c98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,179 @@ +2010-07-25 (Adam) + * Merge fix for ticket #524, thanks to Timo Tambert + +2010-07-24 (Adam) + * Properly handle non-messenger Hotmail contacts that appear on our address book. + They need to be marked as Messenger users once we add them to our contact list. + +2010-07-23 (Adam) + * Add get-git-version.sh script to return the HEAD revision KMess was built with. + Removed get-svn-version.sh accordingly. + * When adding a contact, the contact type should be "Regular" AFAIK. + * Add AddressBookService::removePending to remove a handle from the Pending list. + * AddressBookService::getMembershipListUpdate now calls the correct method when + deleting a membership. + +2010-07-22 (Valerio) + * Fixed the conditions to enable the "Save chat" and "Clear chat" options in the chat view's context menu. + +2010-07-21 (Valerio) + * Fixed contact frame tooltips, there were HTML entities exposed. + +2010-07-20 (Pano) + * Merged an updated Traditional Chinese translation by Yen-chou Chen. + +2010-07-17 (Adam) + * Improve the handling of contacts that are on the address book and + the pending list at the same time (shouldn't happen, but it does). + * If a user is already on the friend list, don't allow the "add" option + to be chosen in ContactAddedUserDialog. + * Index all contacts by lower case handle to avoid any casing issues on retrieval. + +2010-07-17 (Adam) + * Attempt to solve some of the memory issues on KDE 4.5. + +2010-07-12 (Adam) + * Fix contact list background issues on KDE 4.5 + +2010-07-10 (Pano) + * Merged an updated Japanese translation by Daniel E. Moctezuma. + * Merged an updated Brazilian Portuguese translation by Morris Arozi Moraes. + +2010-07-06 (Pano) + * Merged an updated French translation by Grégory Bellier. + * Merged an updated German translation. + +2010-07-06 (Valerio) + * Fixed sending messages only containing whitespace. + +2010-07-05 (Valerio) + * Fixed pressing Enter to send a drawing worked even when nothing was in the drawing. + +2010-07-04 (Valerio) + * Fixed the ability to drag'n'drop into the message editor a received Ink drawing, and an issue with + the Ink editor button when doing so. + +2010-06-27 (Pano) + * Merged an updated Traditional Chinese translation by the Tryneeds-Chinese Translation Platform. + +2010-06-27 (Valerio) + * Made immutable the display picture size in the contacts dock, to avoid weird picture resizes. + * Made the chat history box to respect the "Show the emails of contacts instead of the friendly name" option. + * Merged patch by dah_, changing the contact list to be sorted by status, then alphabetically. + +2010-06-27 (Adam) + * Add a check to ABService to prevent it recognising memberships for + non-passport members. Otherwise when we try to manipulate the memberships + for non-passport members we'll get errors since we're not handling them + correctly. + * Only pop up the "Contact Added User" dialog if a user is on the Pending list. + * Fix comments in kmess.notifyrc + +2010-06-26 (Valerio) + * Fixed wrong URL when retrieving a display picture from the server. + * Changed X11 libraries inclusion to fix building KMess from Fedora 13. + +2010-06-24 (Pano) + * Merged an updated Dutch translation by Heimen Stoffels. + +2010-06-20 (Adam) + * Fix a i18n bug in the system tray code. + +2010-06-19 (Valerio) + * Added support for a new ISF-Qt feature, PNG fortification. This allows users + to drag and drop their and their contacts' drawings into the message editor + to be edited. + +2010-06-19 (Adam) + * Backported the new KDE4 system tray spec. Remains optional for people who + are using KDE < 4.3. + +2010-06-13 (Sjors) + * Workarounded a documented limitation in KDE4_ADD_APP_ICON() to show the + KMess icon correctly. + +2010-06-13 (Pano) + * Merged an updated Japanese translation by Daniel E. Moctezuma. + +2010-06-07 (Sjors) (noknotify branch) + * Fixed a crash because QSystemTrayIcon was constructed statically before + main(). + * Taught MacNotification class how to play sounds. + * Made MacNotification class take some predefined actions on receiving + certain events. + +2010-06-03 (Sjors) (noknotify branch) + * Added MacNotification class, which currently makes the KMess icon in the + Dock 'jump' when its method is called. + * Made the NotificationManager use MacNotification instead when doing + notifications on the Mac. + * Added support to MacNotification class to display Growl messages through + QSystemTrayIcon. + * Added support to MacNotification for stripping HTML off messages, so they + display correctly in Growl. + +2010-05-31 (Adam) + * Fix bug in chatwindow.ui: use the global include for IsfInkCanvas. + +2010-05-29 (Pano) +* Merged an updated Japanese translation by Daniel E. Moctezuma. + +2010-05-25 (Pano) + * Merged an updated Catalan translation by Adrià Arrufat. + +2010-05-13 (Valerio) + * Fixed bug which made login to fail when the roaming service gives us a changed display + picture before setting the initial status. + +2010-05-08 (Pano) + * Merged an updated Dutch translation by Heimen Stoffels. + +2010-05-08 (sifcenter) + * Fixed bug on show listening music when the user is busy (maybe also with other states): the bit operation doesn't work + if the flags (STATUS_*) have more "1" bits set. + +2010-05-03 (Pano) + * Merged an updated Japanese translation by Daniel E. Moctezuma. + +2010-04-25 (Pano) + * Merged an updated Japanese translation by Daniel E. Moctezuma. + +2010-04-15 (Pano) + * Merged an updated German translation. + +2010-04-02 (Pano) + * Merged an updated Dutch translation by Heimen Stoffels. + +2010-04-01 (Pano) + * Merged an updated Japanese translation by Daniel E. Moctezuma. + +2010-03-30 (Adam) + * Add Francesco Nwokeka to the credits dialog for the Now Playing toggle button. + * Workaround a Qt 4.6.1/4.6.2 bug which was causing multiple copies of a single DP to appear in the "set previous + display picture" dialog and the contact properties dialog. + +2010-03-28 (Adam) + * Bug fix on MPRIS querying - the Identity method is located on the root interface, not the /Player interface. + * Reduce the number of debug messages coming out of NowListeningClient. Emits a debug message only when the song changes. + * Remove "contact does not have you on their contact list" text from the tool tips. + +2010-03-27 (Adam) + * Merge a modified patch by z3r0 from the boards; adds a toggle button for "now listening" to the contact list. + * Display the currently playing song above the CL even while appearing offline. + * Make the size of the CL DP depend on whether or not music is playing. + * Adjust font size of now listening label to match personal message. + +2010-03-17 (Adam) + * Fix bug where account properties were not properly updated in some cases. + * Fix bug where "Log in Automatically" was not obeyed and saved if it was unchecked after being enabled. + * When removing a contact that is already blocked, do not add them to the allow list. + +2010-03-16 (Pano) + * Added a Galician translation by Indalecio Freiría Santos. + +2010-03-13 (Adam) + * Fix bug where the status was set to "Idle" upon waking up from sleep. + * Fix bug where IDL status was kept after disconnection. --- 2.0.3 released --- diff --git a/Doxyfile b/Doxyfile index 7962fa2..963b92f 100644 --- a/Doxyfile +++ b/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = KMess -PROJECT_NUMBER = 2.0.3 +PROJECT_NUMBER = 2.0.4 OUTPUT_DIRECTORY = ./apidocs CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English diff --git a/FEATURES b/FEATURES index 8e9c64b..ed81280 100644 --- a/FEATURES +++ b/FEATURES @@ -1,5 +1,11 @@ KMess Feature list ======================== +- 2.0.4 - +New system tray icon when KMess is loaded onto KDE 4.4+. +Improved support for notifications on Mac. +Added a button on the contact list for quick "now listening" toggling. +Ability to drag and drop drawings into the editor to re-send them. + - 2.0.3 - Setting your friendly name and personal message by clicking on their labels in the contact list. A display of the unread email count in the system tray tooltip. diff --git a/NEWS b/NEWS index 20569a8..09db855 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,43 @@ +Changes between KMess 2.0.4 and 2.0.3: +-------------------------------------- +- added ability to drag and drop drawings into the message editor to be re-sent. +- added support for the new KDE 4.4+ system tray icon. +- added a toggle button for "now listening" to the contact list. +- added displaying the currently playing song above the contact list, even while appearing offline. +- added Galician translation by Indalecio Freiría Santos. +- removed the "contact does not have you on their contact list" text from the tool tips, + as this feature is currently broken (the servers report incorrect data). +- fixed "contact added you" dialogs from appearing when they should not. +- fixed sending messages only containing whitespace. +- fixed pressing Enter to send a drawing worked even when nothing was in the drawing. +- fixed the ability to drag'n'drop into the message editor a received Ink drawing. +- fixed dimensions of the display picture in the contacts dock. +- fixed chat history box, now it respects the "Show contacts emails instead of friendly names" option. +- fixed ignoring non-messenger contacts, who are not supported by KMess 2.0.x . +- fixed retrieving display pictures from the server. +- fixed building KMess from Fedora 13. +- fixed compatibility with KDE 4.5 . +- fixed error at login when the user had a new display picture to download. +- fixed multiple copies of a single DP were appearing in the "set previous + display picture" dialog and the contact properties dialog. +- fixed bug in Now Listening when querying MPRIS-compatible media players. +- fixed account properties updating in some cases. +- fixed "Log in Automatically" option saving in some cases. +- fixed bug where the status was set to "Idle" upon waking up from sleep or disconnection. +- fixed the application icon under Windows and Mac. +- improved the contact list to be sorted by status, then alphabetically. +- improved notifications support on Mac. +- updated Traditional Chinese translation by Yen-chou Chen and the Tryneeds-Chinese Translation Platform. +- updated Japanese translation by Daniel E. Moctezuma. +- updated Brazilian Portuguese translation by Morris Arozi Moraes. +- updated French translation by Grégory Bellier. +- updated German translation. +- updated Dutch translation by Heimen Stoffels. +- updated Dutch translation by Heimen Stoffels. +- updated Japanese translation by Daniel E. Moctezuma. +- updated Catalan translation by Adrià Arrufat. + Changes between KMess 2.0.3 and 2.0.2: -------------------------------------- - added ability to drag-and-drop images into display picture frames. diff --git a/cmake/config-kmess.h.in b/cmake/config-kmess.h.in index 3745061..15d9d1c 100644 --- a/cmake/config-kmess.h.in +++ b/cmake/config-kmess.h.in @@ -22,3 +22,6 @@ /* Define whether Ink support is enabled */ #define KMESS_ENABLE_INK ${HAVE_LIBISFQT} + +/* Define whether we have the new system tray */ +#cmakedefine HAVE_NEW_TRAY \ No newline at end of file diff --git a/cmake/get-git-version.sh b/cmake/get-git-version.sh new file mode 100755 index 0000000..f9d7eff --- /dev/null +++ b/cmake/get-git-version.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +cd `dirname $0`/.. + +# second sed expression fixes Mac OS X 10.4 +appver="`egrep 'SET.*KMESS_VERSION' CMakeLists.txt | sed -e 's/.*"\([^"]*\)".*/\1/'`" +date="`date +%Y%m%d`" + +# Make sure we have the right repository +if [ ! -f kmess.kdevelop ]; then + /bin/echo -n "git (unknown)" + exit +fi + +# display app version if git isn't installed. +if [ ! -x `which git` ]; then + /bin/echo -n "$appver" + exit +fi + +# Display subversion version if this is a working copy +gitver=`git rev-parse HEAD` + +# display last 8 digits of HEAD SHA-1 + date +/bin/echo -n "$appver-git (${gitver:0:8} >= $date)" diff --git a/cmake/get-svn-version.sh b/cmake/get-svn-version.sh deleted file mode 100755 index 68cbbac..0000000 --- a/cmake/get-svn-version.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -cd `dirname $0`/.. - -# second sed expression fixes Mac OS X 10.4 -appver="`egrep 'SET.*KMESS_VERSION' CMakeLists.txt | sed -e 's/.*"\([^"]*\)".*/\1/'`" -date="`date +%Y%m%d`" - -# Make sure we have the right repository -if [ ! -f kmess.kdevelop ]; then - /bin/echo -n "svn (unknown)" - exit -fi - -# Display normal version if subversion is not installed -if [ ! -x `which svnversion 2>/dev/null` ]; then - /bin/echo -n "$appver" - exit -fi - -# Display subversion version if this is a working copy -svnver=`LANG=C svnversion` - -# see if this is not a repository. -if [ "$svnver" = "exported" ]; then - if [ -z "$KMESS_VER" ]; then - /bin/echo -n "$appver"; - else - /bin/echo -n "$KMESS_VER"; - fi - exit; -fi - -# display subversion version and date -/bin/echo -n "$appver-svn (`svnversion` >= $date)" diff --git a/configure b/configure index 52f4049..275ceb9 100755 --- a/configure +++ b/configure @@ -54,7 +54,7 @@ DEBUG=0 # Globals cd `dirname $0` SRC_DIR="$PWD" -KMESS_VER="`./cmake/get-svn-version.sh`" +KMESS_VER="`./cmake/get-git-version.sh`" diff --git a/contrib/isf-qt/.gitignore b/contrib/isf-qt/.gitignore new file mode 100644 index 0000000..90deaf9 --- /dev/null +++ b/contrib/isf-qt/.gitignore @@ -0,0 +1,6 @@ + +# Build files and dirs +build* + +# KDevelop and other IDE-specific project files +*.kdev* diff --git a/contrib/isf-qt/CMakeLists.txt b/contrib/isf-qt/CMakeLists.txt index 2803ebc..9a5a230 100644 --- a/contrib/isf-qt/CMakeLists.txt +++ b/contrib/isf-qt/CMakeLists.txt @@ -4,27 +4,42 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.6 ) #### Main switches #### -# Define the default build type -# Possible values: -# - none -# - release -# - debug -# - debugfull (even fewer optimisations) -# - relwithdebinfo (release with debug info) -# - minsizerel (minimum size release) -# Uncomment the next line to force building in full debug mode -SET( CMAKE_BUILD_TYPE debugfull ) +# Bundled mode: you can add Isf-Qt as a subdirectory +# of your CMake-based prjoect easily. Just use: +# SET( USE_BUNDLED_LIBRARIES ISFQT ) +# and Isf-Qt will be built and statically linked in your +# application, without installing anything +IF( ISFQT_IS_BUNDLED OR USE_BUNDLED_LIBRARIES MATCHES "ISFQT" ) + SET( ISFQT_IS_BUNDLED TRUE ) + MESSAGE( "-- Will build Isf-Qt in bundled mode." ) +ELSE() + SET( ISFQT_IS_BUNDLED FALSE ) +ENDIF() + +# Only set the build type if we're not being bundled: if we are, we'll +# use the build type specified by the parent project +IF( NOT ISFQT_IS_BUNDLED ) + + # Define the default build type + # Possible values: + # - none + # - release + # - debug + # - debugfull (even fewer optimisations) + # - relwithdebinfo (release with debug info) + # - minsizerel (minimum size release) + # Uncomment the next line to force building in full debug mode + SET( CMAKE_BUILD_TYPE debugfull ) +ENDIF() # Define the library version number -SET( ISFQT_VERSION "0.9" ) +SET( ISFQT_VERSION "1.0dev" ) #### Inclusions #### FIND_PACKAGE( Qt4 REQUIRED ) -ENABLE_TESTING() - OPTION( WANT_GIF "Enable support for reading and writing Fortified-GIF images" ON ) IF( WANT_GIF ) MESSAGE( "-- Looking for GifLib" ) @@ -68,13 +83,27 @@ IF( CMAKE_COMPILER_IS_GNUCXX ) "-O0 -g3 -fno-inline -Wall -Woverloaded-virtual -Wsign-compare -Wundef -fvisibility=default" ) ENDIF( CMAKE_COMPILER_IS_GNUCXX ) +IF( NOT ISFQT_DEBUG_OUTPUT STREQUAL "1" AND NOT ISFQT_DEBUG_OUTPUT STREQUAL "0" ) + IF( CMAKE_BUILD_TYPE MATCHES debug ) + SET( ISFQT_DEBUG_OUTPUT 1 ) + ELSE() + SET( ISFQT_DEBUG_OUTPUT 0 ) + ENDIF() +ENDIF() + + + INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} src include ) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/isfqtconfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/isfqtconfig.h ) ADD_SUBDIRECTORY( src ) -ADD_SUBDIRECTORY( tests ) + +IF( NOT ISFQT_IS_BUNDLED ) + ENABLE_TESTING() + ADD_SUBDIRECTORY( tests ) +ENDIF() #### Project CMake configuration files creation #### @@ -87,16 +116,17 @@ SET( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" SET( SHARED_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE STRING "Directory where the shared data will be installed" ) -# Prepare the IsfQtConfig.cmake file, which allows other projects to find us +# Prepare thej IsfQtConfig.cmake file, which allows other projects to find us CONFIGURE_FILE( cmake/IsfQtConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/IsfQtConfig.cmake" @ONLY ) #### Installation #### -# Do not install the resources if we're bundling it in KMess -IF( NOT USE_BUNDLED_LIBRARIES MATCHES "ISFQT" ) +# Do not install the resources if we're bundling it into an application +IF( NOT ISFQT_IS_BUNDLED ) INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/IsfQtConfig.cmake DESTINATION ${LIB_INSTALL_DIR}/isfqt ) INSTALL( FILES cmake/FindIsfQt.cmake DESTINATION ${CMAKE_ROOT}/Modules ) ENDIF() + diff --git a/contrib/isf-qt/ChangeLog b/contrib/isf-qt/ChangeLog index 1c5820f..bd25fd3 100644 --- a/contrib/isf-qt/ChangeLog +++ b/contrib/isf-qt/ChangeLog @@ -1,3 +1,35 @@ +2010-07-23 (Valerio) + * Fixed the copy constructor in Stroke, it was not copying all the necessary properties. + * Fixed some compiler warnings. + * Improved bundled compilation mode. + +2010-07-22 (Valerio) + * Improved the InkEdit text - added a checkbox to show the usage of Canvas::isEmpty() and a label + to show usage of the Canvas::inkChanged() signal. + * Fixed inkChanged() signal emission in Canvas: it was emitted too early, when the drawing was not + updated yet: slots connected to inkChanged() could then call isEmpty() and get a true return value, + even if the drawing wasn't empty. + +2010-06-27 (Adam) + * Use Q_ASSERT_X instead of qWarning where appropriate. + +2010-06-19 (Valerio) + * Changed the default behavior of InkCanvas::pixmap(), now paints on a transparent + background, instead of a white one. + +2010-06-19 (Valerio) + * Added support for PNG fortification. Like GIF fortification, this feature allows to + write a PNG containing the full ISF drawing inside itself. Of course, it's now also + possible to read a PNG containing ISF data and retrieve the actual drawing. + +2010-03-20 (Adam) + * Slight optimisation to painting - we no longer draw the background color, Qt does it for us. + Also, only render the parts of the buffer that have changed. + +2010-03-13 (Adam) + * Add a bezier curve smoothing algorithm. Strokes with the FitToCurve flag set are + rendered with an approximate bezier curve. Gives much smoother looking strokes. + 2010-02-21 (Adam) * Optimise the painting of strokes. Cache logic added to IsfQtDrawing and only strokes that have been added are painted. Also, no longer do a full bounding rect diff --git a/contrib/isf-qt/README b/contrib/isf-qt/README index 1ba3a43..83db1c6 100644 --- a/contrib/isf-qt/README +++ b/contrib/isf-qt/README @@ -5,9 +5,16 @@ About LibISF-Qt: LibISF-Qt is a Qt4 library made to encode and decode Microsoft's Ink Serialized Format (ISF) files. -Q. What the hell is this? -A. It's a library, written in C++/Qt4, to read and write ISF - image files. +Q. What is ISF? +A. Ink Serialized Format is an open specification initially + made by Microsoft, and then freed up with their "Open + Specification Promise" initiative. ISF is a file format + made to store handwriting very efficiently: an ISF file + with a somewhat complex handwritten drawing takes less than + 1000 bytes. ISF supports metrics to adapt drawings to + different form factors, bezier smoothing of drawn strokes, + coloring, stroke size varying by pen pressure, linking + in static data, and more. Q. How does this library differ from aMSN's or Emesene's? A. It's written with Qt, which makes it easily portable on @@ -42,6 +49,16 @@ If everything went right again, install it: $ make install Aaand now you're set. :) +LibISF-Qt natively supports being bundled into other applications. +Bundling means that the library does not get installed system-wide +along with your application, but instead it gets statically linked +into the application. +The idea is that you copy the Isf-Qt source tree (with an SVN export +or a Git submodule) into your project's tree, and then set up your +CMake listfile to add this library as a subdirectory: +> SET( ISFQT_IS_BUNDLED TRUE ) +> ADD_SUBDIRECTORY( contrib/isf-qt ) +And again, you're done! Documentation: diff --git a/contrib/isf-qt/TODO b/contrib/isf-qt/TODO index 1abb764..b67c58d 100644 --- a/contrib/isf-qt/TODO +++ b/contrib/isf-qt/TODO @@ -14,7 +14,7 @@ OUTSTANDING - Read and write user-defined custom tags - Interpret, use and write pressure information - Associating text recognized by OCR to the drawn strokes -- Modify strokes +- Alter stroke points DONE ---- @@ -38,4 +38,5 @@ DONE - Add new strokes to an IsfDrawing - Stroke attributes: width, colour, pressure - Export IsfDrawing to raw-isf, isf-base64 and fortified-gif +- Export IsfDrawing to PNG - Delete strokes diff --git a/contrib/isf-qt/cmake/isfqtconfig.h.in b/contrib/isf-qt/cmake/isfqtconfig.h.in index 85b1989..30514c2 100644 --- a/contrib/isf-qt/cmake/isfqtconfig.h.in +++ b/contrib/isf-qt/cmake/isfqtconfig.h.in @@ -8,7 +8,9 @@ #define ISFQT_VERSION "${ISFQT_VERSION}" // Define if debug output should be enabled -#define ISFQT_DEBUG ${ISFQT_DEBUG_OUTPUT} +#if ${ISFQT_DEBUG_OUTPUT} + #define ISFQT_DEBUG +#endif // Define if fortified-GIF support is enabled #define ISFQT_GIF_ENABLED ${GIF_ENABLED} diff --git a/contrib/isf-qt/include/IsfQtStroke b/contrib/isf-qt/include/IsfQtStroke new file mode 100644 index 0000000..df27abc --- /dev/null +++ b/contrib/isf-qt/include/IsfQtStroke @@ -0,0 +1 @@ +#include "isfqtstroke.h" diff --git a/contrib/isf-qt/include/isfinkcanvas.h b/contrib/isf-qt/include/isfinkcanvas.h index c81e6a0..eb79938 100644 --- a/contrib/isf-qt/include/isfinkcanvas.h +++ b/contrib/isf-qt/include/isfinkcanvas.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -42,7 +40,7 @@ namespace Isf * @class InkCanvas * @brief This is a control designed for the drawing and display of Ink. * - * InkCanvas is used for drawing and displaying Ink. The currently displayed Ink drawing can be retrieved + * InkCanvas is used for drawing and displaying Ink. The currently displayed Ink drawing can be retrieved * or set using the drawing() and setDrawing() methods. * * To set the properties of the current pen, use the setPenColor(), setPenSize() and setPenType() methods. @@ -51,7 +49,7 @@ namespace Isf * Example: * * \code - * InkCanvas *canvas = new Isf::InkCanvas( this ); + * InkCanvas* canvas = new Isf::InkCanvas( this ); * canvas->setPenColor( Qt::blue ); * canvas->setPenSize( 10 ); * @@ -62,7 +60,7 @@ namespace Isf * // now an eraser will be used and strokes can be erased individually. * \endcode * - * To return the currently displayed Ink as a QImage, use image(). To return the raw ISF data, suitable + * To return the currently displayed Ink as a QImage, use image(). To return the raw ISF data, suitable * for saving to disk or sending over a network, use bytes(). * * To write the ISF data directly to a QIODevice, such as a file, use the save() method. @@ -94,37 +92,37 @@ namespace Isf }; public: // public constructors - InkCanvas( QWidget *parent = 0 ); - ~InkCanvas(); + InkCanvas( QWidget* = 0 ); + ~InkCanvas(); public: // public methods QByteArray bytes(); - Isf::Drawing *drawing(); + Isf::Drawing* drawing(); QImage image(); bool isEmpty(); QColor penColor(); int penSize(); PenType penType(); - void save( QIODevice &device, bool base64 = false ); - void setDrawing( Isf::Drawing *drawing ); + void save( QIODevice&, bool = false ); + void setDrawing( Isf::Drawing* ); virtual QSize sizeHint() const; public slots: void clear(); - void setCanvasColor( QColor newColor ); - void setPenColor( QColor newColor ); - void setPenSize( int pixels ); - void setPenType( PenType type ); + void setCanvasColor( QColor ); + void setPenColor( QColor ); + void setPenSize( int ); + void setPenType( PenType ); protected: // protected methods - void mousePressEvent( QMouseEvent *event ); - void mouseMoveEvent( QMouseEvent *event ); - void mouseReleaseEvent( QMouseEvent *event ); - void paintEvent( QPaintEvent *event ); - void resizeEvent( QResizeEvent *event ); + void mousePressEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); + void paintEvent( QPaintEvent* ); + void resizeEvent( QResizeEvent* ); private: // private methods - void drawLineTo( const QPoint &endPoint ); + void drawLineTo( const QPoint& ); void clearBuffer(); void updateCursor(); @@ -140,7 +138,7 @@ namespace Isf /// It's true if the erase brush was selected bool erasingImage_; /// Current drawing being manipulated - Isf::Drawing *drawing_; + Isf::Drawing* drawing_; /// Initial drawing, can be overridden with drawing_ Isf::Drawing initialDrawing_; /// Last point where the mouse pointer was released @@ -152,7 +150,7 @@ namespace Isf /// Pen type PenType penType_; /// The current stroke being drawn - Isf::Stroke *currentStroke_; + Isf::Stroke* currentStroke_; /// The pixmap buffer where in progress strokes are drawn QPixmap bufferPixmap_; /// Cache pixmap so the Ink isn't redrawn on every mouse move @@ -161,7 +159,7 @@ namespace Isf bool drawingDirty_; signals: - /// Emitted when the ink representation is modified (stroke drawn, + /// Emitted when the ink representation is modified (stroke drawn, /// stroke deleted, current drawing changed). void inkChanged(); }; diff --git a/contrib/isf-qt/include/isfqt.h b/contrib/isf-qt/include/isfqt.h index 59a7d44..3760f62 100644 --- a/contrib/isf-qt/include/isfqt.h +++ b/contrib/isf-qt/include/isfqt.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -41,6 +39,7 @@ namespace Isf { // Forward declarations class Drawing; + class StreamData; @@ -137,8 +136,8 @@ namespace Isf , IsHighlighter = 0x0100 ///< This stroke is an highlighter stroke , IsRectangle = 0x0200 ///< Meaning unknown }; - Q_DECLARE_FLAGS( StrokeFlags, StrokeFlag ) - Q_DECLARE_OPERATORS_FOR_FLAGS( StrokeFlags ) + Q_DECLARE_FLAGS( StrokeFlags, StrokeFlag ); + Q_DECLARE_OPERATORS_FOR_FLAGS( StrokeFlags ); @@ -183,6 +182,14 @@ namespace Isf , resolution( vResolution ) { } + /// Quick comparison operator + bool operator ==( const Metric& other ) + { + return min == other.min + && max == other.max + && units == other.units + && resolution == other.resolution; + } /// Minimum value qint64 min; @@ -232,52 +239,6 @@ namespace Isf - /** - * Drawing attributes for points. - */ - struct AttributeSet - { - /// Constructor - AttributeSet() - : color( Qt::black ) - , flags( 0x10 ) // Meaning unknown - , penSize( 8.f, 8.f ) // Default pen is 8.0 pixels wide - { - } - - /// The stroke color, optionally with alpha channel - QColor color; - /// Mask of StrokeFlags, @see StrokeFlags - StrokeFlags flags; - /// Dimensions of the pencil in pixels - QSizeF penSize; - }; - - - - /** - * Drawing attributes for strokes. - */ - struct StrokeInfo - { - /// Constructor - StrokeInfo() - : hasPressureData( false ) - , hasXData( true ) - , hasYData( true ) - { - } - - /// Whether the stroke contains pressure info or not - bool hasPressureData; - /// Whether the stroke contains X coordinates or not - bool hasXData; - /// Whether the stroke contains Y coordinates or not - bool hasYData; - }; - - - /** * A single point within a stroke. */ @@ -290,17 +251,23 @@ namespace Isf { } /// Constructor with point only - Point( const QPoint &point ) + Point( const QPoint& point ) : position( point ) , pressureLevel( 0 ) { } /// Constructor with point and pressure - Point( const QPoint &point, const qint64 pressure ) + Point( const QPoint& point, const qint64 pressure ) : position( point ) , pressureLevel( pressure ) { } + /// Quick comparison operator + bool operator ==( const Point& other ) + { + return position == other.position + && pressureLevel == other.pressureLevel; + } /// coordinates QPoint position; @@ -311,32 +278,9 @@ namespace Isf /** - * A pen stroke. + * A list of Point items. */ - struct Stroke - { - /// Constructor - Stroke() - : attributes( 0 ) - , info( 0 ) - , metrics( 0 ) - , transform( 0 ) - { - } - - /// Bounding rectangle of this stroke - QRect boundingRect; - /// Link to the attributes of this stroke's points, if any - AttributeSet *attributes; - /// Link to this stroke's attributes, if any - StrokeInfo *info; - /// Link to this stroke's metrics, if any - Metrics *metrics; - /// List of points - QList points; - /// Link to this stroke's transformation, if any - QMatrix *transform; - }; + typedef QList PointList; @@ -359,12 +303,16 @@ namespace Isf public: // Public static methods - static Drawing &reader( const QByteArray &isfData, bool decodeFromBase64 = false ); - static Drawing &readerGif( const QByteArray &gifRawBytes, bool decodeFromBase64 = false ); + static Drawing &reader( const QByteArray&, bool = false ); + static Drawing &readerGif( const QByteArray&, bool = false ); + static Drawing &readerPng( const QByteArray&, bool = false ); static bool supportsGif(); - static QByteArray writer( const Drawing &drawing, bool encodeToBase64 = false ); - static QByteArray writerGif( const Drawing &drawing, bool encodeToBase64 = false ); + static QByteArray writer( const Drawing&, bool = false ); + static QByteArray writerGif( const Drawing&, bool = false ); + static QByteArray writerPng( const Drawing&, bool = false ); + private: // Private static properties + static StreamData* streamData_; }; } diff --git a/contrib/isf-qt/include/isfqtdrawing.h b/contrib/isf-qt/include/isfqtdrawing.h index d67ed6f..dce9936 100644 --- a/contrib/isf-qt/include/isfqtdrawing.h +++ b/contrib/isf-qt/include/isfqtdrawing.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -27,6 +25,7 @@ #define ISFQTDRAWING_H #include +#include #include #include @@ -38,6 +37,8 @@ // Forward declarations class QByteArray; +class AttributeSet; + namespace Isf @@ -65,38 +66,33 @@ namespace Isf public: // public constructors Drawing(); - Drawing( const Drawing &other ); + Drawing( const Drawing& ); ~Drawing(); public: // public state retrieval methods - AttributeSet *attributeSet( quint32 index ); - const QList attributeSets(); - QRect boundingRect(); + QRect boundingRect() const; void clear(); IsfError error() const; + qint32 indexOfStroke( const Stroke* ) const; + bool isEmpty() const; bool isNull() const; - QPixmap pixmap( const QColor backgroundColor = Qt::white ); - QSize size(); - Stroke *stroke( quint32 index ); - Stroke *strokeAtPoint( const QPoint &point ); + QPixmap pixmap( const QColor = Qt::transparent ); + void setBoundingRect( QRect ); + QSize size() const; + Stroke* stroke( quint32 ); + Stroke* strokeAtPoint( const QPoint& ); const QList strokes(); - QMatrix *transform( quint32 index ); - const QList transforms(); public: // public manipulation methods - qint32 addAttributeSet( AttributeSet *newAttributeSet ); - qint32 addStroke( Stroke *newStroke ); - qint32 addTransform( QMatrix *newTransform ); - bool deleteAttributeSet( quint32 index ); - bool deleteStroke( quint32 index ); - bool deleteStroke( Stroke *stroke ) ; - bool deleteTransform( quint32 index ); - bool setCurrentAttributeSet( AttributeSet *attributeSet ); - bool setCurrentTransform( QMatrix *transform ); + qint32 addStroke( Stroke* ); + qint32 addStroke( PointList = PointList() ); + bool deleteStroke( quint32 ); + bool deleteStroke( Stroke* ); + + private: + void updateBoundingRect(); private: // Private properties - /// List of attributes of the points in the drawing - QList attributeSets_; /// Bounding rectangle of the drawing QRect boundingRect_; /// Cached bounding rectangle @@ -107,22 +103,6 @@ namespace Isf QRect canvas_; /// A list of strokes that need to be repainted. QList changedStrokes_; - /// Link to the currently used metric data - Metrics *currentMetrics_; - /// Link to the currently used point info data - AttributeSet *currentAttributeSet_; - /// Link to the currently used stroke info data - StrokeInfo *currentStrokeInfo_; - /// Link to the currently used transformation - QMatrix *currentTransform_; - /// Link to the default metric data - Metrics defaultMetrics_; - /// Link to the default point info data - AttributeSet defaultAttributeSet_; - /// Link to the default stroke info data - StrokeInfo defaultStrokeInfo_; - /// Link to the default transformation - QMatrix defaultTransform_; /// Is the drawing dirty? i.e, requires repainting? bool dirty_; /// Last parsing error (if there is one) @@ -139,16 +119,8 @@ namespace Isf quint64 maxGuid_; /// Maximum thickness of the strokes QSizeF maxPenSize_; - /// List of metrics used in the drawing - QList metrics_; - /// Pixel size of the drawing - QSize size_; - /// List of information about the drawing's strokes - QList strokeInfo_; /// List of strokes composing this drawing QList strokes_; - /// Transformation matrices - QList transforms_; }; diff --git a/contrib/isf-qt/include/isfqtstroke.h b/contrib/isf-qt/include/isfqtstroke.h new file mode 100644 index 0000000..ec64e9c --- /dev/null +++ b/contrib/isf-qt/include/isfqtstroke.h @@ -0,0 +1,117 @@ +/*************************************************************************** + * Copyright (C) 2010 by Valerio Pilo * + * valerio@kmess.org * + * * + * Copyright (C) 2010 by Adam Goossens * + * adam@kmess.org * + * * + * This program 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 program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef ISFQTSTROKE_H +#define ISFQTSTROKE_H + +#include + +#include +#include +#include +#include +#include + + +// Forward declarations +class QPainterPath; + + + +namespace Isf +{ + + + + // Forward declarations + class AttributeSet; + + + + /** + * A pen stroke. + */ + class Stroke + { + public: + Stroke(); + Stroke( const Stroke& ); + ~Stroke(); + + void addPoint( Point ); + void addPoints( PointList ); + QRect boundingRect() const; + QColor color() const; + void finalize(); + StrokeFlags flags() const; + bool hasPressureData() const; + Metrics* metrics(); + QPainterPath painterPath(); + QSizeF penSize() const; + PointList& points(); + void setColor( QColor ); + void setFlag( StrokeFlag, bool = true ); + void setFlags( StrokeFlags ); + void setMetrics( Metrics* ); + void setPenSize( QSizeF ); + void setTransform( QMatrix* ); + QMatrix* transform(); + + private: + void bezierCalculateControlPoints(); + void bezierGetFirstControlPoints( double[], double*, int ); + + private: + /// Bezier data + QList bezierControlPoints1_; + QList bezierControlPoints2_; + QList bezierKnots_; + /// Bounding rectangle of this stroke + QRect boundingRect_; + /// The stroke color, optionally with alpha channel + QColor color_; + /// Whether the stroke data needs to be analyzed or not + bool finalized_; + /// Mask of StrokeFlags, @see StrokeFlags + StrokeFlags flags_; + /// Whether the stroke contains pressure information or not + bool hasPressureData_; + /// Link to this stroke's metrics, if any + Metrics* metrics_; + /// Dimensions of the pencil in pixels + QSizeF penSize_; + /// List of points + PointList points_; + /// Link to this stroke's transformation, if any + QMatrix* transform_; + + + }; + + + +}; // namespace Isf + + + +#endif // ISFQTSTROKE_H diff --git a/contrib/isf-qt/src/CMakeLists.txt b/contrib/isf-qt/src/CMakeLists.txt index bb3bc8b..eed2b4e 100644 --- a/contrib/isf-qt/src/CMakeLists.txt +++ b/contrib/isf-qt/src/CMakeLists.txt @@ -14,15 +14,18 @@ SET( ISFQT_SOURCES tagswriter.cpp isfqt.cpp isfinkcanvas.cpp + isfqtstroke.cpp ) SET( ISFQT_PUBLIC_HEADERS ../include/isfqt.h ../include/isfqtdrawing.h ../include/isfinkcanvas.h - ../include/IsfQt + ../include/isfqtstroke.h ../include/IsfQtDrawing ../include/IsfInkCanvas + ../include/IsfQtStroke + ../include/IsfQt ) SET( ISFQT_LIBS @@ -48,11 +51,11 @@ QT4_ADD_RESOURCES( ISFQT_RCC_SRCS ${ISFQT_RCCS} ) INCLUDE_DIRECTORIES( ${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ) -# Do not install the library if we're bundling it in KMess -IF( NOT USE_BUNDLED_LIBRARIES MATCHES "ISFQT" ) - ADD_LIBRARY( isf-qt SHARED ${ISFQT_SOURCES} ${MOC_SRCS} ${ISFQT_RCC_SRCS} ) -ELSE() +# Do not install the library if we're bundling it into an application +IF( ISFQT_IS_BUNDLED ) ADD_LIBRARY( isf-qt STATIC ${ISFQT_SOURCES} ${MOC_SRCS} ${ISFQT_RCC_SRCS} ) +ELSE() + ADD_LIBRARY( isf-qt SHARED ${ISFQT_SOURCES} ${MOC_SRCS} ${ISFQT_RCC_SRCS} ) ENDIF() TARGET_LINK_LIBRARIES( isf-qt ${ISFQT_LIBS} ) @@ -64,7 +67,7 @@ SET_TARGET_PROPERTIES( isf-qt PROPERTIES #### Installation #### # Do not install the library if we're bundling it in KMess -IF( NOT USE_BUNDLED_LIBRARIES MATCHES "ISFQT" ) +IF( NOT ISFQT_IS_BUNDLED ) INSTALL( TARGETS isf-qt LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" ) INSTALL( FILES ${ISFQT_PUBLIC_HEADERS} diff --git a/contrib/isf-qt/src/data/algorithms/bitpacking.cpp b/contrib/isf-qt/src/data/algorithms/bitpacking.cpp index 3c48e17..f91c266 100644 --- a/contrib/isf-qt/src/data/algorithms/bitpacking.cpp +++ b/contrib/isf-qt/src/data/algorithms/bitpacking.cpp @@ -36,7 +36,7 @@ using namespace Isf::Compress; * @param data Data to analyze * @return Block size */ -quint8 BitPackingAlgorithm::blockSize( const QList &data ) +quint8 BitPackingAlgorithm::blockSize( const QList& data ) { quint8 blockSize = 0; qint64 num; @@ -78,7 +78,7 @@ quint8 BitPackingAlgorithm::blockSize( const QList &data ) * @param source List of values to compress * @return bool */ -bool BitPackingAlgorithm::deflate( QByteArray &encodedData, quint8 blockSize, const QList &source ) +bool BitPackingAlgorithm::deflate( QByteArray& encodedData, quint8 blockSize, const QList& source ) { if( blockSize > 64 ) { @@ -158,7 +158,7 @@ bool BitPackingAlgorithm::deflate( QByteArray &encodedData, quint8 blockSize, co * @param decodedData List where to place decompressed values * @return bool */ -bool BitPackingAlgorithm::inflate( DataSource &source, quint64 length, quint8 blockSize, QList &decodedData ) +bool BitPackingAlgorithm::inflate( DataSource* source, quint64 length, quint8 blockSize, QList& decodedData ) { if( blockSize > 64 ) { @@ -166,7 +166,7 @@ bool BitPackingAlgorithm::inflate( DataSource &source, quint64 length, quint8 bl blockSize = 64; // Fuck it :P } - if( source.atEnd() ) + if( source->atEnd() ) { qWarning() << "Cannot inflate: no more bits available!"; return true; @@ -178,7 +178,7 @@ bool BitPackingAlgorithm::inflate( DataSource &source, quint64 length, quint8 bl while( index++ < length ) { - value = source.getBits( blockSize ); + value = source->getBits( blockSize ); // If the mask matches, the sign bit is set, so ORing value and mask will // set all leftmost bits to 1, making it a real 64bit signed integer diff --git a/contrib/isf-qt/src/data/algorithms/bitpacking.h b/contrib/isf-qt/src/data/algorithms/bitpacking.h index 6235330..b1c28e0 100644 --- a/contrib/isf-qt/src/data/algorithms/bitpacking.h +++ b/contrib/isf-qt/src/data/algorithms/bitpacking.h @@ -32,9 +32,9 @@ namespace Isf namespace BitPackingAlgorithm { - quint8 blockSize( const QList &data ); - bool deflate( QByteArray &encodedData, quint8 blockSize, const QList &source ); - bool inflate( DataSource &source, quint64 length, quint8 blockSize, QList &decodedData ); + quint8 blockSize( const QList& data ); + bool deflate( QByteArray& encodedData, quint8 blockSize, const QList& source ); + bool inflate( DataSource* source, quint64 length, quint8 blockSize, QList& decodedData ); } } diff --git a/contrib/isf-qt/src/data/algorithms/bitpacking_byte.cpp b/contrib/isf-qt/src/data/algorithms/bitpacking_byte.cpp index cbfc244..0abffcd 100644 --- a/contrib/isf-qt/src/data/algorithms/bitpacking_byte.cpp +++ b/contrib/isf-qt/src/data/algorithms/bitpacking_byte.cpp @@ -33,7 +33,7 @@ using namespace Isf::Compress; * @param data Data to analyze * @return Index value */ -quint8 BitPackingByteAlgorithm::index( const QList &data ) +quint8 BitPackingByteAlgorithm::index( const QList& data ) { Q_UNUSED( data ); @@ -78,7 +78,7 @@ quint8 BitPackingByteAlgorithm::index( const QList &data ) * @param source List of values to compress * @return bool */ -bool BitPackingByteAlgorithm::deflate( QByteArray &encodedData, quint8 index, const QList &source ) +bool BitPackingByteAlgorithm::deflate( QByteArray& encodedData, quint8 index, const QList& source ) { Q_UNUSED( encodedData ); Q_UNUSED( index ); @@ -163,7 +163,7 @@ bool BitPackingByteAlgorithm::deflate( QByteArray &encodedData, quint8 index, co * @param decodedData List where to place decompressed values * @return bool */ -bool BitPackingByteAlgorithm::inflate( DataSource &source, quint64 length, quint8 index, QList &decodedData ) +bool BitPackingByteAlgorithm::inflate( DataSource* source, quint64 length, quint8 index, QList& decodedData ) { if( index > 24 ) { @@ -171,7 +171,7 @@ bool BitPackingByteAlgorithm::inflate( DataSource &source, quint64 length, quint index = 24; // Fuck it :P } - if( source.atEnd() ) + if( source->atEnd() ) { qWarning() << "Cannot inflate: no more bits available!"; return true; @@ -185,7 +185,7 @@ bool BitPackingByteAlgorithm::inflate( DataSource &source, quint64 length, quint quint64 pos = 0; while( pos++ < count ) { - quint8 byte = source.getBits( cBits, &ok ); + quint8 byte = source->getBits( cBits, &ok ); if( ! ok ) { diff --git a/contrib/isf-qt/src/data/algorithms/bitpacking_byte.h b/contrib/isf-qt/src/data/algorithms/bitpacking_byte.h index edf8daa..a15bdff 100644 --- a/contrib/isf-qt/src/data/algorithms/bitpacking_byte.h +++ b/contrib/isf-qt/src/data/algorithms/bitpacking_byte.h @@ -32,9 +32,9 @@ namespace Isf namespace BitPackingByteAlgorithm { - quint8 index( const QList &data ); - bool deflate( QByteArray &encodedData, quint8 index, const QList &source ); - bool inflate( DataSource &source, quint64 length, quint8 index, QList &decodedData ); + quint8 index( const QList& data ); + bool deflate( QByteArray& encodedData, quint8 index, const QList& source ); + bool inflate( DataSource* source, quint64 length, quint8 index, QList& decodedData ); } } diff --git a/contrib/isf-qt/src/data/algorithms/deltatransform.cpp b/contrib/isf-qt/src/data/algorithms/deltatransform.cpp index af2565a..2b3effa 100644 --- a/contrib/isf-qt/src/data/algorithms/deltatransform.cpp +++ b/contrib/isf-qt/src/data/algorithms/deltatransform.cpp @@ -31,7 +31,7 @@ using namespace Isf::Compress; * @param data Data to transform - the list will be modified. * @return bool */ -bool Delta::transform( QList &data ) +bool Delta::transform( QList& data ) { qint64 currentDelta = 0; qint64 previousDelta = 0; @@ -57,7 +57,7 @@ bool Delta::transform( QList &data ) * @param data Data to transform - the list will be modified. * @return bool */ -bool Delta::inverseTransform( QList &data ) +bool Delta::inverseTransform( QList& data ) { qint64 currentDelta = 0; qint64 previousDelta = 0; diff --git a/contrib/isf-qt/src/data/algorithms/deltatransform.h b/contrib/isf-qt/src/data/algorithms/deltatransform.h index fcb48a2..aea7308 100644 --- a/contrib/isf-qt/src/data/algorithms/deltatransform.h +++ b/contrib/isf-qt/src/data/algorithms/deltatransform.h @@ -31,8 +31,8 @@ namespace Isf namespace Delta { - bool transform( QList &data ); - bool inverseTransform( QList &data ); + bool transform( QList& data ); + bool inverseTransform( QList& data ); } } diff --git a/contrib/isf-qt/src/data/algorithms/huffman.cpp b/contrib/isf-qt/src/data/algorithms/huffman.cpp index 338709c..c38aa68 100644 --- a/contrib/isf-qt/src/data/algorithms/huffman.cpp +++ b/contrib/isf-qt/src/data/algorithms/huffman.cpp @@ -67,7 +67,7 @@ const int huffmanBases_[HUFFMAN_BASES_NUM][HUFFMAN_BASE_SIZE] = * @param data Data to analyze * @return index value */ -quint8 HuffmanAlgorithm::index( const QList &data ) +quint8 HuffmanAlgorithm::index( const QList& data ) { quint8 index = 0; @@ -88,14 +88,14 @@ quint8 HuffmanAlgorithm::index( const QList &data ) * @param source List of values to compress * @return bool */ -bool HuffmanAlgorithm::deflate( QByteArray &encodedData, quint8 index, const QList &source ) +bool HuffmanAlgorithm::deflate( QByteArray& encodedData, quint8 index, const QList& source ) { DataSource output( encodedData ); output.skipToNextByte(); foreach( quint64 value, source ) { - if( ! deflateValue( output, index, value ) ) + if( ! deflateValue( &output, index, value ) ) { #ifdef ISFQT_DEBUG qDebug() << "Deflating failure for value:" << value; @@ -121,7 +121,7 @@ bool HuffmanAlgorithm::deflate( QByteArray &encodedData, quint8 index, const QLi * @param value Value to compress * @return bool */ -bool HuffmanAlgorithm::deflateValue( DataSource &output, quint8 index, qint64 value ) +bool HuffmanAlgorithm::deflateValue( DataSource* output, quint8 index, qint64 value ) { qint64 temp = value; quint8 requiredBits = 0; @@ -182,8 +182,8 @@ bool HuffmanAlgorithm::deflateValue( DataSource &output, quint8 index, qint64 va } // Add the bits to the data source - output.append( bits ); - output.append( valueBits ); + output->append( bits ); + output->append( valueBits ); return true; } @@ -199,7 +199,7 @@ bool HuffmanAlgorithm::deflateValue( DataSource &output, quint8 index, qint64 va * @param decodedData List where to place decompressed values * @return bool */ -bool HuffmanAlgorithm::inflate( DataSource &source, quint64 length, quint8 index, QList &decodedData ) +bool HuffmanAlgorithm::inflate( DataSource* source, quint64 length, quint8 index, QList& decodedData ) { QVector huffmanBases; QVector bitAmounts( HUFFMAN_BASE_SIZE ); @@ -238,7 +238,7 @@ bool HuffmanAlgorithm::inflate( DataSource &source, quint64 length, quint8 index while( (uint)decodedData.length() < length ) { - bit = source.getBit(); + bit = source->getBit(); if( bit ) { @@ -252,7 +252,7 @@ bool HuffmanAlgorithm::inflate( DataSource &source, quint64 length, quint8 index } else if( count < (uint)bitAmounts.size() ) { - quint64 offset = source.getBits( bitAmounts[ count ] ); + quint64 offset = source->getBits( bitAmounts[ count ] ); bool sign = offset & 0x1; offset /= 2; value = huffmanBases[ count ] + offset; diff --git a/contrib/isf-qt/src/data/algorithms/huffman.h b/contrib/isf-qt/src/data/algorithms/huffman.h index f59cd5b..9fe735c 100644 --- a/contrib/isf-qt/src/data/algorithms/huffman.h +++ b/contrib/isf-qt/src/data/algorithms/huffman.h @@ -32,13 +32,13 @@ namespace Isf namespace HuffmanAlgorithm { - bool deflate( QByteArray &encodedData, quint8 index, const QList &source ); - bool inflate( DataSource &source, quint64 length, quint8 index, QList &decodedData ); - quint8 index( const QList &data ); + bool deflate( QByteArray& encodedData, quint8 index, const QList& source ); + bool inflate( DataSource* source, quint64 length, quint8 index, QList& decodedData ); + quint8 index( const QList& data ); // Internal use methods - bool deflateValue( DataSource &output, quint8 index, qint64 value ); + bool deflateValue( DataSource* output, quint8 index, qint64 value ); } } diff --git a/contrib/isf-qt/src/data/compression.cpp b/contrib/isf-qt/src/data/compression.cpp index 58770a2..8d8d1d7 100644 --- a/contrib/isf-qt/src/data/compression.cpp +++ b/contrib/isf-qt/src/data/compression.cpp @@ -42,9 +42,9 @@ using namespace Isf; * @param decodedData List where to store the decoded values * @return bool */ -bool Compress::inflatePacketData( DataSource &source, quint64 length, QList &decodedData ) +bool Compress::inflatePacketData( DataSource* source, quint64 length, QList& decodedData ) { - if( source.atEnd() ) + if( source->atEnd() ) { #ifdef ISFQT_DEBUG qWarning() << "Source was at end!"; @@ -52,8 +52,8 @@ bool Compress::inflatePacketData( DataSource &source, quint64 length, QListgetByte(); qint16 algorithm = ( byte & AlgorithmMask ); quint8 algorithmData = 0; @@ -68,7 +68,7 @@ bool Compress::inflatePacketData( DataSource &source, quint64 length, QListgetByte(), 16 ) << "hex]"; return false; } // Use the "default compression" algorithm, which is Huffman @@ -137,15 +137,15 @@ bool Compress::inflatePacketData( DataSource &source, quint64 length, QListseekRelative( -1 ); break; } // Discard any partially read bytes - if( ! source.atEnd() ) + if( ! source->atEnd() ) { - source.skipToNextByte(); + source->skipToNextByte(); } return result; @@ -163,7 +163,7 @@ bool Compress::inflatePacketData( DataSource &source, quint64 length, QList &source ) +bool Compress::deflatePacketData( QByteArray& encodedData, const QList& source ) { bool result; @@ -244,9 +244,9 @@ bool Compress::deflatePacketData( QByteArray &encodedData, const QList & * @param decodedData List where to store the decoded values * @return bool */ -bool Compress::inflatePropertyData( DataSource &source, quint64 length, QList &decodedData ) +bool Compress::inflatePropertyData( DataSource* source, quint64 length, QList& decodedData ) { - if( source.atEnd() ) + if( source->atEnd() ) { #ifdef ISFQT_DEBUG qWarning() << "Source was at end!"; @@ -255,7 +255,7 @@ bool Compress::inflatePropertyData( DataSource &source, quint64 length, QListgetByte(); qint16 algorithm = ( byte & AlgorithmMask ); quint8 algorithmData = 0; @@ -270,7 +270,7 @@ bool Compress::inflatePropertyData( DataSource &source, quint64 length, QListgetByte(), 16 ) << "hex]"; return false; } // Use the "best compression" algorithm, which is Huffman @@ -379,15 +379,15 @@ bool Compress::inflatePropertyData( DataSource &source, quint64 length, QListseekRelative( -1 ); break; } // Discard any partially read bytes - if( ! source.atEnd() ) + if( ! source->atEnd() ) { - source.skipToNextByte(); + source->skipToNextByte(); } return result; @@ -406,7 +406,7 @@ bool Compress::inflatePropertyData( DataSource &source, quint64 length, QList &source ) +bool Compress::deflatePropertyData( QByteArray& encodedData, const QList& source ) { Q_UNUSED( encodedData ); Q_UNUSED( source ); diff --git a/contrib/isf-qt/src/data/compression.h b/contrib/isf-qt/src/data/compression.h index 978f12f..7919fc5 100644 --- a/contrib/isf-qt/src/data/compression.h +++ b/contrib/isf-qt/src/data/compression.h @@ -112,11 +112,11 @@ namespace Isf }; - bool inflatePacketData( DataSource &source, quint64 length, QList &decodedData ); - bool deflatePacketData( QByteArray &destination, const QList &decodedData ); + bool inflatePacketData( DataSource* source, quint64 length, QList& decodedData ); + bool deflatePacketData( QByteArray& destination, const QList& decodedData ); - bool inflatePropertyData( DataSource &source, quint64 length, QList &decodedData ); - bool deflatePropertyData( QByteArray &destination, const QList &decodedData ); + bool inflatePropertyData( DataSource* source, quint64 length, QList& decodedData ); + bool deflatePropertyData( QByteArray& destination, const QList& decodedData ); } } diff --git a/contrib/isf-qt/src/data/datasource.cpp b/contrib/isf-qt/src/data/datasource.cpp index dd74643..a2f93b4 100644 --- a/contrib/isf-qt/src/data/datasource.cpp +++ b/contrib/isf-qt/src/data/datasource.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -29,7 +27,7 @@ using namespace Isf; -using namespace Compress; +using namespace Isf::Compress; @@ -51,7 +49,7 @@ DataSource::DataSource() * * @param data Byte array to copy and use as data source */ -DataSource::DataSource( const QByteArray &data ) +DataSource::DataSource( const QByteArray& data ) : currentBitIndex_( 8 ) { buffer_.setData( data ); @@ -109,7 +107,7 @@ void DataSource::append( char byte ) * * @param constBits The list of bits to append */ -void DataSource::append( const QBitArray &constBits ) +void DataSource::append( const QBitArray& constBits ) { if( constBits.size() == 0 ) { @@ -202,7 +200,7 @@ void DataSource::append( const QBitArray &constBits ) * * @param bytes The bytes to append */ -void DataSource::append( const QByteArray &bytes ) +void DataSource::append( const QByteArray& bytes ) { bool wasEmpty = ( buffer_.size() == 0 ); @@ -274,7 +272,7 @@ void DataSource::clear() * * @return byte array */ -const QByteArray &DataSource::data() const +const QByteArray& DataSource::data() const { return buffer_.data(); } @@ -328,7 +326,7 @@ quint8 DataSource::getBitIndex() * @param ok If set, it will contain whether the call was successful or not. * @return bool */ -bool DataSource::getBit( bool *ok ) +bool DataSource::getBit( bool* ok ) { if( currentBitIndex_ >= 8 ) { @@ -367,7 +365,7 @@ bool DataSource::getBit( bool *ok ) * @param ok If set, it will contain whether the call was successful or not. * @return quint64 with the set of read bits */ -quint64 DataSource::getBits( quint8 amount, bool *ok ) +quint64 DataSource::getBits( quint8 amount, bool* ok ) { if( amount > 64 ) { @@ -436,7 +434,7 @@ quint64 DataSource::getBits( quint8 amount, bool *ok ) * @param ok If set, it will contain whether the call was successful or not. * @return char */ -char DataSource::getByte( bool *ok ) +char DataSource::getByte( bool* ok ) { bool gotBitOk; quint8 pos = 0; @@ -480,7 +478,7 @@ char DataSource::getByte( bool *ok ) * @param ok If set, it will contain whether the call was successful or not. * @return byte array of read bytes */ -QByteArray DataSource::getBytes( quint8 amount, bool *ok ) +QByteArray DataSource::getBytes( quint8 amount, bool* ok ) { QByteArray bytes; bool gotByteOk; @@ -600,7 +598,7 @@ void DataSource::prepend( char byte ) * * @param bytes Bytes to add */ -void DataSource::prepend( const QByteArray &bytes ) +void DataSource::prepend( const QByteArray& bytes ) { buffer_.buffer().prepend( bytes ); @@ -663,7 +661,7 @@ void DataSource::seekRelative( int pos ) * * @param data New array to copy and use as the data source */ -void DataSource::setData( const QByteArray &data ) +void DataSource::setData( const QByteArray& data ) { buffer_.close(); buffer_.setData( data ); diff --git a/contrib/isf-qt/src/data/datasource.h b/contrib/isf-qt/src/data/datasource.h index 1c76d30..1e10fce 100644 --- a/contrib/isf-qt/src/data/datasource.h +++ b/contrib/isf-qt/src/data/datasource.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -49,30 +47,30 @@ namespace Isf public: // Public constructors DataSource(); - DataSource( const QByteArray &data ); + DataSource( const QByteArray& data ); ~DataSource(); public: // Public status retrieval methods bool atEnd( bool considerBits = false ) const; - const QByteArray &data() const; + const QByteArray& data() const; qint64 pos() const; qint64 size() const; public: // Public data manipulation methods void append( char byte ); - void append( const QBitArray &bits ); - void append( const QByteArray &bytes ); + void append( const QBitArray& bits ); + void append( const QByteArray& bytes ); void clear(); void flush(); - bool getBit( bool *ok = 0 ); - quint64 getBits( quint8 amount, bool *ok = 0 ); + bool getBit( bool* ok = 0 ); + quint64 getBits( quint8 amount, bool* ok = 0 ); quint8 getBitIndex(); - char getByte( bool *ok = 0 ); - QByteArray getBytes( quint8 amount, bool *ok = 0 ); + char getByte( bool* ok = 0 ); + QByteArray getBytes( quint8 amount, bool* ok = 0 ); void prepend( char byte ); - void prepend( const QByteArray &bytes ); + void prepend( const QByteArray& bytes ); void reset(); - void setData( const QByteArray &data ); + void setData( const QByteArray& data ); void seekRelative( int pos ); void skipToNextByte(); void skipToPrevByte(); diff --git a/contrib/isf-qt/src/data/multibytecoding.cpp b/contrib/isf-qt/src/data/multibytecoding.cpp index 86408b6..ba27789 100644 --- a/contrib/isf-qt/src/data/multibytecoding.cpp +++ b/contrib/isf-qt/src/data/multibytecoding.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -40,7 +38,7 @@ using namespace Isf; * @param source Data Source where to read bytes from * @return quint64 */ -quint64 Compress::decodeUInt( DataSource &source ) +quint64 Compress::decodeUInt( DataSource* source ) { quint8 byte; // Current byte quint8 flag; // Used to find out if there are more bytes to convert @@ -49,7 +47,7 @@ quint64 Compress::decodeUInt( DataSource &source ) do { - byte = source.getByte(); + byte = source->getByte(); flag = byte & 0x80; value |= (byte & 0x7F) << count; count += 7; @@ -67,7 +65,7 @@ quint64 Compress::decodeUInt( DataSource &source ) * @param source Data Source where to read bytes from * @return qint64 */ -qint64 Compress::decodeInt( DataSource &source ) +qint64 Compress::decodeInt( DataSource* source ) { bool isNegative = false; qint64 value = decodeUInt( source ); @@ -98,7 +96,7 @@ qint64 Compress::decodeInt( DataSource &source ) * @param source Data Source where to read bytes from * @return float */ -float Compress::decodeFloat( DataSource &source ) +float Compress::decodeFloat( DataSource* source ) { qint8 index; @@ -113,14 +111,14 @@ float Compress::decodeFloat( DataSource &source ) index = 3; do { - data.bytes[ index-- ] = source.getByte(); + data.bytes[ index-- ] = source->getByte(); } while( index >= 0 ); #else index = 0; do { - data.bytes[ index++ ] = source.getByte(); + data.bytes[ index++ ] = source->getByte(); } while( index <= 3 ); #endif @@ -170,17 +168,17 @@ QByteArray Compress::encodeUInt( quint64 value ) * @param prepend False (default value) to append the encoded value to the existing data * True to prepend the new value to the existing data */ -void Compress::encodeUInt( DataSource &source, quint64 value, bool prepend ) +void Compress::encodeUInt( DataSource* source, quint64 value, bool prepend ) { QByteArray result( encodeUInt( value ) ); if( prepend ) { - source.prepend( result ); + source->prepend( result ); } else { - source.append( result ); + source->append( result ); } } @@ -226,17 +224,17 @@ QByteArray Compress::encodeInt( qint64 value ) * @param prepend False (default value) to append the encoded value to the existing data * True to prepend the new value to the existing data */ -void Compress::encodeInt( DataSource &source, qint64 value, bool prepend ) +void Compress::encodeInt( DataSource* source, qint64 value, bool prepend ) { QByteArray result( encodeInt( value ) ); if( prepend ) { - source.prepend( result ); + source->prepend( result ); } else { - source.append( result ); + source->append( result ); } } @@ -291,17 +289,17 @@ QByteArray Compress::encodeFloat( float value ) * @param prepend False (default value) to append the encoded value to the existing data * True to prepend the new value to the existing data */ -void Compress::encodeFloat( DataSource &source, float value, bool prepend ) +void Compress::encodeFloat( DataSource* source, float value, bool prepend ) { QByteArray result( encodeFloat( value ) ); if( prepend ) { - source.prepend( result ); + source->prepend( result ); } else { - source.append( result ); + source->append( result ); } } diff --git a/contrib/isf-qt/src/data/multibytecoding.h b/contrib/isf-qt/src/data/multibytecoding.h index 56d4229..bfab442 100644 --- a/contrib/isf-qt/src/data/multibytecoding.h +++ b/contrib/isf-qt/src/data/multibytecoding.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -37,18 +35,18 @@ namespace Isf namespace Compress { - quint64 decodeUInt( DataSource &source ); - qint64 decodeInt( DataSource &source ); - float decodeFloat( DataSource &source ); + quint64 decodeUInt( DataSource* source ); + qint64 decodeInt( DataSource* source ); + float decodeFloat( DataSource* source ); QByteArray encodeUInt( quint64 value ); - void encodeUInt( DataSource &source, quint64 value, bool prepend = false ); + void encodeUInt( DataSource* source, quint64 value, bool prepend = false ); QByteArray encodeInt( qint64 value ); - void encodeInt( DataSource &source, qint64 value, bool prepend = false ); + void encodeInt( DataSource* source, qint64 value, bool prepend = false ); QByteArray encodeFloat( float value ); - void encodeFloat( DataSource &source, float value, bool prepend = false ); + void encodeFloat( DataSource* source, float value, bool prepend = false ); quint8 getMultiByteSize( quint64 value ); quint8 getMultiByteSize( qint64 value ); diff --git a/contrib/isf-qt/src/gif-support.h b/contrib/isf-qt/src/gif-support.h index 04d2d93..90640d0 100644 --- a/contrib/isf-qt/src/gif-support.h +++ b/contrib/isf-qt/src/gif-support.h @@ -28,18 +28,18 @@ // Internal helper function to read GIF data from a byte array -int GifReadFromByteArray( GifFileType *gif, GifByteType* bytes, int size ) +int GifReadFromByteArray( GifFileType* gif, GifByteType* bytes, int size ) { - QBuffer *buffer = (QBuffer*) gif->UserData; + QBuffer* buffer = (QBuffer*) gif->UserData; return buffer->read( (char*)bytes, size ); } // Internal helper function to write GIF data into a byte array -int GifWriteToByteArray( GifFileType *gif, const GifByteType* bytes, int size ) +int GifWriteToByteArray( GifFileType* gif, const GifByteType* bytes, int size ) { - QBuffer *buffer = (QBuffer*) gif->UserData; + QBuffer* buffer = (QBuffer*) gif->UserData; return buffer->write( (char*)bytes, size ); } diff --git a/contrib/isf-qt/src/isfinkcanvas.cpp b/contrib/isf-qt/src/isfinkcanvas.cpp index 26715a8..13df213 100644 --- a/contrib/isf-qt/src/isfinkcanvas.cpp +++ b/contrib/isf-qt/src/isfinkcanvas.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -43,7 +41,7 @@ using namespace Isf; * * @param parent The parent widget. */ -InkCanvas:: InkCanvas( QWidget *parent ) +InkCanvas:: InkCanvas( QWidget* parent ) : QWidget( parent ) , erasingImage_( false ) , drawing_( 0 ) @@ -59,6 +57,10 @@ InkCanvas:: InkCanvas( QWidget *parent ) setPenColor( Qt::black ); setPenSize( 4 ); + setAttribute( Qt::WA_StaticContents, true ); // only give us paint events for the parts of us that become visible on resize. + + setAutoFillBackground( true ); + clear(); // prepare the buffer @@ -69,8 +71,6 @@ InkCanvas:: InkCanvas( QWidget *parent ) // start with a drawing pen by default. setPenType( DrawingPen ); - - setAttribute( Qt::WA_StaticContents ); } @@ -90,62 +90,13 @@ InkCanvas::~InkCanvas() /** - * Creates a QCursor displayed when the mouse pointer moves over the widget. + * Returns the drawing's ISF representation. * - * The cursor becomes a point, drawn with the current stroke colour and pen size. + * @return A QByteArray filled with ISF data. */ -void InkCanvas::updateCursor() +QByteArray InkCanvas::bytes() { - if ( cursorPixmap_.isNull() ) - { - cursorPixmap_ = QPixmap( QSize( 32, 32 ) ); - } - - if ( penType_ == EraserPen ) - { - cursorPixmap_ = QPixmap( ":pics/draw-eraser.png" ); - cursor_ = QCursor( cursorPixmap_, 0, cursorPixmap_.height() ); - } - else - { - cursorPixmap_.fill( Qt::transparent ); - - QPainter painter( &cursorPixmap_ ); - - painter.setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform, true ); - painter.setPen( QPen( color_, penSize_, Qt::SolidLine, Qt::RoundCap, - Qt::RoundJoin ) ); - - // now draw a point. - painter.drawPoint( QPoint( cursorPixmap_.size().width() / 2, cursorPixmap_.size().height() / 2 ) ); - - cursor_ = QCursor( cursorPixmap_ ); - } - - // create our cursor. - setCursor( cursor_ ); -} - - - -/** - * Return the suggested size for the canvas. - * - * The actual size hint will depend on the size of the drawing on the canvas. By default, - * the size hint is 300x300 pixels. - */ -QSize InkCanvas::sizeHint() const -{ - if ( drawing_->isNull() ) - { - return QSize( 300, 300 ); - } - else - { - QRect boundingRect = drawing_->boundingRect(); - boundingRect.setTopLeft( QPoint( 0, 0 ) ); - return boundingRect.size(); - } + return Isf::Stream::writer( *drawing_ ); } @@ -174,58 +125,47 @@ void InkCanvas::clear() /** - * Change the color of the pen used to draw on the Ink canvas. + * Clear the internal pixmap buffer. * - * @param newColor The new color for the pen. + * The buffer used to quickly render on the widget painting area + * the new and old strokes: every new stroke is saved here. + * This allows to avoid repainting all strokes at every paint event. */ -void InkCanvas::setPenColor( QColor newColor ) +void InkCanvas::clearBuffer() { -#ifdef ISFQT_DEBUG - qDebug() << "Setting new pen color:" << newColor.name(); -#endif - - color_ = newColor; - - updateCursor(); + bufferPixmap_ = QPixmap( size() ); + bufferPixmap_.fill( Qt::transparent ); } /** - * Change the size of the pen. This value is in pixels. + * Retrieve the Isf::Drawing instance that the canvas is currently manipulating. * - * @param pixels The size of the pen, in pixels + * Beware: if you have not set your own Isf::Drawing instance via setDrawing(), you must not delete + * the object that this method returns. In this case this method returns a pointer to an internal + * Isf::Drawing instance that must not be deleted. If you have previously used setDrawing() then you + * are free to do whatever you like with this pointer. + * + * \code + * InkCanvas* canvas = new InkCanvas( this ); + * + * Isf::Drawing* drawing = canvas->drawing(); + * delete drawing; // bad! deleting an object internal to InkCanvas. + * + * canvas->setDrawing( existingIsfDrawingInstance ); + * + * drawing = canvas->drawing(); + * delete drawing; // good - drawing points to existingIsfDrawingInstance. + * \endcode + * + * + * @see setDrawing() + * @return The current Isf::Drawing instance. */ -void InkCanvas::setPenSize( int pixels ) +Isf::Drawing* InkCanvas::drawing() { -#ifdef ISFQT_DEBUG - qDebug() << "Setting new pen size:" << pixels; -#endif - penSize_ = pixels; - - updateCursor(); -} - - - -/** - * Change the pen type. - * - * Currently, only PenType::EraserPen and PenType::DrawingPen are supported. See the PenType - * enum for more information. - * - * @see PenType - * @param type The new pen type - */ -void InkCanvas::setPenType( PenType type ) -{ -#ifdef ISFQT_DEBUG - qDebug() << "Setting new pen type:" << type; -#endif - - penType_ = type; - - updateCursor(); + return drawing_; } @@ -239,16 +179,12 @@ void InkCanvas::setPenType( PenType type ) * @see mousePressEvent() * @param endPoint Final point of the line */ -void InkCanvas::drawLineTo( const QPoint &endPoint ) +void InkCanvas::drawLineTo( const QPoint& endPoint ) { - if( drawing_ == 0 ) - { - qWarning() << "Uninitialized usage of InkCanvas!"; - return; - } + Q_ASSERT_X( drawing_, "drawLineTo", "Drawing is null" ); // draw the "in progress" strokes on the buffer. - QPainter painter( &(bufferPixmap_) ); + QPainter painter( &bufferPixmap_ ); painter.setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform, true ); QColor color = color_; @@ -282,6 +218,18 @@ void InkCanvas::drawLineTo( const QPoint &endPoint ) +/** + * Renders the ink drawing to a QImage and returns it. + * + * @return A QImage containing the rendered Ink. + */ +QImage InkCanvas::image() +{ + return drawing_->pixmap( Qt::white ).toImage(); +} + + + /** * Get whether the drawing is empty (i.e., contains no strokes). * @@ -306,13 +254,9 @@ bool InkCanvas::isEmpty() * @see mouseReleaseEvent() * @param event The mouse button press event */ -void InkCanvas::mousePressEvent( QMouseEvent *event ) +void InkCanvas::mousePressEvent( QMouseEvent* event ) { - if( drawing_ == 0 ) - { - qWarning() << "Uninitialized usage of InkCanvas!"; - return; - } + Q_ASSERT_X( drawing_, "mousePressEvent", "Drawing is null" ); if( event->button() != Qt::LeftButton ) { @@ -325,7 +269,7 @@ void InkCanvas::mousePressEvent( QMouseEvent *event ) { // is there a stroke here? QPoint point = event->pos(); - Stroke *s = drawing_->strokeAtPoint( point ); + Stroke* s = drawing_->strokeAtPoint( point ); if ( s != 0 ) { drawing_->deleteStroke( s ); @@ -338,47 +282,19 @@ void InkCanvas::mousePressEvent( QMouseEvent *event ) lastPoint_ = event->pos(); - // Search if there already is an attributes set compatible with the current one - Isf::AttributeSet *reusableAttributeSet = 0; - foreach( Isf::AttributeSet *set, drawing_->attributeSets() ) - { - if( abs( (qreal)penSize_ - set->penSize.width() ) < 1.0f - && color_ == set->color ) - { - reusableAttributeSet = set; -#ifdef ISFQT_DEBUG - qDebug() << "Found an usable ISF attribute set"; -#endif - break; - } - } - - // If none is found, create a new one - if( ! reusableAttributeSet ) - { -#ifdef ISFQT_DEBUG - qDebug() << "Creating new attribute set"; -#endif - reusableAttributeSet = new Isf::AttributeSet; - reusableAttributeSet->color = color_; - reusableAttributeSet->penSize.setWidth ( (qreal)penSize_ ); - reusableAttributeSet->penSize.setHeight( (qreal)penSize_ ); - - drawing_->addAttributeSet( reusableAttributeSet ); - } - - // Use it for the next strokes - drawing_->setCurrentAttributeSet( reusableAttributeSet ); - // If there already is a stroke, add it if( currentStroke_ ) { + currentStroke_->finalize(); drawing_->addStroke( currentStroke_ ); currentStroke_ = 0; } - currentStroke_ = new Isf::Stroke; - currentStroke_->points.append( Isf::Point( lastPoint_ ) ); + currentStroke_ = new Isf::Stroke(); + currentStroke_->addPoint( lastPoint_ ); + currentStroke_->setColor( color_ ); + currentStroke_->setPenSize( QSizeF( (qreal)penSize_, (qreal)penSize_ ) ); + currentStroke_->setFlag( FitToCurve, true ); // Draw the initial point drawLineTo( lastPoint_ ); @@ -390,7 +306,7 @@ void InkCanvas::mousePressEvent( QMouseEvent *event ) * Continue drawing the current stroke. * * As the cursor moves across the canvas we continue drawing the stroke started in - * mousePressEvent(). A line is drawn between the last point and the current point + * mousePressEvent(). A line is drawn between the last point and the current point * as given by QMouseEvent::pos(). * * Once the mouse button is released, drawing ends. @@ -399,18 +315,20 @@ void InkCanvas::mousePressEvent( QMouseEvent *event ) * @see mouseReleaseEvent() * @param event The mouse move event */ -void InkCanvas::mouseMoveEvent( QMouseEvent *event ) +void InkCanvas::mouseMoveEvent( QMouseEvent* event ) { if( ! ( event->buttons() & Qt::LeftButton ) || ! scribbling_ ) { return; } + Q_ASSERT_X( drawing_, "mouseMoveEvent", "Drawing is null" ); + if ( penType_ == EraserPen ) { // is there a stroke here? QPoint point = event->pos(); - Stroke *s = drawing_->strokeAtPoint( point ); + Stroke* s = drawing_->strokeAtPoint( point ); if ( s != 0 ) { drawing_->deleteStroke( s ); @@ -421,12 +339,6 @@ void InkCanvas::mouseMoveEvent( QMouseEvent *event ) return; } - if( drawing_ == 0 ) - { - qWarning() << "Uninitialized usage of InkCanvas!"; - return; - } - QPoint position( event->pos() ); // Don't add duplicate points. Mainly useful when drawing dots. @@ -437,16 +349,10 @@ void InkCanvas::mouseMoveEvent( QMouseEvent *event ) drawLineTo( position ); - if( currentStroke_ == 0 ) - { -#ifdef KMESSDEBUG_INKEDIT_GENERAL - qWarning() << "The stroke isn't ready!"; -#endif - return; - } + Q_ASSERT_X( currentStroke_, "mouseMoveEvent", "currentStroke_ is null" ); // Add the new point to the stroke - currentStroke_->points.append( Isf::Point( lastPoint_ ) ); + currentStroke_->addPoint( lastPoint_ ); } @@ -460,13 +366,9 @@ void InkCanvas::mouseMoveEvent( QMouseEvent *event ) * @see mouseMoveEvent() * @param event The mouse release event */ -void InkCanvas::mouseReleaseEvent( QMouseEvent *event ) +void InkCanvas::mouseReleaseEvent( QMouseEvent* event ) { - if( drawing_ == 0 ) - { - qWarning() << "Uninitialized usage of InkCanvas!"; - return; - } + Q_ASSERT_X( drawing_, "mouseReleaseEvent", "Drawing is null" ); if( event->button() != Qt::LeftButton || ! scribbling_ ) { @@ -486,16 +388,7 @@ void InkCanvas::mouseReleaseEvent( QMouseEvent *event ) drawLineTo( position ); } - scribbling_ = false; - emit inkChanged(); - - if( ! currentStroke_ ) - { -#ifdef KMESSDEBUG_INKEDIT_GENERAL - qWarning() << "The stroke isn't ready!"; -#endif - return; - } + Q_ASSERT_X( currentStroke_, "mouseReleaseEvent", "currentStroke_ is null" ); #ifdef KMESSDEBUG_INKEDIT_GENERAL qDebug() << "Finishing up stroke"; @@ -504,9 +397,10 @@ void InkCanvas::mouseReleaseEvent( QMouseEvent *event ) // Don't add duplicate points. Mainly useful when drawing dots. if( lastPoint_ != position ) { - currentStroke_->points.append( Isf::Point( lastPoint_ ) ); + currentStroke_->addPoint( lastPoint_ ); } + currentStroke_->finalize(); drawing_->addStroke( currentStroke_ ); currentStroke_ = 0; @@ -515,24 +409,12 @@ void InkCanvas::mouseReleaseEvent( QMouseEvent *event ) // clear the buffer. clearBuffer(); - + // update update(); -} - - -/** - * Clear the internal pixmap buffer. - * - * The buffer used to quickly render on the widget painting area - * the new and old strokes: every new stroke is saved here. - * This allows to avoid repainting all strokes at every paint event. - */ -void InkCanvas::clearBuffer() -{ - bufferPixmap_ = QPixmap( size() ); - bufferPixmap_.fill( Qt::transparent ); + scribbling_ = false; + emit inkChanged(); } @@ -542,28 +424,19 @@ void InkCanvas::clearBuffer() * * For performance reasons an internal buffer is used to ensure that * the entire Ink drawing is not re-rendered on each paintEvent call. - * This buffer is invalidated only when a stroke is added or removed, the + * This buffer is invalidated only when a stroke is added or removed, the * drawing is changed or the canvas cleared. * * * @param event The paint event from Qt. */ -void InkCanvas::paintEvent( QPaintEvent *event ) +void InkCanvas::paintEvent( QPaintEvent* event ) { Q_UNUSED( event ); QPainter painter( this ); - painter.save(); - painter.setBrush( QBrush( canvasColor_ ) ); - painter.drawRect( QRect(-1, -1, width() + 1 , height() + 1 ) ); - painter.restore(); - - if( drawing_ == 0 ) - { - qWarning() << "Uninitialized usage of InkCanvas!"; - return; - } + Q_ASSERT_X( drawing_, "paintEvent", "Drawing is null" ); // draw the ISF first, then the buffer over the top. // buffer has a transparent background. @@ -586,42 +459,13 @@ void InkCanvas::paintEvent( QPaintEvent *event ) painter.drawPixmap( boundingRect.topLeft(), isfPixmap ); // draw the buffer from 0,0. - painter.drawPixmap( QPoint(0, 0), bufferPixmap_ ); + painter.drawPixmap( event->rect(), bufferPixmap_, event->rect() ); QWidget::paintEvent( event ); } -/** - * The widget has changed size, re-draw everything. - * - * @param event The resizing event. - */ -void InkCanvas::resizeEvent( QResizeEvent *event ) -{ - // need to resize the buffer pixmap. - clearBuffer(); - - update(); - - QWidget::resizeEvent( event ); -} - - - -/** - * Renders the ink drawing to a QImage and returns it. - * - * @return A QImage containing the rendered Ink. - */ -QImage InkCanvas::image() -{ - return drawing_->pixmap().toImage(); -} - - - /** * Get the current pen color. * @@ -662,32 +506,18 @@ InkCanvas::PenType InkCanvas::penType() /** - * Retrieve the Isf::Drawing instance that the canvas is currently manipulating. + * The widget has changed size, re-draw everything. * - * Beware: if you have not set your own Isf::Drawing instance via setDrawing(), you must not delete - * the object that this method returns. In this case this method returns a pointer to an internal - * Isf::Drawing instance that must not be deleted. If you have previously used setDrawing() then you - * are free to do whatever you like with this pointer. - * - * \code - * InkCanvas *canvas = new InkCanvas( this ); - * - * Isf::Drawing *drawing = canvas->drawing(); - * delete drawing; // bad! deleting an object internal to InkCanvas. - * - * canvas->setDrawing( existingIsfDrawingInstance ); - * - * drawing = canvas->drawing(); - * delete drawing; // good - drawing points to existingIsfDrawingInstance. - * \endcode - * - * - * @see setDrawing() - * @return The current Isf::Drawing instance. + * @param event The resizing event. */ -Isf::Drawing *InkCanvas::drawing() +void InkCanvas::resizeEvent( QResizeEvent* event ) { - return drawing_; + // need to resize the buffer pixmap. + clearBuffer(); + + update(); + + QWidget::resizeEvent( event ); } @@ -695,8 +525,8 @@ Isf::Drawing *InkCanvas::drawing() /** * Save the current ISF drawing to a QIODevice. * - * If the base64 param is True, then the drawing will be written base64-encoded. - * This is helpful for transmission over mediums which are not binary-friendly. + * If the base64 param is true, then the drawing will be written base64-encoded. + * This is helpful for transmission over binary-unfriendly media. * * @param dev The QIODevice to save to. * @param base64 If true, the drawing is written encoded with base64. @@ -709,18 +539,6 @@ void InkCanvas::save( QIODevice &dev, bool base64 ) -/** - * Returns the drawing's ISF representation. - * - * @return A QByteArray filled with ISF data. - */ -QByteArray InkCanvas::bytes() -{ - return Isf::Stream::writer( *drawing_ ); -} - - - /** * Set the canvas colour (i.e., the background colour of the InkCanvas control) * @@ -734,6 +552,10 @@ void InkCanvas::setCanvasColor( QColor newColor ) qDebug() << "Setting new canvas color:" << newColor.name(); #endif canvasColor_ = newColor; + + QPalette p = palette(); + p.setColor( QPalette::Window, newColor ); + setPalette( p ); update(); } @@ -743,11 +565,11 @@ void InkCanvas::setCanvasColor( QColor newColor ) * Changes the currently displayed Ink to the one supplied. * * Note: InkCanvas does not take ownership of Isf::Drawing instances supplied here. - * You are still responsible for ensuring they are deleted appropriately. + * You are still responsible of ensuring they are deleted appropriately. * * @param drawing The new Ink drawing to display. */ -void InkCanvas::setDrawing( Isf::Drawing *drawing ) +void InkCanvas::setDrawing( Isf::Drawing* drawing ) { drawing_ = drawing; @@ -760,7 +582,126 @@ void InkCanvas::setDrawing( Isf::Drawing *drawing ) drawingDirty_ = true; + updateGeometry(); update(); } + +/** + * Change the color of the pen used to draw on the Ink canvas. + * + * @param newColor The new color for the pen. + */ +void InkCanvas::setPenColor( QColor newColor ) +{ +#ifdef ISFQT_DEBUG + qDebug() << "Setting new pen color:" << newColor.name(); +#endif + + color_ = newColor; + + updateCursor(); +} + + + +/** + * Change the size of the pen. This value is in pixels. + * + * @param pixels The size of the pen, in pixels + */ +void InkCanvas::setPenSize( int pixels ) +{ +#ifdef ISFQT_DEBUG + qDebug() << "Setting new pen size:" << pixels; +#endif + penSize_ = pixels; + + updateCursor(); +} + + + +/** + * Change the pen type. + * + * Currently, only PenType::EraserPen and PenType::DrawingPen are supported. See the PenType + * enum for more information. + * + * @see PenType + * @param type The new pen type + */ +void InkCanvas::setPenType( PenType type ) +{ +#ifdef ISFQT_DEBUG + qDebug() << "Setting new pen type:" << type; +#endif + + penType_ = type; + + updateCursor(); +} + + + +/** + * Return the suggested size for the canvas. + * + * The actual size hint will depend on the size of the drawing on the canvas. By default, + * the size hint is 300x300 pixels. + */ +QSize InkCanvas::sizeHint() const +{ + if ( drawing_->isNull() ) + { + return QSize( 300, 300 ); + } + else + { + QRect boundingRect = drawing_->boundingRect(); + boundingRect.setTopLeft( QPoint( 0, 0 ) ); + return boundingRect.size(); + } +} + + + +/** + * Creates a QCursor displayed when the mouse pointer moves over the widget. + * + * The cursor becomes a point, drawn with the current stroke colour and pen size. + */ +void InkCanvas::updateCursor() +{ + if ( cursorPixmap_.isNull() ) + { + cursorPixmap_ = QPixmap( QSize( 32, 32 ) ); + } + + if ( penType_ == EraserPen ) + { + cursorPixmap_ = QPixmap( ":pics/draw-eraser.png" ); + cursor_ = QCursor( cursorPixmap_, 0, cursorPixmap_.height() ); + } + else + { + cursorPixmap_.fill( Qt::transparent ); + + QPainter painter( &cursorPixmap_ ); + + painter.setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform, true ); + painter.setPen( QPen( color_, penSize_, Qt::SolidLine, Qt::RoundCap, + Qt::RoundJoin ) ); + + // now draw a point. + painter.drawPoint( QPoint( cursorPixmap_.size().width() / 2, cursorPixmap_.size().height() / 2 ) ); + + cursor_ = QCursor( cursorPixmap_ ); + } + + // create our cursor. + setCursor( cursor_ ); +} + + diff --git a/contrib/isf-qt/src/isfqt-internal.h b/contrib/isf-qt/src/isfqt-internal.h index c07ec6e..95eb5ba 100644 --- a/contrib/isf-qt/src/isfqt-internal.h +++ b/contrib/isf-qt/src/isfqt-internal.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -44,6 +42,12 @@ namespace Isf { + // Forward declarations + class Stroke; + namespace Compress + { + class DataSource; + } @@ -114,6 +118,104 @@ namespace Isf + /** + * Drawing attributes for points. + */ + struct AttributeSet + { + /// Constructor + AttributeSet() + : color( Qt::black ) + , flags( 0x10 ) // Meaning unknown + , penSize( 8.f, 8.f ) // Default pen is 8.0 pixels wide + { + } + /// Quick comparison operator + bool operator ==( const AttributeSet& other ) + { + return color == other.color + && flags == other.flags + && penSize == other.penSize; + } + /// Quick comparison operator + bool operator !=( const AttributeSet& other ) + { + return color != other.color + || flags != other.flags + || penSize != other.penSize; + } + + /// The stroke color, optionally with alpha channel + QColor color; + /// Mask of StrokeFlags, @see StrokeFlags + StrokeFlags flags; + /// Dimensions of the pencil in pixels + QSizeF penSize; + }; + + + + /** + * Drawing attributes for strokes. + */ + struct StrokeInfo + { + /// Constructor + StrokeInfo() + : hasPressureData( false ) + , hasXData( true ) + , hasYData( true ) + { + } + + /// Whether the stroke contains pressure info or not + bool hasPressureData; + /// Whether the stroke contains X coordinates or not + bool hasXData; + /// Whether the stroke contains Y coordinates or not + bool hasYData; + }; + + + + /** + * Internal parser data + */ + struct StreamData + { + StreamData() + : currentAttributeSetIndex( 0 ) + , currentMetricsIndex( 0 ) + , currentStrokeInfoIndex( 0 ) + , currentTransformsIndex( 0 ) + , dataSource( 0 ) + { + } + + /// List of attributes of the points in the drawing + QList attributeSets; + /// Drawing's bounding rectangle + QRect boundingRect; + /// Current attribute set + quint64 currentAttributeSetIndex; + /// Current metrics set + quint64 currentMetricsIndex; + /// Current stroke info + quint64 currentStrokeInfoIndex; + /// Current transform + quint64 currentTransformsIndex; + /// Raw bytes source used to read and write streams + Compress::DataSource* dataSource; + /// List of metrics used in the drawing + QList metrics; + /// List of stroke info + QList strokeInfos; + /// Transformation matrices + QList transforms; + }; + + + } diff --git a/contrib/isf-qt/src/isfqt.cpp b/contrib/isf-qt/src/isfqt.cpp index e0dfeef..f7777f2 100644 --- a/contrib/isf-qt/src/isfqt.cpp +++ b/contrib/isf-qt/src/isfqt.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -48,6 +46,10 @@ using namespace Compress; #define SUPPORTED_ISF_VERSION 0 +// Initialization of static properties +StreamData* Stream::streamData_( 0 ); + + /** * Convert a raw ISF data stream into a drawing. @@ -59,23 +61,26 @@ using namespace Compress; * need to be decoded first * @return an Isf::Drawing, with null contents on error */ -Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) +Drawing& Stream::reader( const QByteArray& rawData, bool decodeFromBase64 ) { // Create a new drawing on the heap to ensure it will keep // living after this method returns - Drawing *drawing = new Drawing; - DataSource isfData( decodeFromBase64 - ? QByteArray::fromBase64( rawData ) - : rawData ); - int size = isfData.size(); - - if( size == 0 ) - { - return *drawing; - } + Drawing* drawing = new Drawing(); ParserState state = ISF_PARSER_START; + streamData_ = new StreamData(); + streamData_->dataSource = new DataSource( decodeFromBase64 + ? QByteArray::fromBase64( rawData ) + : rawData ); + + int size = streamData_->dataSource->size(); + if( size == 0 ) + { + state = ISF_PARSER_FINISH; + drawing->error_ = ISF_ERROR_BAD_STREAMSIZE; + } + while( state != ISF_PARSER_FINISH ) { switch( state ) @@ -83,7 +88,7 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) case ISF_PARSER_START: { // step 1: read ISF version. - quint8 version = decodeUInt( isfData ); + quint8 version = decodeUInt( streamData_->dataSource ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "Version:" << version; #endif @@ -106,13 +111,13 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) { // read ISF stream size. // check it matches the length of the data array. - quint64 streamSize = decodeUInt( isfData ); + quint64 streamSize = decodeUInt( streamData_->dataSource ); - if ( streamSize != (quint64)( isfData.size() - isfData.pos() ) ) + if ( streamSize != (quint64)( streamData_->dataSource->size() - streamData_->dataSource->pos() ) ) { #ifdef ISFQT_DEBUG qDebug() << "Invalid stream size" << streamSize - << ", expected" << ( isfData.size() - isfData.pos() ); + << ", expected" << ( streamData_->dataSource->size() - streamData_->dataSource->pos() ); #endif // streamsize is bad. drawing->error_ = ISF_ERROR_BAD_STREAMSIZE; @@ -126,12 +131,6 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) // Validate the drawing drawing->isNull_ = false; - // Fill up the default properties - drawing->currentMetrics_ = &drawing->defaultMetrics_; - drawing->currentAttributeSet_ = &drawing->defaultAttributeSet_; - drawing->currentStrokeInfo_ = &drawing->defaultStrokeInfo_; - drawing->currentTransform_ = &drawing->defaultTransform_; - // start looking for ISF tags. state = ISF_PARSER_TAG; } @@ -139,331 +138,16 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) break; } - // ****************** - // This is the key point of the state machine. This will continually loop looking for ISF - // tags and farming off to the appropriate method. - // ******************* case ISF_PARSER_TAG: { - if( isfData.atEnd() ) + if( streamData_->dataSource->atEnd() ) { state = ISF_PARSER_FINISH; break; } - QString place( "0x" + QString::number( isfData.pos(), 16 ).toUpper() ); - quint64 tagIndex = decodeUInt( isfData ); - - switch( tagIndex ) - { - case TAG_INK_SPACE_RECT: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_INK_SPACE_RECT"; -#endif - drawing->error_ = TagsParser::parseInkSpaceRectangle( isfData, *drawing ); - break; - - case TAG_GUID_TABLE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_GUID_TABLE"; -#endif - drawing->error_ = TagsParser::parseGuidTable( isfData, *drawing ); - break; - - case TAG_DRAW_ATTRS_TABLE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_DRAW_ATTRS_TABLE"; -#endif - drawing->error_ = TagsParser::parseAttributeTable( isfData, *drawing ); - break; - - case TAG_DRAW_ATTRS_BLOCK: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_DRAW_ATTRS_BLOCK"; -#endif - drawing->error_ = TagsParser::parseAttributeBlock( isfData, *drawing ); - break; - - case TAG_STROKE_DESC_TABLE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_STROKE_DESC_TABLE"; -#endif - drawing->error_ = TagsParser::parseStrokeDescTable( isfData, *drawing ); - break; - - case TAG_STROKE_DESC_BLOCK: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_STROKE_DESC_BLOCK"; -#endif - drawing->error_ = TagsParser::parseStrokeDescBlock( isfData, *drawing ); - break; - - case TAG_BUTTONS: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_BUTTONS"; -#endif - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_BUTTONS" ); - break; - - case TAG_NO_X: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_NO_X"; -#endif - drawing->error_ = ISF_ERROR_NONE; - - drawing->hasXData_ = false; - break; - - case TAG_NO_Y: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_NO_Y"; -#endif - drawing->hasYData_ = false; - break; - - case TAG_DIDX: - { -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_DIDX"; -#endif - - quint64 value = decodeUInt( isfData ); - - if( value < (uint)drawing->attributeSets_.count() ) - { - drawing->currentAttributeSet_ = drawing->attributeSets_[ value ]; -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Next strokes will use drawing attributes #" << value; -#endif - } - else - { -#ifdef ISFQT_DEBUG - qWarning() << "Invalid drawing attribute ID!"; -#endif - } - break; - } - - case TAG_STROKE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_STROKE"; -#endif - drawing->error_ = TagsParser::parseStroke( isfData, *drawing ); - break; - - case TAG_STROKE_PROPERTY_LIST: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_STROKE_PROPERTY_LIST"; -#endif - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_STROKE_PROPERTY_LIST" ); - break; - - case TAG_POINT_PROPERTY: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_POINT_PROPERTY"; -#endif - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_POINT_PROPERTY" ); - break; - - case TAG_SIDX: - { -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_SIDX"; -#endif - - quint64 value = decodeUInt( isfData ); - - if( value < (uint)drawing->strokeInfo_.count() ) - { - drawing->currentStrokeInfo_ = drawing->strokeInfo_[ value ]; -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Next strokes will use stroke info #" << value; -#endif - } - else - { -#ifdef ISFQT_DEBUG - qWarning() << "Invalid stroke ID!"; -#endif - } - break; - } - - case TAG_COMPRESSION_HEADER: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_COMPRESSION_HEADER"; -#endif - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_COMPRESSION_HEADER" ); - break; - - case TAG_TRANSFORM_TABLE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_TABLE"; -#endif - drawing->error_ = TagsParser::parseTransformationTable( isfData, *drawing ); - break; - - case TAG_TRANSFORM: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_ISOTROPIC_SCALE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ISOTROPIC_SCALE"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_ANISOTROPIC_SCALE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ANISOTROPIC_SCALE"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_ROTATE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ROTATE"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_TRANSLATE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_TRANSLATE"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_SCALE_AND_TRANSLATE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_SCALE_AND_TRANSLATE"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TRANSFORM_QUAD: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_QUAD"; -#endif - drawing->error_ = TagsParser::parseTransformation( isfData, *drawing, tagIndex ); - break; - - case TAG_TIDX: - { -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_TIDX"; -#endif - - quint64 value = decodeUInt( isfData ); - - if( value < (uint)drawing->transforms_.count() ) - { - drawing->currentTransform_ = drawing->transforms_[ value ]; -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Next strokes will use transform #" << value; -#endif - } - else - { -#ifdef ISFQT_DEBUG - qWarning() << "Invalid transform ID!"; -#endif - } - - break; - } - - case TAG_METRIC_TABLE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_METRIC_TABLE"; -#endif - drawing->error_ = TagsParser::parseMetricTable( isfData, *drawing ); - break; - - case TAG_METRIC_BLOCK: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_METRIC_BLOCK"; -#endif - drawing->error_ = TagsParser::parseMetricBlock( isfData, *drawing ); - break; - - case TAG_MIDX: - { -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_MIDX"; -#endif - - quint64 value = decodeUInt( isfData ); - - if( value < (uint)drawing->metrics_.count() ) - { - drawing->currentMetrics_ = drawing->metrics_[ value ]; -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Next strokes will use metrics #" << value; -#endif - } - else - { -#ifdef ISFQT_DEBUG - qWarning() << "Invalid metrics ID!"; -#endif - } - - break; - } - - case TAG_MANTISSA: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_MANTISSA"; -#endif - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_MANTISSA" ); - break; - - case TAG_PERSISTENT_FORMAT: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_PERSISTENT_FORMAT"; -#endif - drawing->error_ = TagsParser::parsePersistentFormat( isfData, *drawing ); - break; - - case TAG_HIMETRIC_SIZE: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_HIMETRIC_SIZE"; -#endif - drawing->error_ = TagsParser::parseHiMetricSize( isfData, *drawing ); - break; - - case TAG_STROKE_IDS: -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_STROKE_IDS"; -#endif - - drawing->error_ = TagsParser::parseUnsupported( isfData, "TAG_STROKE_IDS" ); - break; - - default: - - // If the tagIndex is known from the GUID table, show it differently - if( drawing->maxGuid_ > 0 - && tagIndex >= DEFAULT_TAGS_NUMBER && tagIndex <= drawing->maxGuid_ ) - { -#ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Got tag (@" << place << "): TAG_CUSTOM:" << tagIndex; -#endif - TagsParser::parseCustomTag( isfData, *drawing, tagIndex ); - } - else - { - TagsParser::parseUnsupported( isfData, "Unknown " + QString::number( tagIndex ) ); - } - break; - - } // End of tagIndex switch + // Read the next tag from the stream + drawing->error_ = TagsParser::nextTag( streamData_, drawing ); if( drawing->error_ != ISF_ERROR_NONE ) { @@ -489,8 +173,12 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) qDebug(); #endif + delete streamData_->dataSource; + if( drawing->error_ != ISF_ERROR_NONE ) { + delete streamData_; + streamData_ = 0; return *drawing; } @@ -498,15 +186,17 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) // Adjust the bounding rectangle to include the strokes borders QSize penSize( drawing->maxPenSize_.toSize() ); - drawing->boundingRect_.adjust( -penSize.width() - 1, -penSize.height() - 1, - +penSize.width() + 1, +penSize.height() + 1 ); - + streamData_->boundingRect.adjust( -penSize.width() - 1, -penSize.height() - 1, + +penSize.width() + 1, +penSize.height() + 1 ); + drawing->setBoundingRect( streamData_->boundingRect ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Drawing bounding rectangle:" << drawing->boundingRect_; + qDebug() << "Drawing bounding rectangle:" << drawing->boundingRect(); qDebug() << "Maximum thickness:" << drawing->maxPenSize_; #endif + delete streamData_; + streamData_ = 0; return *drawing; } @@ -528,7 +218,7 @@ Drawing &Stream::reader( const QByteArray &rawData, bool decodeFromBase64 ) * need to be decoded first * @return an Isf::Drawing, with null contents on error */ -Drawing &Stream::readerGif( const QByteArray &gifRawBytes, bool decodeFromBase64 ) +Drawing& Stream::readerGif( const QByteArray& gifRawBytes, bool decodeFromBase64 ) { QByteArray isfData; @@ -549,7 +239,7 @@ Drawing &Stream::readerGif( const QByteArray &gifRawBytes, bool decodeFromBase64 gifData.open( QIODevice::ReadOnly ); // Open the gif file - GifFileType *gifImage = DGifOpen( (void*)&gifData, GifReadFromByteArray ); + GifFileType* gifImage = DGifOpen( (void*)&gifData, GifReadFromByteArray ); if( gifImage != 0 ) { DGifGetComment( gifImage, data?? ); @@ -622,6 +312,51 @@ Drawing &Stream::readerGif( const QByteArray &gifRawBytes, bool decodeFromBase64 +/** + * Convert a Fortified-PNG image into a drawing. + * + * If the PNG image or the ISF data within it are invalid, or if the PNG did not + * have any ISF stream within, then a null Drawing is returned. + * + * @param gifRawBytes Source byte array with a Fortified PNG image + * @param decodeFromBase64 True if the bytes are in the Base64 format and + * need to be decoded first + * @return an Isf::Drawing, with null contents on error + */ +Drawing& Stream::readerPng( const QByteArray& pngRawBytes, bool decodeFromBase64 ) +{ + QByteArray isfData; + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Reading a PNG-Fortified file"; +#endif + + QByteArray pngBytes( decodeFromBase64 + ? QByteArray::fromBase64( pngRawBytes ) + : pngRawBytes ); + + QImage imageData( QImage::fromData( pngBytes, "PNG" ) ); + if( ! imageData.isNull() ) + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Picture data is valid: checking for the ISF data tag..."; +#endif + isfData = imageData.text( "application/x-ms-ink" ).toAscii(); + + if( ! isfData.isEmpty() ) + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "ISF data found! Decoding from Base64 and parsing it..."; +#endif + isfData = QByteArray::fromBase64( isfData ); + } + } + + return reader( isfData ); +} + + + /** * Return whether the library was built with Fortified GIF support or not. * @@ -644,7 +379,7 @@ bool Stream::supportsGif() * encoded with Base64 or not * @return Byte array with an ISF data stream */ -QByteArray Stream::writer( const Drawing &drawing, bool encodeToBase64 ) +QByteArray Stream::writer( const Drawing& drawing, bool encodeToBase64 ) { if( &drawing == 0 || drawing.isNull() || drawing.error() != ISF_ERROR_NONE ) { @@ -654,41 +389,51 @@ QByteArray Stream::writer( const Drawing &drawing, bool encodeToBase64 ) return QByteArray(); } - DataSource isfData; + streamData_ = new StreamData(); + streamData_->dataSource = new DataSource(); + DataSource* dataSource = streamData_->dataSource; + + // Add the initial data + TagsWriter::prepare( streamData_, &drawing ); // Write the persistent format tag - TagsWriter::addPersistentFormat( isfData, drawing ); + TagsWriter::addPersistentFormat( streamData_, &drawing ); // Write the drawing size - TagsWriter::addHiMetricSize( isfData, drawing ); + TagsWriter::addHiMetricSize( streamData_, &drawing ); // Write the attributes - TagsWriter::addAttributeTable( isfData, drawing ); + TagsWriter::addAttributeTable( streamData_, &drawing ); // Write the metrics - TagsWriter::addMetricsTable( isfData, drawing ); + TagsWriter::addMetricsTable( streamData_, &drawing ); // Write the transforms - TagsWriter::addTransformationTable( isfData, drawing ); + TagsWriter::addTransformationTable( streamData_, &drawing ); // Write the strokes - TagsWriter::addStrokes( isfData, drawing ); + TagsWriter::addStrokes( streamData_, &drawing ); // Write the stream size (at the start of the stream) - encodeUInt( isfData, isfData.size(), true/*prepend*/ ); + encodeUInt( dataSource, dataSource->size(), true/*prepend*/ ); // Write the version number (at the start of the stream) - encodeUInt( isfData, SUPPORTED_ISF_VERSION, true/*prepend*/ ); + encodeUInt( dataSource, SUPPORTED_ISF_VERSION, true/*prepend*/ ); + QByteArray data( dataSource->data() ); + + delete streamData_->dataSource; + delete streamData_; + streamData_ = 0; // Convert to Base64 if needed if( encodeToBase64 ) { - return isfData.data().toBase64(); + return data.toBase64(); } else { - return isfData.data(); + return data; } } @@ -703,13 +448,16 @@ QByteArray Stream::writer( const Drawing &drawing, bool encodeToBase64 ) * withous GIF support. Use Stream::supportsGif() to verify whether * GIF was compiled in or not. * + * The Fortified-GIF format is nothing more than a GIF image with the original + * ISF drawing added as a GIF Comment field. + * * @see supportsGif() * @param drawing Source drawing - * @param encodeToBase64 Whether the converted ISF stream should be + * @param encodeToBase64 Whether the converted GIF should be * encoded with Base64 or not - * @return Byte array with an ISF data stream + * @return Byte array with a GIF data stream (optionally encoded with Base64) */ -QByteArray Stream::writerGif( const Drawing &drawing, bool encodeToBase64 ) +QByteArray Stream::writerGif( const Drawing& drawing, bool encodeToBase64 ) { QByteArray imageBytes; @@ -730,8 +478,8 @@ QByteArray Stream::writerGif( const Drawing &drawing, bool encodeToBase64 ) // Initialise the gif variables QBuffer gifData; - GifFileType *gifImage = NULL; - ColorMapObject *cmap = NULL; + GifFileType* gifImage = NULL; + ColorMapObject* cmap = NULL; int height = isfImage.height(); int width = isfImage.width(); int numColors = 0; @@ -908,3 +656,53 @@ writeError: } + +/** + * Convert a drawing into a Fortified-PNG image. + * + * The resulting byte array will be empty if the drawing is not valid. + * + * The Fortified-PNG format is nothing more than a PNG image with the original + * ISF drawing added as a PNG text field. + * + * @param drawing Source drawing + * @param encodeToBase64 Whether the converted ISF stream should be + * encoded with Base64 or not + * @return Byte array with a PNG data stream (optionally encoded with Base64) + */ +QByteArray Stream::writerPng( const Drawing& drawing, bool encodeToBase64 ) +{ + Drawing source( drawing ); + + // Get the ISF data stream + QByteArray isfData( writer( source ) ); + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "PNG-Fortifying an ISF stream of size" << isfData.size(); +#endif + + // Get the actual image + QImage isfImage( source.pixmap().toImage() ); + + // Add to it the Base64 version of the ISF drawing, as a comment and in Base64 form + // (that's because the PNG text fields are only meant to hold text) + isfImage.setText( "application/x-ms-ink", isfData.toBase64() ); + + // Save it as a PNG image + QBuffer imageBytes; + imageBytes.open( QIODevice::WriteOnly ); + isfImage.save( &imageBytes, "PNG" ); + imageBytes.close(); + + // Convert to Base64 if needed + if( encodeToBase64 ) + { + return imageBytes.data().toBase64(); + } + else + { + return imageBytes.data(); + } +} + + diff --git a/contrib/isf-qt/src/isfqtdrawing.cpp b/contrib/isf-qt/src/isfqtdrawing.cpp index ec62c72..b91ecc2 100644 --- a/contrib/isf-qt/src/isfqtdrawing.cpp +++ b/contrib/isf-qt/src/isfqtdrawing.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -48,11 +46,7 @@ using namespace Compress; * As soon as you add data, the instance becomes non-NULL. */ Drawing::Drawing() -: currentMetrics_( 0 ) -, currentAttributeSet_( 0 ) -, currentStrokeInfo_( 0 ) -, currentTransform_( 0 ) -, error_( ISF_ERROR_NONE ) +: error_( ISF_ERROR_NONE ) , hasXData_( true ) , hasYData_( true ) , isNull_( true ) @@ -71,17 +65,9 @@ Drawing::Drawing() * * @param other The instance to duplicate. */ -Drawing::Drawing( const Drawing &other ) +Drawing::Drawing( const Drawing& other ) : boundingRect_( other.boundingRect_ ) , canvas_( other.canvas_ ) -, currentMetrics_( 0 ) -, currentAttributeSet_( 0 ) -, currentStrokeInfo_( 0 ) -, currentTransform_( 0 ) -, defaultMetrics_( other.defaultMetrics_ ) -, defaultAttributeSet_( other.defaultAttributeSet_ ) -, defaultStrokeInfo_( other.defaultStrokeInfo_ ) -, defaultTransform_( other.defaultTransform_ ) , error_( other.error_ ) , guids_( other.guids_ ) , hasXData_( other.hasXData_ ) @@ -89,114 +75,26 @@ Drawing::Drawing( const Drawing &other ) , isNull_( other.isNull_ ) , maxGuid_( other.maxGuid_ ) , maxPenSize_( other.maxPenSize_ ) -, size_( other.size_ ) { #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "** Copying ISF drawing:" << (void*)&other << "into new:" << this << "**"; #endif - // First: create copies of all the local lists - - foreach( Metrics *metrics, other.metrics_ ) + // Clone the stroke objects + foreach( Stroke* stroke, other.strokes_ ) { - Metrics *newMetrics = new Metrics( *metrics ); - metrics_.append( newMetrics ); - - if( metrics == other.currentMetrics_ ) - { - currentMetrics_ = newMetrics; - } - } - - foreach( StrokeInfo *strokeInfo, other.strokeInfo_ ) - { - StrokeInfo *newStrokeInfo = new StrokeInfo( *strokeInfo ); - strokeInfo_.append( newStrokeInfo ); - - if( strokeInfo == other.currentStrokeInfo_ ) - { - currentStrokeInfo_ = newStrokeInfo; - } - } - - foreach( QMatrix *transform, other.transforms_ ) - { - QMatrix *newTransform = new QMatrix( *transform ); - transforms_.append( newTransform ); - - if( transform == other.currentTransform_ ) - { - currentTransform_ = newTransform; - } - } - - foreach( AttributeSet *attributeSet, other.attributeSets_ ) - { - AttributeSet *newAttributeSet = new AttributeSet( *attributeSet ); - attributeSets_.append( newAttributeSet ); - - if( attributeSet == other.currentAttributeSet_ ) - { - currentAttributeSet_ = newAttributeSet; - } - } - - // Then: clone the strokes. Each stroke is linked to a certain - // attribute set, metrics set, etc, so we need to associate the - // original stroke's properties to the current one's - foreach( Stroke *stroke, other.strokes_ ) - { - Stroke *newStroke = new Stroke( *stroke ); + Stroke* newStroke = new Stroke( *stroke ); strokes_.append( newStroke ); - - // Get the indices of the various stroke properties; and - // for the new stroke, use the same indices - - // It is probably safe to simply use the same index, since the - // lists are copied in order. - if( stroke->attributes && other.attributeSets_.count() > 0 ) - { - int otherAttributeSet = other.attributeSets_.indexOf( stroke->attributes ); - newStroke->attributes = ( otherAttributeSet >= 0 ) - ? attributeSets_.at( otherAttributeSet ) - : 0; - } - if( stroke->info && other.strokeInfo_.count() > 0 ) - { - int otherStrokeInfo = other.strokeInfo_.indexOf( stroke->info ); - newStroke->info = ( otherStrokeInfo >= 0 ) - ? strokeInfo_.at( otherStrokeInfo ) - : 0; - } - if( stroke->metrics && other.metrics_.count() > 0 ) - { - int otherMetrics = other.metrics_.indexOf( stroke->metrics ); - newStroke->metrics = ( otherMetrics >= 0 ) - ? metrics_.at( otherMetrics ) - : 0; - } - if( stroke->transform && other.transforms_.count() > 0 ) - { - int otherTransforms = other.transforms_.indexOf( stroke->transform ); - newStroke->transform = ( otherTransforms >= 0 ) - ? transforms_.at( otherTransforms ) - : 0; - } } } - /** * Destructor */ Drawing::~Drawing() { - qDeleteAll( metrics_ ); - qDeleteAll( strokeInfo_ ); qDeleteAll( strokes_ ); - qDeleteAll( transforms_ ); - qDeleteAll( attributeSets_ ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "** Destroyed ISF drawing:" << this << "**"; @@ -205,104 +103,65 @@ Drawing::~Drawing() -/** - * Add new a attribute set to the drawing. - * - * @param newAttributeSet The attribute set to add - * @return Index of the new attribute set or -1 on failure - */ -qint32 Drawing::addAttributeSet( AttributeSet *newAttributeSet ) -{ - if( newAttributeSet == 0 ) - { - return -1; - } - - isNull_ = false; - - attributeSets_.append( newAttributeSet ); - - // This value is used to adjust the drawing borders to include thick strokes - if( newAttributeSet->penSize.width() > maxPenSize_.width() ) - { - maxPenSize_.setWidth( newAttributeSet->penSize.width() ); - } - if( newAttributeSet->penSize.height() > maxPenSize_.height() ) - { - maxPenSize_.setHeight( newAttributeSet->penSize.height() ); - } - - return ( attributeSets_.count() - 1 ); -} - - - /** * Add a new stroke to the drawing. * * @param newStroke The stroke to add * @return Index of the new stroke or -1 on failure */ -qint32 Drawing::addStroke( Stroke *newStroke ) +qint32 Drawing::addStroke( PointList points ) +{ + Stroke* newStroke = new Stroke(); + + newStroke->addPoints( points ); + newStroke->finalize(); + + return addStroke( newStroke ); +} + + + +/** + * Add a new stroke to the drawing. + * + * @param newStroke The stroke to add + * @return Index of the new stroke or -1 on failure + */ +qint32 Drawing::addStroke( Stroke* newStroke ) { if( newStroke == 0 ) { return -1; } - quint64 numPoints = newStroke->points.count(); - - // The polygon is used to determine the stroke's bounding rect - QPolygon polygon( numPoints ); - for( quint64 index = 0; index < numPoints; ++index ) - { - polygon.setPoint( index, newStroke->points.at( index ).position ); - } - - // assign the attributes to the stroke. - newStroke->attributes = currentAttributeSet_; - - // add FitToCurve (Windows will use Bezier smoothing to make the ink look nice) - newStroke->attributes->flags |= FitToCurve; - - float halfPenSize = newStroke->attributes->penSize.width() / 2; - - // set bounding rectangle, expanded it to accommodate pen size. - newStroke->boundingRect = polygon.boundingRect().adjusted( -( halfPenSize ), - ( halfPenSize ), - halfPenSize, halfPenSize ); - isNull_ = false; strokes_.append( newStroke ); + maxPenSize_ = maxPenSize_.width() < newStroke->penSize().width() ? newStroke->penSize() : maxPenSize_; - boundingRect_ = boundingRect_.united( newStroke->boundingRect ); - - // this stroke needs to be repainted. + // This stroke needs to be painted changedStrokes_.append( newStroke ); dirty_ = true; + updateBoundingRect(); + return ( strokes_.count() - 1 ); } + /** - * Add a new transformation to the drawing. + * Return the current bounding rectangle of the drawing. * - * @param newTransform The transform to add - * @return Index of the new transform or -1 on failure + * The bounding rectangle (or bounding box) is a QRect large enough (and as + * small as) to hold all of the strokes in this Drawing instance. + * + * @return The current bounding box. */ -qint32 Drawing::addTransform( QMatrix *newTransform ) +QRect Drawing::boundingRect() const { - if( newTransform == 0 ) - { - return -1; - } - - isNull_ = false; - transforms_.append( newTransform ); - - return ( transforms_.count() - 1 ); + return boundingRect_; } @@ -315,24 +174,10 @@ qint32 Drawing::addTransform( QMatrix *newTransform ) void Drawing::clear() { // Clean up the internal property lists - qDeleteAll( metrics_ ); - qDeleteAll( strokeInfo_ ); qDeleteAll( strokes_ ); - qDeleteAll( transforms_ ); - qDeleteAll( attributeSets_ ); - metrics_ .clear(); - strokeInfo_ .clear(); - strokes_ .clear(); - transforms_ .clear(); - attributeSets_.clear(); + strokes_ .clear(); changedStrokes_.clear(); - // Invalidate the current item pointers - currentMetrics_ = 0; - currentAttributeSet_ = 0; - currentStrokeInfo_ = 0; - currentTransform_ = 0; - // Nullify the other properties boundingRect_ = QRect(); canvas_ = QRect(); @@ -343,48 +188,8 @@ void Drawing::clear() isNull_ = true; maxGuid_ = 0; maxPenSize_ = QSizeF(); - size_ = QSize(); dirty_ = false; cachePixmap_ = QPixmap(); - - // set the default transform - defaultTransform_.scale( 1.f, 1.f ); - defaultTransform_.translate( .0f, .0f ); -} - - - -/** - * Remove an attribute set from the drawing. - * - * @param index Index of the attribute set to delete - * @return bool - */ -bool Drawing::deleteAttributeSet( quint32 index ) -{ - if( (qint64)index >= attributeSets_.count() ) - { - return false; - } - - delete attributeSets_.takeAt( index ); - - // re-calculate max pen size - foreach( AttributeSet *set, attributeSets_ ) - { - // This value is used to adjust the drawing borders to include thick strokes - if( set->penSize.width() > maxPenSize_.width() ) - { - maxPenSize_.setWidth( set->penSize.width() ); - } - if( set->penSize.height() > maxPenSize_.height() ) - { - maxPenSize_.setHeight( set->penSize.height() ); - } - } - - qDebug() << "Max Pen Size:"<= transforms_.count() ) - { - return false; - } - - delete transforms_.takeAt( index ); - return true; -} - - - /** * Return the last error that has occurred. * @@ -469,84 +255,45 @@ IsfError Drawing::error() const - /** - * Retrieve an attribute set to manipulate. + * Return the index of a certain stroke. * - * @param index Index of the attribute set to get - * @return AttributeSet or 0 if not found + * @param stroke Stroke to search + * @return Index or -1 if not found */ -AttributeSet *Drawing::attributeSet( quint32 index ) +qint32 Drawing::indexOfStroke( const Stroke* stroke ) const { - if( (qint64)index >= attributeSets_.count() ) - { - return 0; - } - - return attributeSets_.at( index ); + return strokes_.indexOf( const_cast( stroke ) ); } /** - * Retrieve the attribute sets. + * Return whether this drawing is empty. * - * @return The list of existing attribute sets + * A Drawing is empty when there are no strokes in it. + * + * @return True if this is an empty Drawing, false otherwise. */ -const QList Drawing::attributeSets() +bool Drawing::isEmpty() const { - return attributeSets_; -} - - - - -/** - * Return the current bounding rectangle of the drawing. - * - * The bounding rectangle (or bounding box) is a QRect large enough (and as - * small as) to hold all of the strokes in this Drawing instance. - * - * @return The current bounding box. - */ -QRect Drawing::boundingRect() -{ - // if the boundingRect_ is invalid, update it. - // it becomes invalid after a stroke is deleted. - if ( boundingRect_ == QRect() ) - { - foreach( Stroke *stroke, strokes_ ) - { - if ( stroke->transform != 0 ) - { - boundingRect_ = boundingRect_.united( stroke->transform->mapRect( stroke->boundingRect ) ); - } - else - { - boundingRect_ = boundingRect_.united( stroke->boundingRect ); - } - } - - QSize penSize( maxPenSize_.toSize() ); - boundingRect_.adjust( -penSize.width() - 1, -penSize.height() - 1, - +penSize.width() + 1, +penSize.height() + 1 ); - - size_ = boundingRect_.size(); - } - - return boundingRect_; + return strokes_.empty(); } /** - * Return the size of this drawing. + * Return whether this drawing is null. * - * @return Size of the drawing, in pixels. + * A Drawing is null when there are no strokes, attributes or anything in it, + * for example when it has just been initialized, cleared, or when a copy from + * another drawing fails. + * + * @return True if this is an null Drawing, false otherwise. */ -QSize Drawing::size() +bool Drawing::isNull() const { - return boundingRect().size(); + return isNull_; } @@ -562,76 +309,77 @@ QSize Drawing::size() * drawing. * * @param backgroundColor The color used as background in the returned image. + * Default is transparent. * @return The rendered drawing, or a null one on error. */ QPixmap Drawing::pixmap( const QColor backgroundColor ) { - if ( isNull() ) + if( isNull() ) { return QPixmap(); } - if ( ! dirty_ && ! cachePixmap_.isNull() ) + if( ! dirty_ && ! cachePixmap_.isNull() ) { return cachePixmap_; } - - QSize size_ = size(); - if( size_.width() > 2000 || size_.height() > 2000 ) + QSize drawingSize( size() ); + + if( drawingSize.width() > 2000 || drawingSize.height() > 2000 ) { qWarning() << "Cannot render a drawing so big!"; - qDebug() << "[Information - Size:" << size_ << "pixels]"; + qDebug() << "[Information - Size:" << drawingSize << "pixels]"; return QPixmap(); } // is the cache null, or are we repainting everything? if so, create a new pixmap. - if ( cachePixmap_.isNull() || changedStrokes_.isEmpty() ) + if( cachePixmap_.isNull() || changedStrokes_.isEmpty() ) { - cachePixmap_ = QPixmap( size_ ); - cachePixmap_.fill( Qt::transparent ); - cacheRect_ = boundingRect(); + cachePixmap_ = QPixmap( drawingSize ); + cachePixmap_.fill( backgroundColor ); + cacheRect_ = boundingRect_; } else { // otherwise, resize and repaint the cache. - QRect newRect = boundingRect(); - - // has the size of the drawing changed? if so, resize the cachePixmap_. - if ( cacheRect_.size() != newRect.size() ) - { - // qDebug() << "Cache pixmap needs resizing to" << size_; - // qDebug() << "Cache rect:" << cacheRect_; - // qDebug() << "New rect:" << newRect; + QRect newRect = boundingRect_; - QPixmap pixmap( size_ ); - pixmap.fill( Qt::transparent ); + // has the size of the drawing changed? if so, resize the cachePixmap_. + if( cacheRect_.size() != newRect.size() ) + { +// qDebug() << "Cache pixmap needs resizing to" << drawingSize; +// qDebug() << "Cache rect:" << cacheRect_; +// qDebug() << "New rect:" << newRect; + + QPixmap pixmap( drawingSize ); + pixmap.fill( backgroundColor ); QPainter painter( &pixmap ); int xOffset = ( newRect.x() - cacheRect_.x() ) * -1; int yOffset = ( newRect.y() - cacheRect_.y() ) * -1; - // qDebug() << "x-offset:"< strokes = ( changedStrokes_.isEmpty() ? strokes_ : changedStrokes_ ); #ifdef ISFQT_DEBUG - qDebug() << "Rendering a drawing of size" << size_; + qDebug() << "Rendering a drawing of size" << drawingSize; #endif #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "The drawing contains" << strokes_.count() << "strokes; rendering" << strokes.count() << "strokes."; + qDebug() << "Rendering" << strokes.count() << "out of" << strokes_.count() << "strokes in the drawing."; #endif // if there are no strokes there's no point going @@ -642,8 +390,8 @@ QPixmap Drawing::pixmap( const QColor backgroundColor ) } QPainter painter( &cachePixmap_ ); - - painter.setWindow( boundingRect() ); + + painter.setWindow( boundingRect_ ); painter.setWorldMatrixEnabled( true ); painter.setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform @@ -655,93 +403,73 @@ QPixmap Drawing::pixmap( const QColor backgroundColor ) pen.setCapStyle ( Qt::RoundCap ); pen.setJoinStyle( Qt::RoundJoin ); - // Keep record of the currently used properties, to avoid re-setting them for each stroke - currentMetrics_ = 0; - currentAttributeSet_ = 0; - currentStrokeInfo_ = 0; - currentTransform_ = 0; + // Keep record of the last used properties, to avoid re-setting them for each stroke + AttributeSet currentAttributes; + Metrics* currentMetrics = 0; + QMatrix* currentTransform = 0; int index = 0; - foreach( const Stroke *stroke, strokes ) + foreach( Stroke* stroke, strokes ) { - if( currentMetrics_ != stroke->metrics ) + if( currentAttributes.color != stroke->color() + || currentAttributes.flags != stroke->flags() + || currentAttributes.penSize != stroke->penSize() ) { - currentMetrics_ = stroke->metrics; + currentAttributes.color = stroke->color(); + currentAttributes.flags = stroke->flags(); + currentAttributes.penSize = stroke->penSize(); + + pen.setColor( stroke->color() ); + pen.setWidthF( stroke->penSize().width() ); + painter.setPen( pen ); + } + if( stroke->metrics() && currentMetrics != stroke->metrics() ) + { + currentMetrics = stroke->metrics(); // TODO need to convert all units somehow? // painter.setSomething( currentMetrics ); } - if( currentAttributeSet_ != stroke->attributes && stroke->attributes != 0) + if( stroke->transform() && currentTransform != stroke->transform() ) { - currentAttributeSet_ = stroke->attributes; - - pen.setColor( currentAttributeSet_->color ); - pen.setWidthF( currentAttributeSet_->penSize.width() ); - painter.setPen( pen ); - } - if( currentStrokeInfo_ != stroke->info ) - { - currentStrokeInfo_ = stroke->info; - } - if( currentTransform_ != stroke->transform && stroke->transform != 0 ) - { - currentTransform_ = stroke->transform; - painter.setWorldTransform( QTransform( *currentTransform_ ), false ); + currentTransform = stroke->transform(); + painter.setWorldTransform( QTransform( *currentTransform ), false ); // the problem with setting the world transform is that it will scale the pen size too. // we don't want that. so we have to artificially beef up the pen size. QPen pen = painter.pen(); - pen.setWidthF( currentAttributeSet_->penSize.width() / currentTransform_->m22() ); + pen.setWidthF( stroke->penSize().width() / currentTransform->m22() ); + +/* + // FIXME Ignoring pressure data - need to find out how pressure must be applied + pen.setWidth( pen.widthF() + points??.pressureLevel ); +*/ + painter.setPen( pen ); + painter.setBrush( Qt::transparent ); } + const PointList& points = stroke->points(); + #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "Rendering stroke" << index << "containing" << stroke->points.count() << "points"; - qDebug() << "- Stroke color:" << currentAttributeSet_->color.name() << "Pen size:" << pen.widthF(); + qDebug() << "Rendering stroke" << index << "containing" << stroke->points().count() << "points"; + qDebug() << "- Stroke color:" << stroke->color().name() << "Pen size:" << pen.widthF(); #endif - if( stroke->points.count() > 1 ) + ++index; + + if( points.count() == 0 ) { - Point lastPoint; - foreach( const Point &point, stroke->points ) - { -// qDebug() << "Point:" << point.position; + continue; + } - if( lastPoint.position.isNull() ) - { - lastPoint = point; - continue; - } - - if( currentStrokeInfo_->hasPressureData ) - { - // FIXME Ignoring pressure data - need to find out how pressure must be applied -// pen.setWidth( pen.widthF() + point.pressureLevel ); -// painter.setPen( pen ); - } - - // How nice of QPainter! Lines drawn from and to the same point - // won't be drawn at all - if( point.position == lastPoint.position ) - { - painter.drawPoint( point.position ); - } - else - { - painter.drawLine( lastPoint.position, point.position ); - } - - lastPoint = point; - } + // TODO: pressure data. + if( points.count() > 1 ) + { + painter.drawPath( stroke->painterPath() ); } else { - Point point = stroke->points.first(); - if( currentStrokeInfo_->hasPressureData ) - { - // FIXME Ignoring pressure data - need to find out how pressure must be applied -// pen.setWidth( pen.widthF() + point.pressureLevel ); -// painter.setPen( pen ); - } + Point point = stroke->points().first(); // qDebug() << "Point:" << point.position; painter.drawPoint( point.position ); @@ -757,14 +485,12 @@ QPixmap Drawing::pixmap( const QColor backgroundColor ) painter.setPen( pen ); #endif */ - - ++index; } painter.end(); changedStrokes_.clear(); - + #ifdef ISFQT_DEBUG qDebug() << "Rendering complete."; #endif @@ -776,13 +502,39 @@ QPixmap Drawing::pixmap( const QColor backgroundColor ) +/** + * Change the bounding rectangle of the drawing. + * + * Adding, removing or changing the strokes will change it back to the real rectangle. + * + * @param newRect the new bounding rectangle + */ +void Drawing::setBoundingRect( QRect newRect ) +{ + boundingRect_ = newRect; +} + + + +/** + * Return the size of this drawing. + * + * @return Size of the drawing, in pixels. + */ +QSize Drawing::size() const +{ + return boundingRect_.size(); +} + + + /** * Retrieve a stroke to manipulate. * * @param index Index of the stroke to get * @return Stroke or 0 if not found */ -Stroke *Drawing::stroke( quint32 index ) +Stroke* Drawing::stroke( quint32 index ) { if( (qint64)index >= strokes_.count() ) { @@ -806,7 +558,7 @@ Stroke *Drawing::stroke( quint32 index ) * @param point Point to check * @return A Stroke instance or NULL if no Stroke passes through that point. */ -Stroke *Drawing::strokeAtPoint( const QPoint &point ) +Stroke* Drawing::strokeAtPoint( const QPoint& point ) { /* Here's how this algorithm works: @@ -830,23 +582,23 @@ Stroke *Drawing::strokeAtPoint( const QPoint &point ) thus height = ( 2 * area ) / base. */ - QListIterator i( strokes_ ); + QListIterator i( strokes_ ); i.toBack(); while( i.hasPrevious() ) { - Stroke *s = i.previous();; + Stroke* s = i.previous(); // skip strokes where we're not near. - if ( ! s->boundingRect.contains( point ) ) + if ( ! s->boundingRect().contains( point ) ) { continue; } // what's the pen size of this stroke? That way we have a "fudge factor" - AttributeSet *set = s->attributes; - float penSize = set->penSize.width(); + float penSize = s->penSize().width(); float penHalfSize = penSize / 2; + float penHalfSizeFixed = penHalfSize * 1.25; // only want points that fall near the cursor. prevents searching unnecessary points. QRect searchRect; @@ -858,7 +610,9 @@ Stroke *Drawing::strokeAtPoint( const QPoint &point ) if ( penHalfSize > 5 ) { // 25% extra room to move. - searchRect = QRect( point.x() - penHalfSize * 1.25, point.y() - penHalfSize * 1.25, penHalfSize * 1.25, penHalfSize * 1.25 ); + searchRect = QRect( point.x() - penHalfSizeFixed, + point.y() - penHalfSizeFixed, + penHalfSizeFixed, penHalfSizeFixed ); } else { @@ -867,23 +621,25 @@ Stroke *Drawing::strokeAtPoint( const QPoint &point ) // special case: a single point (sometimes it'll appear as a single point but // be made up of two). - if ( s->points.size() == 1 || s->points.size() == 2 ) + const PointList& points( s->points() ); + if( points.size() == 1 || points.size() == 2 ) { - QLineF dist = QLineF( QPointF( s->points.at(0).position ), QPointF( point ) ); - if ( dist.length() <= penHalfSize * 1.25 ) + QLineF dist = QLineF( QPointF( points.at(0).position ), QPointF( point ) ); + if( dist.length() <= penHalfSizeFixed ) { return s; } + continue; } // multiple points. - for( int j = 0; j < s->points.size() - 1; j++) + for( int j = 0; j < points.size() - 1; j++) { - QPoint p1 = s->points.at(j).position; - QPoint p2 = s->points.at(j+1).position; + QPoint p1 = points.at(j).position; + QPoint p2 = points.at(j+1).position; - if ( ! searchRect.contains( p1 ) && ! searchRect.contains( p2 ) ) + if( ! searchRect.contains( p1 ) && ! searchRect.contains( p2 ) ) { continue; } @@ -901,7 +657,7 @@ Stroke *Drawing::strokeAtPoint( const QPoint &point ) // so, use Heron's Formula to get the area, plus A=0.5*base*height, re-arrange to get height. // // easy! - float sp = 0.5*( lineA.length() + base.length() + lineC.length() ); + float sp = 0.5 * ( lineA.length() + base.length() + lineC.length() ); float a = lineA.length(); float b = base.length(); float c = lineC.length(); @@ -909,7 +665,7 @@ Stroke *Drawing::strokeAtPoint( const QPoint &point ) float height = ( 2 * area ) / b; - if ( height <= penHalfSize * 1.25 ) + if ( height <= penHalfSizeFixed ) { // got one return s; @@ -934,91 +690,40 @@ const QList Drawing::strokes() + /** - * Retrieve a transformation to manipulate. - * - * @param index Index of the transform to get - * @return QMatrix or 0 if not found + * Update the bounding rectangle of the drawing. */ -QMatrix *Drawing::transform( quint32 index ) +void Drawing::updateBoundingRect() { - if( (qint64)index >= transforms_.count() ) +#ifdef ISFQT_DEBUG_VERBOSE + QRect oldRect( boundingRect_ ); +#endif + + boundingRect_ = QRect(); + foreach( Stroke* stroke, strokes_ ) { - return 0; + const QRect rect( stroke->boundingRect() ); + QMatrix* transform = stroke->transform(); + if( transform != 0 ) + { + boundingRect_ = boundingRect_.united( transform->mapRect( rect ) ); + } + else + { + boundingRect_ = boundingRect_.united( rect ); + } + + maxPenSize_ = maxPenSize_.width() < stroke->penSize().width() ? stroke->penSize() : maxPenSize_; } - return transforms_.at( index ); -} - - - -/** - * Retrieve the transformations. - * - * @return The list of existing transformations - */ -const QList Drawing::transforms() -{ - return transforms_; -} - - - -/** - * Return whether this drawing is empty. - * - * @return True if this is an empty (null) Drawing, false otherwise. - */ -bool Drawing::isNull() const -{ - return isNull_; -} - - - - -/** - * Change the current attribute set. - * - * This will change the attribute set which will be applied - * to the next strokes. - * - * @param attributeSet the new attribute set - * @return bool - */ -bool Drawing::setCurrentAttributeSet( AttributeSet *attributeSet ) -{ - if( ! attributeSets_.contains( attributeSet ) ) - { - return false; - } - - currentAttributeSet_ = attributeSet; - - return true; -} - - - -/** - * Change the current transformation. - * - * This will change the transformation which will be applied - * to the next strokes. - * - * @param transform the new transformation - * @return bool - */ -bool Drawing::setCurrentTransform( QMatrix *transform ) -{ - if( ! transforms_.contains( transform ) ) - { - return false; - } - - currentTransform_ = transform; - - return true; + const QSize penSize( maxPenSize_.toSize() ); + boundingRect_.adjust( -penSize.width() - 1, -penSize.height() - 1, + +penSize.width() + 1, +penSize.height() + 1 ); + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Bounding rectangle updated: from" << oldRect << "to" << boundingRect_; +#endif } diff --git a/contrib/isf-qt/src/isfqtstroke.cpp b/contrib/isf-qt/src/isfqtstroke.cpp new file mode 100644 index 0000000..45303cf --- /dev/null +++ b/contrib/isf-qt/src/isfqtstroke.cpp @@ -0,0 +1,517 @@ +/*************************************************************************** + * Copyright (C) 2010 by Valerio Pilo * + * valerio@kmess.org * + * * + * Copyright (C) 2010 by Adam Goossens * + * adam@kmess.org * + * * + * This program 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 program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "isfqtstroke.h" + +#include "isfqt-internal.h" + +#include + + +using namespace Isf; + + + +/** + * Constructor + */ +Stroke::Stroke() +: finalized_( true ) +, metrics_( 0 ) +, transform_( 0 ) +{ +} + + + +/** + * Copy constructor + * + * @param other The object to clone + */ +Stroke::Stroke( const Stroke& other ) +{ + bezierControlPoints1_ = other.bezierControlPoints1_; + bezierControlPoints2_ = other.bezierControlPoints2_; + bezierKnots_ = other.bezierKnots_; + + boundingRect_ = other.boundingRect_; + color_ = other.color_; + finalized_ = other.finalized_; + flags_ = other.flags_; + hasPressureData_ = other.hasPressureData_; + metrics_ = other.metrics_; + penSize_ = other.penSize_; + points_ = other.points_; + transform_ = other.transform_; +} + + + +/** + * Destructor + */ +Stroke::~Stroke() +{ +} + + + +void Stroke::addPoint( Point point ) +{ + // Avoid splitting up the logic + addPoints( PointList() << point ); +} + + + +void Stroke::addPoints( PointList points ) +{ + points_.append( points ); + + // Hunt for pressure info + if( ! hasPressureData_ ) + { + foreach( Point point, points ) + { + if( point.pressureLevel != 0 ) + { + hasPressureData_ = true; + break; + } + } + } + + finalized_ = false; +} + + + +/** + * Given a series of known (knot) points, knots, calculates the control points (c1, c2) to approximate a series of + * bezier curves passing smoothly through the knot points. + */ +void Stroke::bezierCalculateControlPoints() +{ +// bezierKnots_.clear(); +// bezierControlPoints1_.clear(); +// bezierControlPoints2_.clear(); + + int numPoints = points_.size(); + + // For a better curve, don't pass through all of points: + // skip about 70% of them + int toSkip = 0.70 * numPoints; + int step = numPoints / ( numPoints - toSkip ); + step = ( step < 1 ) ? 1 : step; // Sanity check + + for( int i = 0; i < numPoints; i += step ) + { + bezierKnots_.append( points_.at(i).position ); + } + + // always pass through the last point. + bezierKnots_.append( points_.last().position ); + + ///////////////////////////////////////////////////////////////////////////// + + if( bezierKnots_.size() == 0 ) + { + return; + } + + int n = bezierKnots_.size() - 1; + if( n < 1 ) + { +#ifdef ISFQT_DEBUG + qWarning() << "Require at least two knot points to generate Bezier control points; ignoring."; +#endif + return; + } + + // special case: Bezier curve should be a straight line. + if( n == 1 ) + { + QPointF cp1, cp2; + QPointF k1 = bezierKnots_.at(0); // knot point 1 + QPointF k2 = bezierKnots_.at(1); // knot point 2 + + cp1.setX( ( 2 * k1.x() + k2.x() ) / 3.0 ); + cp1.setY( ( 2 * k1.y() + k2.y() ) / 3.0 ); + + cp2.setX( ( 2 * cp1.x() - k1.x() ) ); + cp2.setY( ( 2 * cp1.y() - k1.y() ) ); + + bezierControlPoints1_.append( cp1 ); + bezierControlPoints2_.append( cp2 ); + + return; // done! + } + + // right hand side vector. + double rhs[n]; + + // set RHS x values + for( int i = 1; i < n-1; i++ ) + { + rhs[i] = 4 * bezierKnots_[i].x() + 2 * bezierKnots_[i+1].x(); + } + + rhs[0] = bezierKnots_[0].x() + 2 * bezierKnots_[1].x(); + rhs[n-1] = ( 8 * bezierKnots_[n-1].x() + bezierKnots_[n].x() ) / 2.0; + + // get the first ctl points x values. + double x[n]; + bezierGetFirstControlPoints( rhs, x, n ); + + + // now set RHS y-values. + for(int i = 1; i < n-1; i++ ) + { + rhs[i] = 4 * bezierKnots_[i].y() + 2 * bezierKnots_[i+1].y(); + } + + rhs[0] = bezierKnots_[0].y() + 2 * bezierKnots_[1].y(); + rhs[n-1] = ( 8 * bezierKnots_[n-1].y() + bezierKnots_[n].y() ) / 2.0; + + double y[n]; + bezierGetFirstControlPoints( rhs, y, n ); + + // now fill the output QList. + for( int i = 0; i < n; i++ ) + { + QPointF cp1( x[i], y[i] ); + QPointF cp2; + + // second ctl point + if ( i < n-1 ) + { + cp2 = QPointF( 2 * bezierKnots_[i+1].x() - x[i+1], + 2 * bezierKnots_[i+1].y() - y[i+1] ); + } + else + { + cp2 = QPointF( ( bezierKnots_[n].x() + x[n-1] ) / 2, + ( bezierKnots_[n].y() + y[n-1] ) / 2 ); + } + + bezierControlPoints1_.append( cp1 ); + bezierControlPoints2_.append( cp2 ); + } +} + + + +// Solves the system for the first control points. +void Stroke::bezierGetFirstControlPoints( double rhs[], double* xOut, int n ) +{ + double* x = xOut; // solution vector. + double tmp[n]; // temp workspace. + + double b = 2.0; + x[0] = rhs[0] / b; + for( int i = 1; i < n; i++ ) // decomposition and forward substitution + { + tmp[i] = 1 / b; + b = ( i < n - 1 ? 4.0 : 3.5 ) - tmp[i]; + x[i] = (rhs[i] - x[i-1]) / b; + } + + for( int i = 1; i < n; i++ ) + { + x[n-i-1] -= tmp[n-i] * x[n-i]; // back substitution. + } + + // results are in xOut. +} + + + +/** + * Returns the rectangle which contains this stroke. + * + * @return Rectangle + */ +QRect Stroke::boundingRect() const +{ + return boundingRect_; +} + + + +QColor Stroke::color() const +{ + return color_; +} + + + +/** + * Apply the changes to the stroke. + * + * Calculating the stroke bounds is complex, so a lazy approach was + * chosen instead of recalculating them for every added point. + */ +void Stroke::finalize() +{ + if( finalized_ ) + { + return; + } + + // A polygon is used to determine the stroke's bounding rect + quint64 numPoints = points_.count(); + QPolygon polygon( numPoints ); + for( quint64 index = 0; index < numPoints; ++index ) + { + polygon.setPoint( index, points_.at( index ).position ); + } + + // Transform the bounding rect with the current transformation + if( transform_ ) + { + polygon = transform_->map( polygon ); + } + + // Set the bounding rectangle, expanded it to also accommodate pen size + float halfPenSize = penSize_.width() / 2; + boundingRect_ = polygon.boundingRect().adjusted( -( halfPenSize ), -( halfPenSize ), + halfPenSize, halfPenSize ); + + // Finally, pre-calculate the stroke paths + painterPath(); + + finalized_ = true; +} + + + +/** + * Get the stroke drawing flags. + * + * @return Stroke flags + */ +StrokeFlags Stroke::flags() const +{ + return flags_; +} + + + +/** + * Get whether the stroke contains pressure information. + * + * @return bool + */ +bool Stroke::hasPressureData() const +{ + return hasPressureData_; +} + + + +/** + * Get the stroke metrics. + * + * @return Metrics* + */ +Metrics* Stroke::metrics() +{ + return metrics_; +} + + + +/** + * Get a painter path to draw this stroke. + * + * The path is adjusted according to the drawing flags. + * Given a list of knot points, generates a QPainterPath that describes the stroke. + * + * If the FitToCurve flag is present, the stroke path is generated using bezier curves + * to approximate the stroke, giving a much smoother appearance. + * + * @see calculateControlPoints() + * @return QPainterPath + */ +QPainterPath Stroke::painterPath() +{ + int numPoints = points_.size(); + + if( numPoints == 0 ) + { + return QPainterPath(); + } + + QPointF startPos( points_.first().position ); + + QPainterPath path( startPos ); + + if( ( flags_ & FitToCurve ) == false ) + { + foreach( Point point, points_ ) + { + path.lineTo( point.position ); + } + return path; + } + + // don't calculate control points if they've + // already been calculated. + if( bezierKnots_.isEmpty() ) + { + bezierCalculateControlPoints(); + } + + for( int i = 0; i < bezierControlPoints1_.size(); i++ ) + { + // draw the bezier curve! + path.cubicTo( bezierControlPoints1_[ i ], bezierControlPoints2_[ i ], bezierKnots_[ i + 1 ] ); + } + + return path; +} + + + +/** + * Get the current pen size + * + * @return QSizeF of the stroke pen + */ +QSizeF Stroke::penSize() const +{ + return penSize_; +} + + + +/** + * Get the list of points + * + * @return List of stroke points + */ +PointList& Stroke::points() +{ + return points_; +} + + + +/** + * Change pen color + * + * @param newColor new pen color + */ +void Stroke::setColor( QColor newColor ) +{ + color_ = newColor; +} + + + + +/** + * Change a flag + * + * @param flag The flag to alter + * @param set If true, the flag will be set. If false, it will be unset. + */ +void Stroke::setFlag( StrokeFlag flag, bool set ) +{ + if( set ) + { + flags_ |= flag; + } + else + { + flags_ ^= flag; + } +} + + + +/** + * Change stroke flags all at once. + * + * @param newFlags Flags bitfield + */ +void Stroke::setFlags( StrokeFlags newFlags ) +{ + flags_ = newFlags; +} + + + +/** + * Get the current pen size + * + * @param newMetrics The new metrics object + */ +void Stroke::setMetrics( Metrics* newMetrics ) +{ + metrics_ = newMetrics; +} + + + +/** + * Get the current pen size + * + * @return QSizeF of the stroke pen + */ +void Stroke::setPenSize( QSizeF newSize ) +{ + penSize_ = newSize; + + // The bounding box changes with pen size + finalized_ = false; +} + + + +/** + * Apply a transformation to the stroke. + * + * The stroke doesn't take ownership of the transformation. + * + * @param newTransform Transformation to apply + */ +void Stroke::setTransform( QMatrix* newTransform ) +{ + transform_ = newTransform; +} + + + +/** + * Get the stroke transformation, if any + * + * @return QMatrix, possibly null + */ +QMatrix* Stroke::transform() +{ + return transform_; +} + + diff --git a/contrib/isf-qt/src/tagsparser.cpp b/contrib/isf-qt/src/tagsparser.cpp index 3934d00..290200a 100644 --- a/contrib/isf-qt/src/tagsparser.cpp +++ b/contrib/isf-qt/src/tagsparser.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -25,12 +23,13 @@ #include "tagsparser.h" -#include "isfqt-internal.h" - #include "data/compression.h" #include "data/datasource.h" #include "data/multibytecoding.h" +#include "isfqt-internal.h" + +#include #include #include @@ -38,20 +37,355 @@ using namespace Isf; +using namespace Isf::Compress; /** * Read away an unsupported tag. * - * @param source Data Source where to read bytes from + * This is the key point of the state machine. This will look for ISF + * tags and farm off to the appropriate method. + * + * @param streamData StreamData object with the stream data * @param tagName Name of the tag if known, index number if not * @return IsfError */ -IsfError TagsParser::parseUnsupported( DataSource &source, const QString &tagName ) +IsfError TagsParser::nextTag( StreamData* streamData, Drawing* drawing ) +{ + IsfError error = ISF_ERROR_NONE; + QString place( "0x" + QString::number( streamData->dataSource->pos(), 16 ).toUpper() ); + + quint64 tagIndex = decodeUInt( streamData->dataSource ); + switch( tagIndex ) + { + case TAG_INK_SPACE_RECT: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_INK_SPACE_RECT"; +#endif + error = parseInkSpaceRectangle( streamData, drawing ); + break; + + case TAG_GUID_TABLE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_GUID_TABLE"; +#endif + error = parseGuidTable( streamData, drawing ); + break; + + case TAG_DRAW_ATTRS_TABLE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_DRAW_ATTRS_TABLE"; +#endif + error = parseAttributeTable( streamData, drawing ); + break; + + case TAG_DRAW_ATTRS_BLOCK: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_DRAW_ATTRS_BLOCK"; +#endif + error = parseAttributeBlock( streamData, drawing ); + break; + + case TAG_STROKE_DESC_TABLE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_STROKE_DESC_TABLE"; +#endif + error = parseStrokeDescTable( streamData, drawing ); + break; + + case TAG_STROKE_DESC_BLOCK: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_STROKE_DESC_BLOCK"; +#endif + error = parseStrokeDescBlock( streamData, drawing ); + break; + + case TAG_BUTTONS: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_BUTTONS"; +#endif + error = parseUnsupported( streamData, "TAG_BUTTONS" ); + break; + + case TAG_NO_X: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_NO_X"; +#endif + drawing->error_ = ISF_ERROR_NONE; + + drawing->hasXData_ = false; + break; + + case TAG_NO_Y: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_NO_Y"; +#endif + drawing->hasYData_ = false; + break; + + case TAG_DIDX: + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_DIDX"; +#endif + + quint64 value = decodeUInt( streamData->dataSource ); + + if( value < (uint)streamData->attributeSets.count() ) + { + streamData->currentAttributeSetIndex = value; + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Next strokes will use drawing attributes #" << value; +#endif + } + else + { +#ifdef ISFQT_DEBUG + qWarning() << "Invalid drawing attribute ID!"; +#endif + } + break; + } + + case TAG_STROKE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_STROKE"; +#endif + error = parseStroke( streamData, drawing ); + break; + + case TAG_STROKE_PROPERTY_LIST: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_STROKE_PROPERTY_LIST"; +#endif + error = parseUnsupported( streamData, "TAG_STROKE_PROPERTY_LIST" ); + break; + + case TAG_POINT_PROPERTY: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_POINT_PROPERTY"; +#endif + error = parseUnsupported( streamData, "TAG_POINT_PROPERTY" ); + break; + + case TAG_SIDX: + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_SIDX"; +#endif + + quint64 value = decodeUInt( streamData->dataSource ); + + if( value < (uint)streamData->strokeInfos.count() ) + { + streamData->currentStrokeInfoIndex = value; +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Next strokes will use stroke info #" << value; +#endif + } + else + { +#ifdef ISFQT_DEBUG + qWarning() << "Invalid stroke ID!"; +#endif + } + break; + } + + case TAG_COMPRESSION_HEADER: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_COMPRESSION_HEADER"; +#endif + error = parseUnsupported( streamData, "TAG_COMPRESSION_HEADER" ); + break; + + case TAG_TRANSFORM_TABLE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_TABLE"; +#endif + error = parseTransformationTable( streamData, drawing ); + break; + + case TAG_TRANSFORM: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_ISOTROPIC_SCALE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ISOTROPIC_SCALE"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_ANISOTROPIC_SCALE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ANISOTROPIC_SCALE"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_ROTATE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_ROTATE"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_TRANSLATE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_TRANSLATE"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_SCALE_AND_TRANSLATE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_SCALE_AND_TRANSLATE"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TRANSFORM_QUAD: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TRANSFORM_QUAD"; +#endif + error = parseTransformation( streamData, drawing, tagIndex ); + break; + + case TAG_TIDX: + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_TIDX"; +#endif + + quint64 value = decodeUInt( streamData->dataSource ); + + if( value < (uint)streamData->transforms.count() ) + { + streamData->currentTransformsIndex = value; + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Next strokes will use transform #" << value; +#endif + } + else + { +#ifdef ISFQT_DEBUG + qWarning() << "Invalid transform ID!"; +#endif + } + + break; + } + + case TAG_METRIC_TABLE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_METRIC_TABLE"; +#endif + error = parseMetricTable( streamData, drawing ); + break; + + case TAG_METRIC_BLOCK: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_METRIC_BLOCK"; +#endif + error = parseMetricBlock( streamData, drawing ); + break; + + case TAG_MIDX: + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_MIDX"; +#endif + + quint64 value = decodeUInt( streamData->dataSource ); + + if( value < (uint)streamData->metrics.count() ) + { + streamData->currentMetricsIndex = value; +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Next strokes will use metrics #" << value; +#endif + } + else + { +#ifdef ISFQT_DEBUG + qWarning() << "Invalid metrics ID!"; +#endif + } + + break; + } + + case TAG_MANTISSA: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_MANTISSA"; +#endif + error = parseUnsupported( streamData, "TAG_MANTISSA" ); + break; + + case TAG_PERSISTENT_FORMAT: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_PERSISTENT_FORMAT"; +#endif + error = parsePersistentFormat( streamData, drawing ); + break; + + case TAG_HIMETRIC_SIZE: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_HIMETRIC_SIZE"; +#endif + error = parseHiMetricSize( streamData, drawing ); + break; + + case TAG_STROKE_IDS: +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_STROKE_IDS"; +#endif + + error = parseUnsupported( streamData, "TAG_STROKE_IDS" ); + break; + + default: + + // If the tagIndex is known from the GUID table, show it differently + if( drawing->maxGuid_ > 0 + && tagIndex >= DEFAULT_TAGS_NUMBER && tagIndex <= drawing->maxGuid_ ) + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "Got tag (@" << place << "): TAG_CUSTOM:" << tagIndex; +#endif + error = TagsParser::parseCustomTag( streamData, drawing, tagIndex ); + } + else + { + error = TagsParser::parseUnsupported( streamData, "Unknown " + QString::number( tagIndex ) ); + } + break; + + } // End of tagIndex switch + + return error; +} + + + +/** + * Read away an unsupported tag. + * + * @param streamData StreamData object with the stream data + * @param tagName Name of the tag if known, index number if not + * @return IsfError + */ +IsfError TagsParser::parseUnsupported( StreamData* streamData, const QString& tagName ) { // Unsupported content - analyzePayload( source, tagName + " (Unsupported)" ); + analyzePayload( streamData, tagName + " (Unsupported)" ); return ISF_ERROR_NONE; } @@ -65,17 +399,17 @@ IsfError TagsParser::parseUnsupported( DataSource &source, const QString &tagNam * As soon as new tags will be identified, this method will recognize them and * delegate their parsing to another method in this class. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @param tagIndex Index number of the custom tag * @return IsfError */ -IsfError TagsParser::parseCustomTag( DataSource &source, Drawing &drawing, quint64 tagIndex ) +IsfError TagsParser::parseCustomTag( StreamData* streamData, Drawing* drawing, quint64 tagIndex ) { quint64 tag = tagIndex - FIRST_CUSTOM_TAG_ID; // Find if we have this tag registered in the GUID table - if( tag >= (quint64)drawing.guids_.count() ) + if( tag >= (quint64)drawing->guids_.count() ) { #ifdef ISFQT_DEBUG qDebug() << "Custom tag" << QString::number( tagIndex ) << "was not registered!"; @@ -84,12 +418,12 @@ IsfError TagsParser::parseCustomTag( DataSource &source, Drawing &drawing, quint } QList data; - QUuid guid = drawing.guids_.at( tag ); - quint64 payloadSize = decodeUInt( source ) + 1; + QUuid guid = drawing->guids_.at( tag ); + quint64 payloadSize = decodeUInt( streamData->dataSource ) + 1; // Decompress the property data - DataSource payload( source.getBytes( payloadSize ) ); - Compress::inflatePropertyData( payload, payloadSize-1, data ); + DataSource payload( streamData->dataSource->getBytes( payloadSize ) ); + Compress::inflatePropertyData( &payload, payloadSize-1, data ); // String values if( @@ -133,13 +467,13 @@ IsfError TagsParser::parseCustomTag( DataSource &source, Drawing &drawing, quint /** * Read the table of custom GUIDs. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseGuidTable( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseGuidTable( StreamData* streamData, Drawing* drawing ) { - if( ! drawing.guids_.isEmpty() ) + if( ! drawing->guids_.isEmpty() ) { #ifdef ISFQT_DEBUG qDebug() << "Duplicated TAG_GUID_TABLE!"; @@ -147,41 +481,41 @@ IsfError TagsParser::parseGuidTable( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_STREAM; } - quint64 guidTableSize = decodeUInt( source ); + quint64 guidTableSize = decodeUInt( streamData->dataSource ); // GUIDs are 16 bytes long quint8 numGuids = guidTableSize / 16; // Maximum GUID present in the file - drawing.maxGuid_ = 99 + numGuids; + drawing->maxGuid_ = 99 + numGuids; #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- New maximum GUID index:" << drawing.maxGuid_; + qDebug() << "- New maximum GUID index:" << drawing->maxGuid_; qDebug() << "- GUID table has" << numGuids << "entries for total" << guidTableSize << "bytes:"; #endif bool ok = true; quint8 index = 0; - while( ! source.atEnd() && index < numGuids ) + while( ! streamData->dataSource->atEnd() && index < numGuids ) { int block1; short block2; short block3; char block4[ 8 ]; - block1 = source.getBytes( 4, &ok ).toHex().toUInt( &ok, 16 ); + block1 = streamData->dataSource->getBytes( 4, &ok ).toHex().toUInt( &ok, 16 ); if( ! ok ) { break; } - block2 = source.getBytes( 2, &ok ).toHex().toUShort( &ok, 16 ); + block2 = streamData->dataSource->getBytes( 2, &ok ).toHex().toUShort( &ok, 16 ); if( ! ok ) { break; } - block3 = source.getBytes( 2, &ok ).toHex().toUShort( &ok, 16 ); + block3 = streamData->dataSource->getBytes( 2, &ok ).toHex().toUShort( &ok, 16 ); if( ! ok ) { break; @@ -189,7 +523,7 @@ IsfError TagsParser::parseGuidTable( DataSource &source, Drawing &drawing ) for( int i = 0; ok && i < 8; ++i ) { - block4[ i ] = source.getBytes( 1, &ok ).at( 0 ); + block4[ i ] = streamData->dataSource->getBytes( 1, &ok ).at( 0 ); } if( ! ok ) { @@ -200,9 +534,9 @@ IsfError TagsParser::parseGuidTable( DataSource &source, Drawing &drawing ) block4[0], block4[1], block4[2], block4[3], block4[4], block4[5], block4[6], block4[7] ); - drawing.guids_.append( guid ); + drawing->guids_.append( guid ); - if( index != ( drawing.guids_.count() - 1 ) ) + if( index != ( drawing->guids_.count() - 1 ) ) { #ifdef ISFQT_DEBUG_VERBOSE qDebug() << " - Tag/index mismatch!"; @@ -240,16 +574,16 @@ IsfError TagsParser::parseGuidTable( DataSource &source, Drawing &drawing ) * with a payload size of 3 bytes. * * @see ISF_PERSISTENT_FORMAT_VERSION - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parsePersistentFormat( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parsePersistentFormat( StreamData* streamData, Drawing* drawing ) { Q_UNUSED( drawing ) - quint64 payloadSize = decodeUInt( source ); - quint64 sourcePosition = source.pos(); + quint64 payloadSize = decodeUInt( streamData->dataSource ); + quint64 sourcePosition = streamData->dataSource->pos(); if( payloadSize == 0 ) { @@ -260,17 +594,17 @@ IsfError TagsParser::parsePersistentFormat( DataSource &source, Drawing &drawing } // Try reading one multibyte value - quint64 version = decodeUInt( source ); + quint64 version = decodeUInt( streamData->dataSource ); // If we read some unexpected contents, dump them to help improving the library - quint32 actualPayloadSize = source.pos() - sourcePosition; + quint32 actualPayloadSize = streamData->dataSource->pos() - sourcePosition; if( actualPayloadSize != payloadSize ) { #ifdef ISFQT_DEBUG qDebug() << "Invalid payload contents for TAG_PERSISTENT_FORMAT!" << "Read" << actualPayloadSize << "bytes instead of" << payloadSize; - source.seekRelative( - actualPayloadSize ); - analyzePayload( source, payloadSize, "TAG_PERSISTENT_FORMAT unknown contents" ); + streamData->dataSource->seekRelative( - actualPayloadSize ); + analyzePayload( streamData, payloadSize, "TAG_PERSISTENT_FORMAT unknown contents" ); #endif } @@ -297,13 +631,15 @@ IsfError TagsParser::parsePersistentFormat( DataSource &source, Drawing &drawing /** * Read the drawing dimensions. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseHiMetricSize( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseHiMetricSize( StreamData* streamData, Drawing* drawing ) { - quint64 payloadSize = decodeUInt( source ); + Q_UNUSED( drawing ); + + quint64 payloadSize = decodeUInt( streamData->dataSource ); if( payloadSize == 0 ) { @@ -313,7 +649,7 @@ IsfError TagsParser::parseHiMetricSize( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_PAYLOAD; } - if( drawing.size_.isValid() ) + if( streamData->boundingRect.isValid() ) { #ifdef ISFQT_DEBUG qDebug() << "Duplicated TAG_HIMETRIC_SIZE!"; @@ -321,11 +657,14 @@ IsfError TagsParser::parseHiMetricSize( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_STREAM; } - drawing.size_.setWidth ( decodeInt( source ) ); - drawing.size_.setHeight( decodeInt( source ) ); + + streamData->boundingRect = QRect( 0, 0, 0, 0 ); + streamData->boundingRect.setWidth ( decodeInt( streamData->dataSource ) ); + streamData->boundingRect.setHeight( decodeInt( streamData->dataSource ) ); + #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Drawing dimensions:" << drawing.size_; + qDebug() << "- Drawing dimensions:" << drawing->size(); #endif return ISF_ERROR_NONE; @@ -336,13 +675,14 @@ IsfError TagsParser::parseHiMetricSize( DataSource &source, Drawing &drawing ) /** * Read a block of points attributes. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseAttributeBlock( StreamData* streamData, Drawing* drawing ) { - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -352,27 +692,26 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_PAYLOAD; } - drawing.attributeSets_.append( new AttributeSet() ); - AttributeSet *set = drawing.attributeSets_.last(); + AttributeSet set; // set this once when we get the first DRAW_ATTRS_BLOCK. then, // everytime we get a DIDX we can update it. if we don't do this // then the first stroke will have the same colour as the last stroke. - if ( drawing.currentAttributeSet_ == &drawing.defaultAttributeSet_ ) - { - drawing.currentAttributeSet_ = set; - } +// if ( drawing->currentAttributeSetIndex == &drawing->defaultAttributeSet_ ) +// { +// streamData->currentAttributeSetIndex = streamData->attributeSets.indexOf( set ); +// } #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Added drawing attribute block #" << ( drawing.attributeSets_.count() - 1 ); + qDebug() << "- Added drawing attribute block #" << ( streamData->attributeSets.count() - 1 ); #endif - qint64 payloadEnd = source.pos() + payloadSize; - while( source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { // Read the property and its value - quint64 property = decodeUInt( source ); // contains a PacketProperty value - quint64 value = decodeUInt( source ); + quint64 property = decodeUInt( dataSource ); // contains a PacketProperty value + quint64 value = decodeUInt( dataSource ); switch( property ) { @@ -389,11 +728,11 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) // as QRgb stores the value in BGR order: QRgb(RRGGBB) <-- value(BBGGRR). // TODO: It also contains an alpha value, ignored here for now because it's unknown if // it is needed or not - set->color = QColor( qBlue ( invertedColor ), - qGreen( invertedColor ), - qRed ( invertedColor ) ); + set.color = QColor( qBlue ( invertedColor ), + qGreen( invertedColor ), + qRed ( invertedColor ) ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Got pen color" << set->color.name().toUpper(); + qDebug() << "- Got pen color" << set.color.name().toUpper(); #endif break; } @@ -404,15 +743,15 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) << "(" << (value/HiMetricToPixel) << "pixels )"; #endif // In square/round pens the width will be the only value present. - set->penSize.setWidth ( (float)value / HiMetricToPixel ); - set->penSize.setHeight( (float)value / HiMetricToPixel ); + set.penSize.setWidth ( (float)value / HiMetricToPixel ); + set.penSize.setHeight( (float)value / HiMetricToPixel ); break; case GUID_PEN_HEIGHT: #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Got pen height" << QString::number( (float)value, 'g', 16 ); #endif - set->penSize.setHeight( (float)value / HiMetricToPixel ); + set.penSize.setHeight( (float)value / HiMetricToPixel ); break; case GUID_PEN_TIP: @@ -421,12 +760,12 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) #endif if( value ) { - set->flags |= IsRectangle; + set.flags |= IsRectangle; } break; case GUID_DRAWING_FLAGS: - set->flags = (StrokeFlags)( ( 0XFF00 & set->flags ) | (ushort) value ); + set.flags = (StrokeFlags)( ( 0XFF00 & set.flags ) | (ushort) value ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Got flags value:" << value; if( value & FitToCurve ) @@ -458,7 +797,7 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Got pen transparency" << value; #endif - set->color.setAlpha( value ); + set.color.setAlpha( value ); break; case GUID_ROP: @@ -466,7 +805,7 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) qDebug() << "- Got ROP property (Run Of Press? Reject Occasional Partners?)"; // We already read the first value, go back // source.seekRelative( getMultiByteSize( value ) ); - analyzePayload( source, 3 ); + analyzePayload( streamData, 3 ); #endif // info.flags |= IsHighlighter; break; @@ -477,13 +816,13 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) #endif // If the tag *should* be known, record it differently - if( drawing.maxGuid_ > 0 && property >= 100 && property <= drawing.maxGuid_ ) + if( drawing->maxGuid_ > 0 && property >= 100 && property <= drawing->maxGuid_ ) { - analyzePayload( source, "TAG_PROPERTY_" + QString::number( property ) ); + analyzePayload( streamData, "TAG_PROPERTY_" + QString::number( property ) ); } else { - analyzePayload( source, "Unknown property " + QString::number( property ) ); + analyzePayload( streamData, "Unknown property " + QString::number( property ) ); } break; } @@ -491,15 +830,16 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) // Update the drawing's maximum pen size. // This value is used to adjust the drawing borders to include thick strokes - if( set->penSize.width() > drawing.maxPenSize_.width() ) + if( set.penSize.width() > drawing->maxPenSize_.width() ) { - drawing.maxPenSize_.setWidth( set->penSize.width() ); + drawing->maxPenSize_.setWidth( set.penSize.width() ); } - if( set->penSize.height() > drawing.maxPenSize_.height() ) + if( set.penSize.height() > drawing->maxPenSize_.height() ) { - drawing.maxPenSize_.setHeight( set->penSize.height() ); + drawing->maxPenSize_.setHeight( set.penSize.height() ); } + streamData->attributeSets.append( set ); return ISF_ERROR_NONE; } @@ -509,14 +849,15 @@ IsfError TagsParser::parseAttributeBlock( DataSource &source, Drawing &drawing ) /** * Read a table of points attributes. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseAttributeTable( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseAttributeTable( StreamData* streamData, Drawing* drawing ) { IsfError result = ISF_ERROR_NONE; - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -526,13 +867,13 @@ IsfError TagsParser::parseAttributeTable( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_PAYLOAD; } - qint64 payloadEnd = source.pos() + payloadSize; - while( result == ISF_ERROR_NONE && source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( result == ISF_ERROR_NONE && dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "Got tag: TAG_DRAW_ATTRS_BLOCK"; #endif - result = parseAttributeBlock( source, drawing ); + result = parseAttributeBlock( streamData, drawing ); } return result; @@ -543,13 +884,13 @@ IsfError TagsParser::parseAttributeTable( DataSource &source, Drawing &drawing ) /** * Read the ink canvas dimensions. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseInkSpaceRectangle( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseInkSpaceRectangle( StreamData* streamData, Drawing* drawing ) { - if( drawing.canvas_.isValid() ) + if( drawing->canvas_.isValid() ) { #ifdef ISFQT_DEBUG qDebug() << "Duplicated TAG_INK_SPACE_RECT!"; @@ -558,13 +899,14 @@ IsfError TagsParser::parseInkSpaceRectangle( DataSource &source, Drawing &drawin } // This tag has a fixed 4-byte size - drawing.canvas_.setLeft ( decodeInt( source ) ); - drawing.canvas_.setTop ( decodeInt( source ) ); - drawing.canvas_.setRight ( decodeInt( source ) ); - drawing.canvas_.setBottom( decodeInt( source ) ); + DataSource* dataSource = streamData->dataSource; + drawing->canvas_.setLeft ( decodeInt( dataSource ) ); + drawing->canvas_.setTop ( decodeInt( dataSource ) ); + drawing->canvas_.setRight ( decodeInt( dataSource ) ); + drawing->canvas_.setBottom( decodeInt( dataSource ) ); #ifdef ISFQT_DEBUG - qDebug() << "- Got drawing canvas:" << drawing.canvas_; + qDebug() << "- Got drawing canvas:" << drawing->canvas_; #endif return ISF_ERROR_NONE; @@ -575,14 +917,16 @@ IsfError TagsParser::parseInkSpaceRectangle( DataSource &source, Drawing &drawin /** * Read a Metrics table. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseMetricTable( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseMetricTable( StreamData* streamData, Drawing* drawing ) { IsfError result = ISF_ERROR_NONE; - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -592,10 +936,10 @@ IsfError TagsParser::parseMetricTable( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_PAYLOAD; } - qint64 payloadEnd = source.pos() + payloadSize; - while( result == ISF_ERROR_NONE && source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( result == ISF_ERROR_NONE && dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { - result = parseMetricBlock( source, drawing ); + result = parseMetricBlock( streamData, drawing ); } return result; @@ -606,15 +950,16 @@ IsfError TagsParser::parseMetricTable( DataSource &source, Drawing &drawing ) /** * Read a Metrics block. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseMetricBlock( StreamData* streamData, Drawing* drawing ) { Q_UNUSED( drawing ) - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -624,14 +969,16 @@ IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) return ISF_ERROR_INVALID_PAYLOAD; } - Metrics *metricsList = new Metrics(); - qint64 payloadEnd = source.pos() + payloadSize; - while( source.pos() < payloadEnd && ! source.atEnd() ) + Metrics* metricsList = new Metrics(); + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { - quint64 property = Isf::Compress::decodeUInt( source ); + quint64 property = Isf::Compress::decodeUInt( dataSource ); - qint64 initialPos = source.pos(); - payloadSize = Isf::Compress::decodeUInt( source ); +#ifdef ISFQT_DEBUG + qint64 initialPos = dataSource->pos(); +#endif + payloadSize = Isf::Compress::decodeUInt( dataSource ); // Two multibyte signed ints, one byte, one float: minimum 7 bytes if( payloadSize < 7 ) @@ -639,16 +986,16 @@ IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Metric id" << property << "has an invalid payload size:" << payloadSize; #endif - analyzePayload( source, payloadSize ); + analyzePayload( streamData, payloadSize ); continue; } // Get the metric values Metric metric; - metric.min = Isf::Compress::decodeInt( source ); - metric.max = Isf::Compress::decodeInt( source ); - metric.units = (MetricScale) source.getByte(); - metric.resolution = Isf::Compress::decodeFloat( source ); + metric.min = Isf::Compress::decodeInt( dataSource ); + metric.max = Isf::Compress::decodeInt( dataSource ); + metric.units = (MetricScale) dataSource->getByte(); + metric.resolution = Isf::Compress::decodeFloat( dataSource ); // Identify the metric switch( property ) @@ -675,17 +1022,17 @@ IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Unknown metric, id:" << property << "size:" << payloadSize; #endif - analyzePayload( source, payloadSize ); + analyzePayload( streamData, payloadSize ); continue; } #ifdef ISFQT_DEBUG // If there's extra data, show it - quint64 parsedPayload = ( source.pos() - initialPos ); + quint64 parsedPayload = ( dataSource->pos() - initialPos ); if( parsedPayload < payloadSize ) { qDebug() << "- Extra data:"; - analyzePayload( source, payloadSize - parsedPayload ); + analyzePayload( streamData, payloadSize - parsedPayload ); } #endif @@ -699,16 +1046,16 @@ IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) } // Save the obtained metrics - drawing.metrics_.append( metricsList ); - Metrics *savedMetrics = drawing.metrics_.last(); + streamData->metrics.append( metricsList ); // set this once when we get the first METRIC_BLOCK. then, // everytime we get a MIDX we can update it. if we don't do this // then the first stroke will have the same metrics as the last stroke. - if ( drawing.currentMetrics_ == &drawing.defaultMetrics_ ) - { - drawing.currentMetrics_ = savedMetrics; - } +// Metrics* savedMetrics = streamData->metrics.last(); +// if ( drawing->currentMetrics_ == &drawing->defaultMetrics_ ) +// { +// drawing->currentMetrics_ = savedMetrics; +// } return ISF_ERROR_NONE; } @@ -718,14 +1065,15 @@ IsfError TagsParser::parseMetricBlock( DataSource &source, Drawing &drawing ) /** * Read a table of transformation matrices. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseTransformationTable( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseTransformationTable( StreamData* streamData, Drawing* drawing ) { IsfError result = ISF_ERROR_NONE; - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -735,13 +1083,13 @@ IsfError TagsParser::parseTransformationTable( DataSource &source, Drawing &draw return ISF_ERROR_INVALID_PAYLOAD; } - qint64 payloadEnd = source.pos() + payloadSize; - while( result == ISF_ERROR_NONE && source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( result == ISF_ERROR_NONE && dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { // Read the type of the next transformation - DataTag tagIndex = (DataTag) Compress::decodeUInt( source ); + DataTag tagIndex = (DataTag) Compress::decodeUInt( dataSource ); - result = parseTransformation( source, drawing, tagIndex ); + result = parseTransformation( streamData, drawing, tagIndex ); } return result; @@ -752,14 +1100,17 @@ IsfError TagsParser::parseTransformationTable( DataSource &source, Drawing &draw /** * Read a drawing transformation matrix. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @param transformType Type of transform to read * @return IsfError */ -IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, quint64 transformType ) +IsfError TagsParser::parseTransformation( StreamData* streamData, Drawing* drawing, quint64 transformType ) { - QMatrix *transform = new QMatrix(); + Q_UNUSED( drawing ); + + QMatrix* transform = new QMatrix(); + DataSource* dataSource = streamData->dataSource; /* * Unlike the other transformations, scale is expressed in HiMetric units, @@ -778,12 +1129,12 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, { case TAG_TRANSFORM: { - float scaleX = Compress::decodeFloat( source ) / HiMetricToPixel; - float scaleY = Compress::decodeFloat( source ) / HiMetricToPixel; - float shearX = Compress::decodeFloat( source ); - float shearY = Compress::decodeFloat( source ); - float dx = Compress::decodeFloat( source ); - float dy = Compress::decodeFloat( source ); + float scaleX = Compress::decodeFloat( dataSource ) / HiMetricToPixel; + float scaleY = Compress::decodeFloat( dataSource ) / HiMetricToPixel; + float shearX = Compress::decodeFloat( dataSource ); + float shearY = Compress::decodeFloat( dataSource ); + float dx = Compress::decodeFloat( dataSource ); + float dy = Compress::decodeFloat( dataSource ); transform->setMatrix( scaleX, scaleY, shearX, shearY, dx, dy ); @@ -801,7 +1152,7 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, case TAG_TRANSFORM_ISOTROPIC_SCALE: { - float scaleAmount = Compress::decodeFloat( source ) / HiMetricToPixel; + float scaleAmount = Compress::decodeFloat( dataSource ) / HiMetricToPixel; transform->scale( scaleAmount, scaleAmount ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Transformation details - " @@ -812,8 +1163,8 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, case TAG_TRANSFORM_ANISOTROPIC_SCALE: { - float scaleX = Compress::decodeFloat( source ) / HiMetricToPixel; - float scaleY = Compress::decodeFloat( source ) / HiMetricToPixel; + float scaleX = Compress::decodeFloat( dataSource ) / HiMetricToPixel; + float scaleY = Compress::decodeFloat( dataSource ) / HiMetricToPixel; transform->scale( scaleX, scaleY ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Transformation details - " @@ -825,7 +1176,7 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, case TAG_TRANSFORM_ROTATE: { - float rotateAmount = Compress::decodeFloat( source ) / 100.0f; + float rotateAmount = Compress::decodeFloat( dataSource ) / 100.0f; transform->rotate( rotateAmount ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Transformation details - " @@ -836,8 +1187,8 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, case TAG_TRANSFORM_TRANSLATE: { - float dx = Compress::decodeFloat( source ); - float dy = Compress::decodeFloat( source ); + float dx = Compress::decodeFloat( dataSource ); + float dy = Compress::decodeFloat( dataSource ); transform->translate( dx, dy ); #ifdef ISFQT_DEBUG_VERBOSE @@ -850,10 +1201,10 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, case TAG_TRANSFORM_SCALE_AND_TRANSLATE: { - float scaleX = Compress::decodeFloat( source ) / HiMetricToPixel; - float scaleY = Compress::decodeFloat( source ) / HiMetricToPixel; - float dx = Compress::decodeFloat( source ); - float dy = Compress::decodeFloat( source ); + float scaleX = Compress::decodeFloat( dataSource ) / HiMetricToPixel; + float scaleY = Compress::decodeFloat( dataSource ) / HiMetricToPixel; + float dx = Compress::decodeFloat( dataSource ); + float dy = Compress::decodeFloat( dataSource ); transform->scale ( scaleX, scaleY ); transform->translate( dx, dy ); @@ -875,18 +1226,18 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, return ISF_ERROR_INVALID_BLOCK; } - drawing.transforms_.append( transform ); + streamData->transforms.append( transform ); // set this once when we get the first transformation. then, // everytime we get a TIDX we can update it. if we don't do this // then the first stroke will have the same transform as the last stroke. - if ( drawing.currentTransform_ == &drawing.defaultTransform_ ) - { - drawing.currentTransform_ = drawing.transforms_.last(); - } +// if ( drawing->currentTransform_ == &drawing->defaultTransform_ ) +// { +// drawing->currentTransform_ = drawing->transforms_.last(); +// } #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Added transform block #" << ( drawing.transforms_.count() - 1 ); + qDebug() << "- Added transform block #" << ( streamData->transforms.count() - 1 ); #endif return ISF_ERROR_NONE; @@ -897,14 +1248,15 @@ IsfError TagsParser::parseTransformation( DataSource &source, Drawing &drawing, /** * Read a stroke. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseStroke( StreamData* streamData, Drawing* drawing ) { - quint64 payloadSize = decodeUInt( source ); - quint64 initialPos = source.pos(); + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); + quint64 initialPos = dataSource->pos(); if( payloadSize == 0 ) { @@ -915,14 +1267,18 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) } // Get the number of points which comprise this stroke - quint64 numPoints = decodeUInt( source ); + quint64 numPoints = decodeUInt( dataSource ); + + QList xPointsData, yPointsData, pressureData; + + // If the stream has pressure info, parse it + bool streamHasPressureData = streamData->strokeInfos.count() && streamData->strokeInfos.last()->hasPressureData; #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Tag size:" << payloadSize << "Points stored:" << numPoints; #endif - QList xPointsData, yPointsData, pressureData; - if( ! Compress::inflatePacketData( source, numPoints, xPointsData ) ) + if( ! Compress::inflatePacketData( dataSource, numPoints, xPointsData ) ) { #ifdef ISFQT_DEBUG qWarning() << "Decompression failure while extracting X points data!"; @@ -930,7 +1286,7 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) #endif } - if( ! Compress::inflatePacketData( source, numPoints, yPointsData ) ) + if( ! Compress::inflatePacketData( dataSource, numPoints, yPointsData ) ) { #ifdef ISFQT_DEBUG qWarning() << "Decompression failure while extracting Y points data!"; @@ -938,8 +1294,8 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) #endif } - if( drawing.currentStrokeInfo_->hasPressureData - && ! Compress::inflatePacketData( source, numPoints, pressureData ) ) + if( streamHasPressureData + && ! Compress::inflatePacketData( dataSource, numPoints, pressureData ) ) { #ifdef ISFQT_DEBUG qWarning() << "Decompression failure while extracting pressure data!"; @@ -955,7 +1311,7 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) #endif } - if( drawing.currentStrokeInfo_->hasPressureData + if( streamHasPressureData && (uint)pressureData.size() != numPoints ) { #ifdef ISFQT_DEBUG @@ -965,62 +1321,77 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) } // Add a new stroke - drawing.strokes_.append( new Stroke() ); - Stroke *stroke = drawing.strokes_[ drawing.strokes_.size() - 1 ]; + drawing->strokes_.append( new Stroke() ); + Stroke* stroke = drawing->strokes_.last(); + + // Apply the stroke style, transforms and metrics + if( streamData->attributeSets.count() ) + { + AttributeSet set = streamData->attributeSets.at( streamData->currentAttributeSetIndex ); + + stroke->setColor ( set.color ); + stroke->setFlags ( set.flags ); + stroke->setPenSize( set.penSize ); + } + if( streamData->metrics.count() ) + { + Metrics* metrics = streamData->metrics.at( streamData->currentMetricsIndex ); + + if( ! metrics ) + { + qWarning() << "Invalid reference to metrics" << streamData->currentMetricsIndex; + } + else + { + stroke->setMetrics( metrics ); + } + } + if( streamData->transforms.count() ) + { + QMatrix* transform = streamData->transforms.at( streamData->currentTransformsIndex ); + + if( ! transform ) + { + qWarning() << "Invalid reference to transform" << streamData->currentTransformsIndex; + } + else + { + stroke->setTransform( transform ); + } + } #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Added stroke #" << ( drawing.strokes_.count() - 1 ); + qDebug() << "- Added stroke #" << ( drawing->strokes_.count() - 1 ); #endif - // The polygon is used to obtain the stroke's bounding rect - QPolygon polygon( numPoints ); + // Add the points to the stroke + PointList list; for( quint64 i = 0; i < numPoints; ++i ) { - stroke->points.append( Point() ); - Point &point = stroke->points[ stroke->points.size() - 1 ]; + list.append( Point() ); + Point &point = list.last(); point.position.setX( xPointsData[ i ] ); point.position.setY( yPointsData[ i ] ); - polygon.setPoint( i, xPointsData[ i ], yPointsData[ i ] ); - - if( drawing.currentStrokeInfo_->hasPressureData ) + if( streamHasPressureData ) { point.pressureLevel = pressureData[ i ]; } } - - if ( drawing.currentTransform_ != 0 ) - { - polygon = drawing.currentTransform_->map( polygon ); - } - - stroke->boundingRect = polygon.boundingRect(); - - // set the bounding rectangle. - if ( stroke->boundingRect.size() == QSize(1, 1) ) - { - // can't have a 1px by 1px bounding rect - the eraser will never hit it. - // make the bounding rectange completely cover the drawn stroke. - float penSize = drawing.currentAttributeSet_->penSize.width(); - stroke->boundingRect.setSize( QSize( penSize, penSize ) ); - stroke->boundingRect.translate( -( penSize / 2 ), -( penSize / 2 ) ); - } - - stroke->attributes = drawing.currentAttributeSet_; - stroke->info = drawing.currentStrokeInfo_; - stroke->metrics = drawing.currentMetrics_; - stroke->transform = drawing.currentTransform_; + // And finish it out + stroke->addPoints( list ); + stroke->finalize(); // Update the entire drawing's bounding rect - drawing.boundingRect_ = drawing.boundingRect_.united( stroke->boundingRect ); + drawing->boundingRect_ = drawing->boundingRect_.united( stroke->boundingRect() ); - qint64 remainingPayloadSize = payloadSize - ( source.pos() - initialPos ); + qint64 remainingPayloadSize = payloadSize - ( dataSource->pos() - initialPos ); if( remainingPayloadSize > 0 ) { - analyzePayload( source, + analyzePayload( streamData, remainingPayloadSize, - "Remaining stroke data: " + QString::number(remainingPayloadSize) + + "Remaining stroke data: " + QString::number( remainingPayloadSize ) + " bytes" ); } @@ -1032,13 +1403,16 @@ IsfError TagsParser::parseStroke( DataSource &source, Drawing &drawing ) /** * Read a stroke description block. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseStrokeDescBlock( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseStrokeDescBlock( StreamData* streamData, Drawing* drawing ) { - quint64 payloadSize = decodeUInt( source ); + Q_UNUSED( drawing ); + + DataSource* dataSource = streamData->dataSource; + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -1052,25 +1426,25 @@ IsfError TagsParser::parseStrokeDescBlock( DataSource &source, Drawing &drawing qDebug() << "- Finding stroke description properties in the next" << payloadSize << "bytes"; #endif - drawing.strokeInfo_.append( new StrokeInfo() ); - StrokeInfo *info = drawing.strokeInfo_.last(); + streamData->strokeInfos.append( new StrokeInfo() ); + StrokeInfo* info = streamData->strokeInfos.last(); // set this once when we get the first TAG_STROKE_DESC_BLOCK. then, // everytime we get a SIDX we can update it. if we don't do this // then the first stroke will have the same stroke info as the last stroke. - if ( drawing.currentStrokeInfo_ == &drawing.defaultStrokeInfo_ ) - { - drawing.currentStrokeInfo_ = info; - } +// if ( drawing->currentStrokeInfo_ == &drawing->defaultStrokeInfo_ ) +// { +// drawing->currentStrokeInfo_ = info; +// } #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Added stroke info block #" << ( drawing.strokeInfo_.count() - 1 ); + qDebug() << "- Added stroke info block #" << ( streamData->strokeInfos.count() - 1 ); #endif - qint64 payloadEnd = source.pos() + payloadSize; - while( source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { - quint64 tag = decodeUInt( source ); + quint64 tag = decodeUInt( dataSource ); switch( tag ) { @@ -1127,14 +1501,16 @@ IsfError TagsParser::parseStrokeDescBlock( DataSource &source, Drawing &drawing /** * Read a stroke description table. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param drawing Drawing into which the data obtained from the tag should be read * @return IsfError */ -IsfError TagsParser::parseStrokeDescTable( DataSource &source, Drawing &drawing ) +IsfError TagsParser::parseStrokeDescTable( StreamData* streamData, Drawing* drawing ) { IsfError result = ISF_ERROR_NONE; - quint64 payloadSize = decodeUInt( source ); + DataSource* dataSource = streamData->dataSource; + + quint64 payloadSize = decodeUInt( dataSource ); if( payloadSize == 0 ) { @@ -1144,10 +1520,10 @@ IsfError TagsParser::parseStrokeDescTable( DataSource &source, Drawing &drawing return ISF_ERROR_INVALID_PAYLOAD; } - qint64 payloadEnd = source.pos() + payloadSize; - while( result == ISF_ERROR_NONE && source.pos() < payloadEnd && ! source.atEnd() ) + qint64 payloadEnd = dataSource->pos() + payloadSize; + while( result == ISF_ERROR_NONE && dataSource->pos() < payloadEnd && ! dataSource->atEnd() ) { - result = parseStrokeDescBlock( source, drawing ); + result = parseStrokeDescBlock( streamData, drawing ); } return result; @@ -1163,15 +1539,15 @@ IsfError TagsParser::parseStrokeDescTable( DataSource &source, Drawing &drawing * - a payload size (multibyte-encoded) * - the actual tag data * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param tagName Name of the tag if known, index number if not * @return Byte array with the contents of the tag */ -QByteArray TagsParser::analyzePayload( DataSource &source, const QString &tagName ) +QByteArray TagsParser::analyzePayload( StreamData* streamData, const QString& tagName ) { - quint64 payloadSize = decodeUInt( source ); + quint64 payloadSize = decodeUInt( streamData->dataSource ); - return analyzePayload( source, + return analyzePayload( streamData, payloadSize, "Got tag: " + tagName + " with " + QString::number( payloadSize ) + " bytes of payload" ); } @@ -1183,12 +1559,12 @@ QByteArray TagsParser::analyzePayload( DataSource &source, const QString &tagNam * * This variant can be used to print out an arbitrarily sized data block. * - * @param source Data Source where to read bytes from + * @param streamData StreamData object with the stream data * @param payloadSize Size of the payload to print out * @param message Message to show as label for the printed out data * @return Byte array with the contents of the tag */ -QByteArray TagsParser::analyzePayload( DataSource &source, const quint64 payloadSize, const QString &message ) +QByteArray TagsParser::analyzePayload( StreamData* streamData, const quint64 payloadSize, const QString& message ) { QByteArray result; QByteArray output; @@ -1200,7 +1576,7 @@ QByteArray TagsParser::analyzePayload( DataSource &source, const quint64 payload #ifndef ISFQT_DEBUG_VERBOSE Q_UNUSED( message ) - source.seekRelative( +payloadSize ); + streamData->dataSource->seekRelative( +payloadSize ); return output; #endif @@ -1211,9 +1587,9 @@ QByteArray TagsParser::analyzePayload( DataSource &source, const quint64 payload qDebug() << message; } qDebug() << "--------------------------------------------------------------------"; - while( ! source.atEnd() && pos < payloadSize ) + while( ! streamData->dataSource->atEnd() && pos < payloadSize ) { - quint8 byte = source.getByte(); + quint8 byte = streamData->dataSource->getByte(); result.append( byte ); output.append( QByteArray::number( byte, 16 ).rightJustified( 2, '0').toUpper() + " " ); diff --git a/contrib/isf-qt/src/tagsparser.h b/contrib/isf-qt/src/tagsparser.h index 3b4c718..a83e65d 100644 --- a/contrib/isf-qt/src/tagsparser.h +++ b/contrib/isf-qt/src/tagsparser.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -39,11 +37,7 @@ namespace Isf // Forward declarations - namespace Compress - { - class DataSource; - } - using Compress::DataSource; + class StreamData; class Drawing; @@ -57,27 +51,29 @@ namespace Isf { public: // Static public methods - static IsfError parseCustomTag( DataSource &source, Drawing &drawing, quint64 tagIndex ); - static IsfError parseGuidTable( DataSource &source, Drawing &drawing ); - static IsfError parseHiMetricSize( DataSource &source, Drawing &drawing ); - static IsfError parseInkSpaceRectangle( DataSource &source, Drawing &drawing ); - static IsfError parseAttributeBlock( DataSource &source, Drawing &drawing ); - static IsfError parseAttributeTable( DataSource &source, Drawing &drawing ); - static IsfError parsePersistentFormat( DataSource &source, Drawing &drawing ); - static IsfError parseMetricBlock( DataSource &source, Drawing &drawing ); - static IsfError parseMetricTable( DataSource &source, Drawing &drawing ); - static IsfError parseTransformation( DataSource &source, Drawing &drawing, quint64 transformType ); - static IsfError parseTransformationTable( DataSource &source, Drawing &drawing ); - static IsfError parseStroke( DataSource &source, Drawing &drawing ); - static IsfError parseStrokeDescBlock( DataSource &source, Drawing &drawing ); - static IsfError parseStrokeDescTable( DataSource &source, Drawing &drawing ); + static IsfError nextTag( StreamData* streamData, Drawing* drawing ); + + static IsfError parseCustomTag( StreamData* streamData, Drawing* drawing, quint64 tagIndex ); + static IsfError parseGuidTable( StreamData* streamData, Drawing* drawing ); + static IsfError parseHiMetricSize( StreamData* streamData, Drawing* drawing ); + static IsfError parseInkSpaceRectangle( StreamData* streamData, Drawing* drawing ); + static IsfError parseAttributeBlock( StreamData* streamData, Drawing* drawing ); + static IsfError parseAttributeTable( StreamData* streamData, Drawing* drawing ); + static IsfError parsePersistentFormat( StreamData* streamData, Drawing* drawing ); + static IsfError parseMetricBlock( StreamData* streamData, Drawing* drawing ); + static IsfError parseMetricTable( StreamData* streamData, Drawing* drawing ); + static IsfError parseTransformation( StreamData* streamData, Drawing* drawing, quint64 transformType ); + static IsfError parseTransformationTable( StreamData* streamData, Drawing* drawing ); + static IsfError parseStroke( StreamData* streamData, Drawing* drawing ); + static IsfError parseStrokeDescBlock( StreamData* streamData, Drawing* drawing ); + static IsfError parseStrokeDescTable( StreamData* streamData, Drawing* drawing ); public: // Static public debugging methods - static IsfError parseUnsupported( DataSource &source, const QString &tagName ); + static IsfError parseUnsupported( StreamData* streamData, const QString& tagName ); private: // Static private debugging methods - static QByteArray analyzePayload( DataSource &source, const QString &tagName ); - static QByteArray analyzePayload( DataSource &source, const quint64 payloadSize, const QString &message = QString() ); + static QByteArray analyzePayload( StreamData* streamData, const QString& tagName ); + static QByteArray analyzePayload( StreamData* streamData, const quint64 payloadSize, const QString& message = QString() ); }; } diff --git a/contrib/isf-qt/src/tagswriter.cpp b/contrib/isf-qt/src/tagswriter.cpp index aeaa4ca..82564e5 100644 --- a/contrib/isf-qt/src/tagswriter.cpp +++ b/contrib/isf-qt/src/tagswriter.cpp @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -46,7 +44,7 @@ using namespace Isf::Compress; * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addPersistentFormat( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addPersistentFormat( StreamData* streamData, const Drawing* drawing ) { Q_UNUSED( drawing ); @@ -57,7 +55,7 @@ IsfError TagsWriter::addPersistentFormat( DataSource &source, const Drawing &dra tagContents.prepend( encodeUInt( tagContents.size() ) ); tagContents.prepend( encodeUInt( TAG_PERSISTENT_FORMAT ) ); - source.append( tagContents ); + streamData->dataSource->append( tagContents ); #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Persistent Format version"; @@ -75,19 +73,20 @@ IsfError TagsWriter::addPersistentFormat( DataSource &source, const Drawing &dra * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addHiMetricSize( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addHiMetricSize( StreamData* streamData, const Drawing* drawing ) { QByteArray tagContents; - tagContents.append( encodeInt( drawing.size_.width () ) ); - tagContents.append( encodeInt( drawing.size_.height() ) ); + QPoint size( drawing->boundingRect().bottomRight() ); + tagContents.append( encodeInt( size.x() ) ); + tagContents.append( encodeInt( size.y() ) ); - encodeUInt( source, TAG_HIMETRIC_SIZE ); - encodeUInt( source, tagContents.size() ); - source.append( tagContents ); + encodeUInt( streamData->dataSource, TAG_HIMETRIC_SIZE ); + encodeUInt( streamData->dataSource, tagContents.size() ); + streamData->dataSource->append( tagContents ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Added drawing dimensions:" << drawing.size_; + qDebug() << "- Added drawing dimensions:" << size; #endif return ISF_ERROR_NONE; @@ -105,68 +104,85 @@ IsfError TagsWriter::addHiMetricSize( DataSource &source, const Drawing &drawing * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addAttributeTable( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addAttributeTable( StreamData* streamData, const Drawing* drawing ) { + Q_UNUSED( drawing ); + QByteArray blockData; QByteArray tagContents; AttributeSet defaultAttributeSet; #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Adding" << drawing.attributeSets_.count() << "attributes..."; quint8 counter = 0; #endif - foreach( const AttributeSet *info, drawing.attributeSets_ ) + // Add default attributes if the drawing didn't contain any + if( streamData->attributeSets.isEmpty() ) + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Adding a default attribute set..."; +#endif + AttributeSet set; + streamData->attributeSets.append( set ); + } +#ifdef ISFQT_DEBUG_VERBOSE + else + { + qDebug() << "- Adding" << streamData->attributeSets.count() << "attributes..."; + } +#endif + + foreach( const AttributeSet set, streamData->attributeSets ) { // Add the color to the attribute block - if( info->color != defaultAttributeSet.color ) + if( set.color != defaultAttributeSet.color ) { blockData.append( encodeUInt( GUID_COLORREF ) ); // Prepare the color value, it needs to be stored in BGR format, // in the 24 least significant bits - quint64 value = ( info->color.blue () << 16 ) - | ( info->color.green() << 8 ) - | ( info->color.red () << 0 ); + quint64 value = ( set.color.blue () << 16 ) + | ( set.color.green() << 8 ) + | ( set.color.red () << 0 ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << " - Color:" << info->color.name(); + qDebug() << " - Color:" << set.color.name(); #endif blockData.append( encodeUInt( value ) ); // Add the transparency if needed - if( info->color.alpha() < 255 ) + if( set.color.alpha() < 255 ) { blockData.append( encodeUInt( GUID_TRANSPARENCY ) ); - blockData.append( encodeUInt( info->color.alpha() ) ); + blockData.append( encodeUInt( set.color.alpha() ) ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << " - Alpha:" << info->color.alpha(); + qDebug() << " - Alpha:" << set.color.alpha(); #endif } } // Add the pen size - if( info->penSize != defaultAttributeSet.penSize ) + if( set.penSize != defaultAttributeSet.penSize ) { blockData.append( encodeUInt( GUID_PEN_WIDTH ) ); - blockData.append( encodeUInt( info->penSize.width() * HiMetricToPixel ) ); + blockData.append( encodeUInt( set.penSize.width() * HiMetricToPixel ) ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << " - Pen width:" << ( info->penSize.width() * HiMetricToPixel ); + qDebug() << " - Pen width:" << ( set.penSize.width() * HiMetricToPixel ); #endif - if( info->penSize.width() != info->penSize.height() ) + if( set.penSize.width() != set.penSize.height() ) { blockData.append( encodeUInt( GUID_PEN_HEIGHT ) ); - blockData.append( encodeUInt( info->penSize.height() * HiMetricToPixel ) ); + blockData.append( encodeUInt( set.penSize.height() * HiMetricToPixel ) ); #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << " - Pen height:" << ( info->penSize.height() * HiMetricToPixel ); + qDebug() << " - Pen height:" << ( set.penSize.height() * HiMetricToPixel ); #endif } } // Add the other drawing flags - if( info->flags != defaultAttributeSet.flags ) + if( set.flags != defaultAttributeSet.flags ) { - StrokeFlags flags = info->flags; + StrokeFlags flags = set.flags; if( flags & IsRectangle ) { blockData.append( encodeUInt( GUID_PEN_TIP ) ); @@ -185,9 +201,6 @@ IsfError TagsWriter::addAttributeTable( DataSource &source, const Drawing &drawi } */ - // Add FitToCurve too for now, as a test - flags |= FitToCurve; - // Copy the other flags as they are blockData.append( encodeUInt( GUID_DRAWING_FLAGS ) ); blockData.append( encodeUInt( flags ) ); @@ -207,7 +220,7 @@ IsfError TagsWriter::addAttributeTable( DataSource &source, const Drawing &drawi #endif } - if( drawing.attributeSets_.count() > 1 ) + if( streamData->attributeSets.count() > 1 ) { tagContents.prepend( encodeUInt( tagContents.size() ) ); tagContents.prepend( encodeUInt( TAG_DRAW_ATTRS_TABLE ) ); @@ -217,7 +230,7 @@ IsfError TagsWriter::addAttributeTable( DataSource &source, const Drawing &drawi tagContents.prepend( encodeUInt( TAG_DRAW_ATTRS_BLOCK ) ); } - source.append( tagContents ); + streamData->dataSource->append( tagContents ); return ISF_ERROR_NONE; } @@ -234,27 +247,29 @@ IsfError TagsWriter::addAttributeTable( DataSource &source, const Drawing &drawi * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addMetricsTable( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addMetricsTable( StreamData* streamData, const Drawing* drawing ) { + Q_UNUSED( drawing ); + QByteArray metricData; QByteArray metricBlockData; QByteArray tagData; Metrics defaultMetrics; - Metric *defaultMetric; + Metric* defaultMetric; #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Adding" << drawing.metrics_.count() << "metrics..."; + qDebug() << "- Adding" << streamData->metrics.count() << "metrics..."; quint8 counter = 0; #endif - foreach( const Metrics *metrics, drawing.metrics_ ) + foreach( const Metrics* metrics, streamData->metrics ) { QMapIterator it( metrics->items ); while( it.hasNext() ) { it.next(); - const quint64 &property = it.key (); - const Metric &metric = it.value(); + const quint64& property = it.key (); + const Metric& metric = it.value(); // Skip metrics which are set to the default defaultMetric = &defaultMetrics.items[ property ]; @@ -293,17 +308,17 @@ IsfError TagsWriter::addMetricsTable( DataSource &source, const Drawing &drawing #endif } - if( drawing.metrics_.count() > 1 ) + if( streamData->metrics.count() > 1 ) { tagData.prepend( encodeUInt( TAG_METRIC_TABLE ) ); } - else if ( drawing.metrics_.count() == 1 ) + else if ( streamData->metrics.count() == 1 ) { tagData.prepend( encodeUInt( TAG_METRIC_BLOCK ) ); } // else: don't do anything. - source.append( tagData ); + streamData->dataSource->append( tagData ); return ISF_ERROR_NONE; } @@ -320,8 +335,10 @@ IsfError TagsWriter::addMetricsTable( DataSource &source, const Drawing &drawing * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addTransformationTable( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addTransformationTable( StreamData* streamData, const Drawing* drawing ) { + Q_UNUSED( drawing ); + QByteArray blockData; QByteArray tagContents; quint64 transformTag; @@ -337,11 +354,11 @@ IsfError TagsWriter::addTransformationTable( DataSource &source, const Drawing & */ #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Adding" << drawing.transforms_.count() << "transformations..."; + qDebug() << "- Adding" << streamData->transforms.count() << "transformations..."; quint8 counter = 0; #endif - foreach( const QMatrix *trans, drawing.transforms_ ) + foreach( const QMatrix* trans, streamData->transforms ) { /* * All transforms are written backwards because they're stored my most @@ -443,24 +460,27 @@ IsfError TagsWriter::addTransformationTable( DataSource &source, const Drawing & } - if ( drawing.transforms_.size() == 0 ) + if ( streamData->transforms.size() == 0 ) { #ifdef ISFQT_DEBUG_VERBOSE qDebug() << "- Added default transformation"; #endif - // write the default transform. - const QMatrix *transform = &drawing.defaultTransform_; + // Write the default transform + QMatrix defaultTransform; + defaultTransform.scale( 1.f, 1.f ); + defaultTransform.translate( .0f, .0f ); + tagContents.append( TAG_TRANSFORM_ISOTROPIC_SCALE ); - tagContents.append( encodeFloat( transform->m11() * HiMetricToPixel ) ); + tagContents.append( encodeFloat( defaultTransform.m11() * HiMetricToPixel ) ); } - else if ( drawing.transforms_.size() > 1 ) + else if ( streamData->transforms.size() > 1 ) { tagContents.prepend( encodeUInt( tagContents.size() ) ); tagContents.prepend( encodeUInt( TAG_TRANSFORM_TABLE ) ); } - source.append( tagContents ); + streamData->dataSource->append( tagContents ); return ISF_ERROR_NONE; } @@ -474,76 +494,75 @@ IsfError TagsWriter::addTransformationTable( DataSource &source, const Drawing & * @param drawing Drawing from which to obtain the data to write * @return IsfError */ -IsfError TagsWriter::addStrokes( DataSource &source, const Drawing &drawing ) +IsfError TagsWriter::addStrokes( StreamData* streamData, const Drawing* drawing ) { QByteArray blockData; QByteArray tagContents; #ifdef ISFQT_DEBUG_VERBOSE - qDebug() << "- Adding" << drawing.strokes_.count() << "strokes..."; + qDebug() << "- Adding" << drawing->strokes_.count() << "strokes..."; quint8 counter = 0; #endif // Last set of attibutes applied to a stroke - Metrics *currentMetrics = 0; - AttributeSet *currentAttributeSet = 0; - QMatrix *currentTransform = 0; + AttributeSet currentAttributeSet; + const Metrics* currentMetrics = 0; + const QMatrix* currentTransform = 0; - foreach( const Stroke *stroke, drawing.strokes_ ) + foreach( Stroke* stroke, drawing->strokes_ ) { // There is more than one set of metrics, assign each stroke to its own - if( drawing.metrics_.count() > 1 ) + if( streamData->metrics.count() > 1 ) { // Make sure that the first strokes use the first metrics list (write a MIDX only // when needed) if( currentMetrics == 0 ) { - currentMetrics = drawing.metrics_.first(); + currentMetrics = streamData->metrics.first(); } // Only write a MIDX if this stroke needs different metrics than the last stroke - if( currentMetrics != stroke->metrics && stroke->metrics != 0 ) + Metrics* metrics = stroke->metrics(); + if( metrics && currentMetrics != metrics ) { - currentMetrics = stroke->metrics; + currentMetrics = metrics; blockData.append( encodeUInt( TAG_MIDX ) ); - blockData.append( encodeUInt( drawing.metrics_.indexOf( stroke->metrics ) ) ); + blockData.append( encodeUInt( streamData->metrics.indexOf( metrics ) ) ); } } // There is more than one set of attributes, assign each stroke to its own - if( drawing.attributeSets_.count() > 1 ) + if( streamData->attributeSets.count() > 1 ) { - // Make sure that the first strokes use the first attribute set (write a DIDX only - // when needed) - if( currentAttributeSet == 0 ) - { - currentAttributeSet = drawing.attributeSets_.first(); - } - // Only write a DIDX if this stroke needs a different attribute set than the last stroke - if( currentAttributeSet != stroke->attributes && stroke->attributes != 0 ) + if( currentAttributeSet.color != stroke->color() + || currentAttributeSet.flags != stroke->flags() + || currentAttributeSet.penSize != stroke->penSize() ) { - currentAttributeSet = stroke->attributes; + currentAttributeSet.color = stroke->color(); + currentAttributeSet.flags = stroke->flags(); + currentAttributeSet.penSize = stroke->penSize(); + blockData.append( encodeUInt( TAG_DIDX ) ); - blockData.append( encodeUInt( drawing.attributeSets_.indexOf( stroke->attributes ) ) ); + blockData.append( encodeUInt( streamData->attributeSets.indexOf( currentAttributeSet ) ) ); } } // Make sure that the first strokes use the first transform (write a TIDX only // when needed) - if ( drawing.transforms_.count() > 0 ) + if ( streamData->transforms.count() > 0 ) { if( currentTransform == 0 ) { - currentTransform = drawing.transforms_.first(); + currentTransform = streamData->transforms.first(); } // Only write a TIDX if this stroke needs a different transform than the last stroke - if( currentTransform != stroke->transform && stroke->transform != 0 ) + if( currentTransform != stroke->transform() && stroke->transform() != 0 ) { - currentTransform = stroke->transform; + currentTransform = stroke->transform(); blockData.append( encodeUInt( TAG_TIDX ) ); - blockData.append( encodeUInt( drawing.transforms_.indexOf( stroke->transform ) ) ); + blockData.append( encodeUInt( streamData->transforms.indexOf( stroke->transform() ) ) ); } } @@ -557,7 +576,7 @@ IsfError TagsWriter::addStrokes( DataSource &source, const Drawing &drawing ) // Write this stroke in the stream QList xPoints, yPoints; - foreach( const Point &point, stroke->points ) + foreach( const Point& point, stroke->points() ) { xPoints.append( point.position.x() ); yPoints.append( point.position.y() ); @@ -568,7 +587,7 @@ IsfError TagsWriter::addStrokes( DataSource &source, const Drawing &drawing ) // The stroke is made by tag, then payload size, then number of points, then // the compressed points data - blockData.prepend( encodeUInt( stroke->points.count() ) ); + blockData.prepend( encodeUInt( stroke->points().count() ) ); blockData.prepend( encodeUInt( blockData.size() ) ); blockData.prepend( encodeUInt( TAG_STROKE ) ); @@ -580,7 +599,80 @@ IsfError TagsWriter::addStrokes( DataSource &source, const Drawing &drawing ) #endif } - source.append( tagContents ); + streamData->dataSource->append( tagContents ); + + return ISF_ERROR_NONE; +} + + + +/** + * Prepare the stream data for writing. + * + * @param source Data Source where to write bytes to + * @param drawing Drawing from which to obtain the data to write + * @return IsfError + */ +IsfError TagsWriter::prepare( StreamData* streamData, const Drawing* drawing ) +{ +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Optimizing data..."; +#endif + + streamData->attributeSets.clear(); + streamData->metrics.clear(); + streamData->transforms.clear(); + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << " - " << drawing->strokes_.count() << "strokes to optimize"; +#endif + + // Prepare the list of attributes + foreach( Stroke* stroke, drawing->strokes_ ) + { + AttributeSet set; + set.color = stroke->color(); + set.flags = stroke->flags(); + set.penSize = stroke->penSize(); + + Metrics* metrics = stroke->metrics(); + QMatrix* transform = stroke->transform(); + + if( ! streamData->attributeSets.contains( set ) ) + { + streamData->attributeSets.append( set ); + } + if( metrics && ! streamData->metrics.contains( metrics ) ) + { + streamData->metrics.append( metrics ); + } + if( transform && ! streamData->transforms.contains( transform ) ) + { + streamData->transforms.append( transform ); + } + } + +#ifdef ISFQT_DEBUG_VERBOSE + int count = 0; +#endif + + // Add default elements if the drawing didn't contain any + if( streamData->attributeSets.isEmpty() ) + { +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << " - Added " << count << "default elements"; +#endif + AttributeSet set; + streamData->attributeSets.append( set ); + } + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << " - Added " << count << "default elements"; +#endif + +#ifdef ISFQT_DEBUG_VERBOSE + qDebug() << "- Optimization phase complete"; +#endif return ISF_ERROR_NONE; } diff --git a/contrib/isf-qt/src/tagswriter.h b/contrib/isf-qt/src/tagswriter.h index 4de19d7..a106ae4 100644 --- a/contrib/isf-qt/src/tagswriter.h +++ b/contrib/isf-qt/src/tagswriter.h @@ -4,9 +4,7 @@ * * * Copyright (C) 2009 by Adam Goossens * * adam@kmess.org * - ***************************************************************************/ - -/*************************************************************************** + * * * This program 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 * @@ -52,13 +50,13 @@ namespace Isf class TagsWriter { public: // Static public methods - static IsfError addPersistentFormat( DataSource &source, const Drawing &drawing ); - static IsfError addHiMetricSize( DataSource &source, const Drawing &drawing ); - static IsfError addAttributeTable( DataSource &source, const Drawing &drawing ); - static IsfError addMetricsTable( DataSource &source, const Drawing &drawing ); - static IsfError addTransformationTable( DataSource &source, const Drawing &drawing ); - static IsfError addStrokes( DataSource &source, const Drawing &drawing ); - + static IsfError addPersistentFormat( StreamData* streamData, const Drawing* drawing ); + static IsfError addHiMetricSize( StreamData* streamData, const Drawing* drawing ); + static IsfError addAttributeTable( StreamData* streamData, const Drawing* drawing ); + static IsfError addMetricsTable( StreamData* streamData, const Drawing* drawing ); + static IsfError addTransformationTable( StreamData* streamData, const Drawing* drawing ); + static IsfError addStrokes( StreamData* streamData, const Drawing* drawing ); + static IsfError prepare( StreamData* streamData, const Drawing* drawing ); }; } diff --git a/contrib/isf-qt/tests/CMakeLists.txt b/contrib/isf-qt/tests/CMakeLists.txt index 285d1af..79c9f98 100644 --- a/contrib/isf-qt/tests/CMakeLists.txt +++ b/contrib/isf-qt/tests/CMakeLists.txt @@ -7,7 +7,7 @@ MACRO( add_multiple_tests ) QT4_AUTOMOC( test_${test}.cpp ) ADD_EXECUTABLE( test_${test} test_${test}.cpp ) ADD_TEST( libisf-${test} test_${test} ) - TARGET_LINK_LIBRARIES( test_${test} ${QT_QTTEST_LIBRARY} ${QT_QTCORE_LIBRARY} isf-qt ) + TARGET_LINK_LIBRARIES( test_${test} ${QT_QTTEST_LIBRARY} ${QT_QTGUI_LIBRARY} isf-qt ) ENDFOREACH( test ) ENDMACRO( add_multiple_tests ) @@ -15,6 +15,7 @@ ADD_MULTIPLE_TESTS( isfdrawing multibyte_coding algorithms + png_fortification ) diff --git a/contrib/isf-qt/tests/decode/main.cpp b/contrib/isf-qt/tests/decode/main.cpp index 5068a53..72d48dc 100644 --- a/contrib/isf-qt/tests/decode/main.cpp +++ b/contrib/isf-qt/tests/decode/main.cpp @@ -130,7 +130,7 @@ class TestDecode : public QMainWindow, private Ui::TestDecode // read some test raw ISF data from a file on the filesystem and // return it as a QByteArray. - QByteArray readTestIsfData( const QString &filename ) + QByteArray readTestIsfData( const QString& filename ) { QFile file( filename ); if ( !file.exists() ) @@ -154,7 +154,7 @@ class TestDecode : public QMainWindow, private Ui::TestDecode // read some test raw ISF data from a file on the filesystem and // return it as a QByteArray. - void saveTestIsfData( const QByteArray &data ) + void saveTestIsfData( const QByteArray& data ) { static int number = 1; QString fileName( "test" + QString::number( number ) + "." ); diff --git a/contrib/isf-qt/tests/inkedit/main.cpp b/contrib/isf-qt/tests/inkedit/main.cpp index 30f7127..caa35b5 100644 --- a/contrib/isf-qt/tests/inkedit/main.cpp +++ b/contrib/isf-qt/tests/inkedit/main.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include @@ -46,22 +47,24 @@ TestInkEdit::TestInkEdit() connect( cmdSave_, SIGNAL(clicked()), this, SLOT( saveInk() ) ); connect( cmdLoad_, SIGNAL(clicked()), this, SLOT( loadInk() ) ); connect( cmdClear_, SIGNAL(clicked()), this, SLOT( clearInk() ) ); - + connect( cmdStrokeColor_, SIGNAL(clicked()), this, SLOT( chooseColor() ) ); connect( cmdCanvasColor_, SIGNAL(clicked()), this, SLOT( chooseColor() ) ); - + + connect( editor_, SIGNAL(inkChanged()), this, SLOT( inkChanged() ) ); + QButtonGroup *grp = new QButtonGroup( this ); grp->addButton( rbDrawing_ ); grp->addButton( rbEraser_ ); - + connect( grp, SIGNAL( buttonClicked( QAbstractButton * ) ), this, SLOT( penTypeChanged( QAbstractButton * ) ) ); - + connect( spinWidth_, SIGNAL( valueChanged( int ) ), editor_, SLOT( setPenSize( int ) ) ); editor_->setPenSize( spinWidth_->value() ); /* setWindowTitle("Ink Edit Test"); - + editor_ = new Isf::InkEdit(); editor_->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) ); @@ -72,29 +75,29 @@ TestInkEdit::TestInkEdit() cmdSave_ = new QPushButton(); cmdSave_->setText( "Save Ink" ); connect( cmdSave_, SIGNAL(clicked()), this, SLOT( saveInk() ) ); - + cmdLoad_ = new QPushButton(); cmdLoad_->setText( "Load Ink" ); connect( cmdLoad_, SIGNAL(clicked()), this, SLOT( loadInk() ) ); - + QPushButton *cmdClear_ = new QPushButton(); cmdClear_->setText( "Clear Ink" ); connect( cmdClear_, SIGNAL(clicked()), this, SLOT( clearInk() ) ); QVBoxLayout *layout = new QVBoxLayout(); QHBoxLayout *strokeBtnLayout = new QHBoxLayout(); - + layout->addWidget( sayLabel_ ); layout->addWidget( editor_ ); - + QHBoxLayout *ctlBtnLayout = new QHBoxLayout(); ctlBtnLayout->addWidget(cmdSave_); ctlBtnLayout->addWidget(cmdLoad_); ctlBtnLayout->addWidget(cmdClear_); layout->addLayout( ctlBtnLayout ); - + setLayout( layout ); */ } @@ -135,7 +138,7 @@ void TestInkEdit::saveInk() { QString filter; QString saveFile = QFileDialog::getSaveFileName( this, "Save Ink", QString(), "Raw ISF (*.isf);;base64-encoded ISF (*.isf64)", &filter ); - if ( saveFile != QString() ) + if ( saveFile != QString() ) { QFile file(saveFile); file.open(QIODevice::WriteOnly); @@ -148,18 +151,18 @@ void TestInkEdit::saveInk() { editor_->save( file ); } - + file.close(); - + QMessageBox::information(0, "Save complete", "Saved to " + saveFile ); } } -void TestInkEdit::loadInk() +void TestInkEdit::loadInk() { QString filter; QString filename = QFileDialog::getOpenFileName( this, "Open Ink", QString(), "Raw ISF (*.isf);;base64-encoded ISF (*.isf64)", &filter ); - if ( ! filename.isEmpty() ) + if ( ! filename.isEmpty() ) { QFile file(filename); file.open(QIODevice::ReadOnly); @@ -170,7 +173,7 @@ void TestInkEdit::loadInk() // got some ink. Isf::Drawing *drawing = &Isf::Stream::reader(data); - + editor_->setDrawing( drawing ); editor_->updateGeometry(); @@ -182,12 +185,20 @@ void TestInkEdit::clearInk() editor_->clear(); } +void TestInkEdit::inkChanged() +{ + emptyDrawingCheckbox_->setChecked( editor_->isEmpty() ); + + statusLabel_->setText( "Drawing changed!" ); + QTimer::singleShot( 3000, statusLabel_, SLOT(clear()) ); +} + int main( int argc, char **argv ) { QApplication app( argc, argv ); TestInkEdit edit; edit.show(); - + return app.exec(); } diff --git a/contrib/isf-qt/tests/inkedit/main.h b/contrib/isf-qt/tests/inkedit/main.h index 5bc2602..c89464a 100644 --- a/contrib/isf-qt/tests/inkedit/main.h +++ b/contrib/isf-qt/tests/inkedit/main.h @@ -40,19 +40,20 @@ class TestInkEdit : public QWidget, public Ui::TestInkEdit { Q_OBJECT - + public: - + TestInkEdit(); ~TestInkEdit(); - + public slots: - + void saveInk(); void loadInk(); void clearInk(); void penTypeChanged( QAbstractButton *button ); void chooseColor(); + void inkChanged(); }; diff --git a/contrib/isf-qt/tests/inkedit/testinkedit.ui b/contrib/isf-qt/tests/inkedit/testinkedit.ui index 268e747..4e0d57b 100644 --- a/contrib/isf-qt/tests/inkedit/testinkedit.ui +++ b/contrib/isf-qt/tests/inkedit/testinkedit.ui @@ -130,6 +130,9 @@ p, li { white-space: pre-wrap; } Drawing + + true + @@ -142,6 +145,19 @@ p, li { white-space: pre-wrap; } + + + + false + + + Is empty? + + + true + + + @@ -161,6 +177,9 @@ p, li { white-space: pre-wrap; } + + + diff --git a/contrib/isf-qt/tests/test_isfdrawing.cpp b/contrib/isf-qt/tests/test_isfdrawing.cpp index 0ab77e1..a3f7274 100644 --- a/contrib/isf-qt/tests/test_isfdrawing.cpp +++ b/contrib/isf-qt/tests/test_isfdrawing.cpp @@ -116,7 +116,7 @@ void TestIsfDrawing::createDrawing() // read some test raw ISF data from a file on the filesystem and // return it as a QByteArray. -void TestIsfDrawing::readTestIsfData( const QString &filename, QByteArray &byteArray ) +void TestIsfDrawing::readTestIsfData( const QString& filename, QByteArray& byteArray ) { QFile file( filename ); QVERIFY( file.exists() ); diff --git a/contrib/isf-qt/tests/test_isfdrawing.h b/contrib/isf-qt/tests/test_isfdrawing.h index 3d6c2a5..c5fa64f 100644 --- a/contrib/isf-qt/tests/test_isfdrawing.h +++ b/contrib/isf-qt/tests/test_isfdrawing.h @@ -23,7 +23,7 @@ class TestIsfDrawing : public QObject Q_OBJECT public: TestIsfDrawing(); - void readTestIsfData( const QString &filename, QByteArray &byteArray ); + void readTestIsfData( const QString& filename, QByteArray& byteArray ); private slots: void emptyConstructor_NullDrawing(); diff --git a/contrib/isf-qt/tests/test_multibyte_coding.cpp b/contrib/isf-qt/tests/test_multibyte_coding.cpp index 0ae5a06..3d43c4d 100644 --- a/contrib/isf-qt/tests/test_multibyte_coding.cpp +++ b/contrib/isf-qt/tests/test_multibyte_coding.cpp @@ -138,7 +138,7 @@ void TestMultibyteCoding::unsignedDecode() data.append( Q_UINT64_C(0x7D) ); // decimal 125 data.reset(); // To re-read the appended bytes - result = Isf::Compress::decodeUInt( data ); + result = Isf::Compress::decodeUInt( &data ); QVERIFY(result == Q_UINT64_C(0x7D) ); @@ -150,7 +150,7 @@ void TestMultibyteCoding::unsignedDecode() data.append( Q_UINT64_C(0x01) ); data.reset(); // To re-read the appended bytes - result = Isf::Compress::decodeUInt( data ); + result = Isf::Compress::decodeUInt( &data ); QVERIFY( result == Q_UINT64_C(0x80) ); data.clear(); @@ -162,7 +162,7 @@ void TestMultibyteCoding::unsignedDecode() data.append( Q_UINT64_C(0x03) ); data.reset(); // To re-read the appended bytes - result = Isf::Compress::decodeUInt( data ); + result = Isf::Compress::decodeUInt( &data ); QVERIFY( result == Q_UINT64_C(0xFFFF) ); } @@ -189,7 +189,7 @@ void TestMultibyteCoding::signedDecode() data.append( (char)((0x0A << 1) | 0x01) ); data.reset(); // To re-read the appended byte - result = Isf::Compress::decodeInt( data ); + result = Isf::Compress::decodeInt( &data ); QVERIFY( result == Q_INT64_C(-10) ); data.clear(); @@ -200,7 +200,7 @@ void TestMultibyteCoding::signedDecode() data.append( Q_INT64_C(0x01) ); data.reset(); // To re-read the appended byte - result = Isf::Compress::decodeInt( data ); + result = Isf::Compress::decodeInt( &data ); QVERIFY( result == Q_INT64_C(-64) ); data.clear(); @@ -211,7 +211,7 @@ void TestMultibyteCoding::signedDecode() data.append( Q_INT64_C(0x01) ); data.reset(); // To re-read the appended byte - result = Isf::Compress::decodeInt( data ); + result = Isf::Compress::decodeInt( &data ); QVERIFY( result == Q_INT64_C(100) ); data.clear(); @@ -222,7 +222,7 @@ void TestMultibyteCoding::signedDecode() data.append( Q_INT64_C(0x07) ); data.reset(); // To re-read the appended byte - result = Isf::Compress::decodeInt( data ); + result = Isf::Compress::decodeInt( &data ); QVERIFY( result == Q_INT64_C(-500) ); } @@ -254,7 +254,7 @@ void TestMultibyteCoding::floatDecode() data.append( Q_INT64_C(0xC1) ); data.reset(); // To re-read the appended bytes - result = Isf::Compress::decodeFloat( data ); + result = Isf::Compress::decodeFloat( &data ); QVERIFY( result == -12.345678901f ); } diff --git a/contrib/isf-qt/tests/test_png_fortification.cpp b/contrib/isf-qt/tests/test_png_fortification.cpp new file mode 100644 index 0000000..6d0e6fc --- /dev/null +++ b/contrib/isf-qt/tests/test_png_fortification.cpp @@ -0,0 +1,90 @@ +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA.*/ + +#include "test_png_fortification.h" + +#include + +#include "isfqt-internal.h" + +#include +#include + + +using namespace Isf; +using namespace Isf::Compress; + + + + +void TestPngFortification::testEncode() +{ + QPixmap pix( QSize( 135, 114 ) ); + pix.fill( Qt::transparent ); + qDebug() << "pix size:" << pix.size(); + + qDebug() << "#################### ENCODER TEST ####################"; + + QFile file( "../../tests/test2.isf" ); + QVERIFY( file.exists() ); + + // read file into qbytearray. + QVERIFY( file.open( QIODevice::ReadOnly ) ); + + Drawing drawing = Stream::reader( file.readAll(), false ); + + QVERIFY( ! drawing.isNull() ); + + QByteArray byteArray( Stream::writerPng( drawing, false ) ); + + QVERIFY( ! byteArray.isEmpty() ); + + QImage img = QImage::fromData( byteArray, "PNG" ); + + QVERIFY( ! img.isNull() ); + qDebug() << "Image size:" << img.size(); + + QVERIFY( tempFile.open() ); + + tempFile.write( byteArray ); + tempFile.close(); +} + + +void TestPngFortification::testDecode() +{ + qDebug() << "#################### DECODER TEST ####################"; + + QVERIFY( tempFile.exists() ); + + // read file and convert to qbytearray. + QVERIFY( tempFile.open() ); + + QByteArray byteArray( tempFile.readAll() ); + + Drawing drawing = Stream::readerPng( byteArray, false ); + + QVERIFY( ! drawing.isNull() ); + + qDebug() << "Drawing size:" << drawing.size(); +} + + + +QTEST_MAIN(TestPngFortification) + + + +#include "test_png_fortification.moc" diff --git a/contrib/isf-qt/tests/test_png_fortification.h b/contrib/isf-qt/tests/test_png_fortification.h new file mode 100644 index 0000000..7befdca --- /dev/null +++ b/contrib/isf-qt/tests/test_png_fortification.h @@ -0,0 +1,36 @@ +/* + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2 as published by the Free Software Foundation. + + 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA.*/ + +#ifndef TESTPNG_FORTIFICATION_H +#define TESTPNG_FORTIFICATION_H + +#include +#include + + + +class TestPngFortification : public QObject +{ +Q_OBJECT +private slots: + void testEncode(); + void testDecode(); + +private: + + QTemporaryFile tempFile; +}; + +#endif // TESTPNG_FORTIFICATION_H diff --git a/data/kmess.desktop b/data/kmess.desktop index ee7cde3..36caed2 100644 --- a/data/kmess.desktop +++ b/data/kmess.desktop @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 Name=KMess Exec=kmess -caption "%c" %i Icon=kmess diff --git a/data/kmess.notifyrc b/data/kmess.notifyrc index 68d06ec..9ac2573 100644 --- a/data/kmess.notifyrc +++ b/data/kmess.notifyrc @@ -2,6 +2,10 @@ Name=KMess IconName=kmess Comment=KMess Messenger Client +# Please note that all the events listed in this file are implemented +# differently; apart from knotify, in the MacNotification class in +# KMess. It can be found in src/notification. If you modify this file, +# please keep that one up to date too. [Event/contact online] Name=Contact Online diff --git a/data/sounds/kmess_chat.mp3 b/data/sounds/kmess_chat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e48b0a463f4c770aa300a816106295e56be4f76c GIT binary patch literal 55081 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

kr$ZM&Nrp&g6x!_p82lsi7&*xzfRSw}s{{@-sq_ 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 literal 0 HcmV?d00001 diff --git a/data/sounds/kmess_msg.mp3 b/data/sounds/kmess_msg.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b3a6e7b964d48540cc85df9b22e716a569f4e81e GIT binary patch literal 47976 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ℑJ9!q?!nu!R|JMG-guMcmM)HiL}nS($Qcse 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 - Memcheck:Param - write(buf) - fun:__write_nocancel - obj:/usr/lib/libICE.so.6.3.0 - fun:_IceWrite - fun:IceFlush - fun:_ZL14sm_setPropertyPKcS0_iP11SmPropValue - fun:_ZL14sm_setPropertyRK7QStringS1_ - fun:_ZL22sm_performSaveYourselfP22QSessionManagerPrivate - fun:_ZL23sm_saveYourselfCallbackP8_SmcConnPviiii - fun:_SmcProcessMessage - fun:IceProcessMessages - fun:_ZN17QSmSocketReceiver11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv -} -{ - - Memcheck:Cond - fun:BN_mod_inverse - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:RSA_verify - fun:EVP_VerifyFinal - fun:ASN1_item_verify - obj:/lib/libcrypto.so.0.9.8 - fun:X509_verify_cert - fun:ssl_verify_cert_chain - fun:ssl3_get_server_certificate - fun:ssl3_connect -} -{ - - Memcheck:Cond - fun:BN_div - fun:BN_nnmod - fun:BN_mod_inverse - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:RSA_verify - fun:EVP_VerifyFinal - fun:ASN1_item_verify - obj:/lib/libcrypto.so.0.9.8 - fun:X509_verify_cert - fun:ssl_verify_cert_chain -} -{ - - Memcheck:Cond - fun:BN_div - fun:BN_nnmod - fun:BN_mod_inverse - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:RSA_verify - fun:EVP_VerifyFinal - fun:ASN1_item_verify - obj:/lib/libcrypto.so.0.9.8 - fun:X509_verify_cert - fun:ssl_verify_cert_chain -} -{ - - Memcheck:Cond - fun:BN_mod_inverse - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:ssl3_send_client_key_exchange - fun:ssl3_connect - fun:_ZN24QSslSocketBackendPrivate14testConnectionEv - fun:_ZN24QSslSocketBackendPrivate8transmitEv - fun:_ZN10QSslSocket11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv - fun:_ZN22QAbstractSocketPrivate19canReadNotificationEv - fun:_ZN13QReadNotifier5eventEP6QEvent -} -{ - - Memcheck:Cond - fun:BN_div - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:ssl3_send_client_key_exchange - fun:ssl3_connect - fun:_ZN24QSslSocketBackendPrivate14testConnectionEv - fun:_ZN24QSslSocketBackendPrivate8transmitEv - fun:_ZN10QSslSocket11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv - fun:_ZN22QAbstractSocketPrivate19canReadNotificationEv - fun:_ZN13QReadNotifier5eventEP6QEvent -} -{ - - Memcheck:Cond - fun:deflate - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - fun:png_write_row - fun:png_write_image - fun:_ZN15QPNGImageWriter10writeImageERK6QImageiRK7QStringii - fun:_ZN11QPngHandler5writeERK6QImage - fun:_ZN12QImageWriter5writeERK6QImage - fun:_ZlsR11QDataStreamRK6QImage - fun:_ZlsR11QDataStreamRK7QPixmap - fun:_ZN20KNotificationManager6notifyEP13KNotificationRK7QPixmapRK11QStringListRK5QListI5QPairI7QStringSA_EERKSA_ -} -{ - - Memcheck:Value8 - fun:crc32 - obj:/usr/lib/libpng12.so.0.27.0 - fun:png_write_chunk_data - fun:png_write_chunk - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - fun:png_write_row - fun:png_write_image - fun:_ZN15QPNGImageWriter10writeImageERK6QImageiRK7QStringii - fun:_ZN11QPngHandler5writeERK6QImage -} -{ - - Memcheck:Value8 - fun:crc32 - obj:/usr/lib/libpng12.so.0.27.0 - fun:png_write_chunk_data - fun:png_write_chunk - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - obj:/usr/lib/libpng12.so.0.27.0 - fun:png_write_row - fun:png_write_image - fun:_ZN15QPNGImageWriter10writeImageERK6QImageiRK7QStringii - fun:_ZN11QPngHandler5writeERK6QImage -} -{ - - Memcheck:Param - writev(vector[...]) - fun:writev - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - obj:/lib/libdbus-1.so.3.4.0 - fun:dbus_connection_send_with_reply - fun:_ZN22QDBusConnectionPrivate18sendWithReplyAsyncERK12QDBusMessagei - fun:_ZN22QDBusConnectionPrivate18sendWithReplyAsyncERK12QDBusMessageP7QObjectPKcS6_i - fun:_ZNK15QDBusConnection16callWithCallbackERK12QDBusMessageP7QObjectPKcS6_i -} -{ - - Memcheck:Param - write(buf) - obj:/lib/libc-2.9.so - obj:/usr/lib/libICE.so.6.3.0 - fun:_IceWrite - fun:IceFlush - fun:SmcCloseConnection - fun:_ZN15QSessionManagerD0Ev - fun:_ZN12QApplicationD2Ev - fun:_ZN16KMessApplicationD1Ev - fun:main -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN7QString7reallocEi - fun:_ZN7QString6resizeEi - fun:_ZN7QString8fromUtf8EPKci - fun:_ZL26fromPercentEncodingMutableP10QByteArray - fun:_ZNK11QUrlPrivate5parseENS_12ParseOptionsE - fun:_ZNK4QUrl7isValidEv - fun:_ZN4KUrl14_setEncodedUrlERK10QByteArray - fun:_ZN4KUrlC1ERK7QString - fun:_ZN5khtml6Loader20servePendingRequestsEv - fun:_ZN5khtml19CachedCSSStyleSheetC1EPNS_9DocLoaderERKN3DOM9DOMStringEN3KIO12CacheControlEPKc - fun:_ZN5khtml5Cache13requestObjectINS_19CachedCSSStyleSheetELNS_12CachedObject4TypeE1EEEPT_PNS_9DocLoaderERK4KUrlPKc -} -{ - - Memcheck:Leak - fun:malloc - obj:/usr/lib/libxml2.so.2.6.32 - fun:xmlSAX2StartElementNs - obj:/usr/lib/libxml2.so.2.6.32 - fun:xmlParseElement - fun:xmlParseContent - fun:xmlParseElement - fun:xmlParseDocument - fun:xmlSAXParseMemoryWithData - fun:_ZN17XslTransformation13setStylesheetERK7QString - fun:_ZN16ChatMessageStyle8setStyleERK7QString - fun:_ZN15ChatMessageView15updateChatStyleEv -} -{ - - Memcheck:Leak - fun:_Znwm - fun:_ZN19QDockAreaLayoutInfo12restoreStateER11QDataStreamR5QListIP11QDockWidgetEb - fun:_ZN15QDockAreaLayout12restoreStateER11QDataStreamRK5QListIP11QDockWidgetEb - fun:_ZN22QMainWindowLayoutState11checkFormatER11QDataStreamb - fun:_ZN22QMainWindowLayoutState12restoreStateER11QDataStreamRKS_ - fun:_ZN17QMainWindowLayout12restoreStateER11QDataStream - fun:_ZN11QMainWindow12restoreStateERK10QByteArrayi - fun:_ZN11KMainWindow23applyMainWindowSettingsERK12KConfigGroupb - fun:_ZN13KXmlGuiWindow23applyMainWindowSettingsERK12KConfigGroupb - fun:_ZN10ChatWindow10initializeEv - fun:_ZN10ChatMaster16createChatWindowEP4Chat - fun:_ZN10ChatMaster10createChatEP24MsnSwitchboardConnectionb -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN8QMapData11node_createEPPNS_4NodeEi - fun:_ZN4QMapI10QByteArray11QStringListE11node_createEP8QMapDataPPNS3_4NodeERKS0_RKS1_ - fun:_ZNK13KStandardDirs12resourceDirsEPKc - fun:_ZN10KIconThemeC1ERK7QStringS2_ - fun:_ZN18KIconLoaderPrivate14initIconThemesEv - fun:_ZN11KIconLoader9addAppDirERK7QString - fun:_ZN16KMessApplication15initializePathsEv - fun:_ZN16KMessApplicationC1Ev - fun:main -} -{ - - Memcheck:Leak - fun:malloc - obj:/usr/lib/libxslt.so.1.1.24 - fun:xsltParseStylesheetProcess - fun:xsltParseStylesheetImportedDoc - fun:xsltParseStylesheetDoc - fun:_ZN17XslTransformation13setStylesheetERK7QString - fun:_ZN16ChatMessageStyle8setStyleERK7QString - fun:_ZN15ChatMessageView15updateChatStyleEv - fun:_ZN8ChatView10initializeEv - fun:_ZN4Chat10initializeEP24MsnSwitchboardConnection - fun:_ZN10ChatMaster10createChatEP24MsnSwitchboardConnectionb - fun:_ZN10ChatMaster11qt_metacallEN11QMetaObject4CallEiPPv -} -{ - - Memcheck:Leak - fun:malloc - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libexpat.so.1.5.2 - obj:/usr/lib/libexpat.so.1.5.2 - obj:/usr/lib/libexpat.so.1.5.2 - obj:/usr/lib/libexpat.so.1.5.2 - fun:XML_ParseBuffer - fun:FcConfigParseAndLoad - fun:FcConfigParseAndLoad -} -{ - - Memcheck:Leak - fun:malloc - fun:nss_parse_service_list - fun:__nss_database_lookup - obj:* - obj:* - fun:getpwuid_r@@GLIBC_2.2.5 - fun:_ZL22sm_performSaveYourselfP22QSessionManagerPrivate - fun:_ZL23sm_saveYourselfCallbackP8_SmcConnPviiii - fun:_SmcProcessMessage - fun:IceProcessMessages - fun:_ZN17QSmSocketReceiver11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv -} -{ - - Memcheck:Leak - fun:malloc - fun:_XimOpenIM - fun:_XimRegisterIMInstantiateCallback - fun:XRegisterIMInstantiateCallback - fun:_ZN16QXIMInputContextC1Ev - fun:_ZN20QInputContextFactory6createERK7QStringP7QObject - fun:_ZNK12QApplication12inputContextEv - fun:_ZN19QApplicationPrivate14setFocusWidgetEP7QWidgetN2Qt11FocusReasonE - fun:_ZN7QWidget8setFocusEN2Qt11FocusReasonE - fun:_ZN12QApplication15setActiveWindowEP7QWidget - fun:_ZN12QApplication15x11ProcessEventEP7_XEvent - fun:_ZL22x11EventSourceDispatchP8_GSourcePFiPvES1_ -} -{ - - Memcheck:Leak - fun:_Znwm - fun:_ZN5khtml11RenderStyleC1Eb - fun:_ZN5khtml11RenderStyleC1Ev - fun:_ZN5khtml16CSSStyleSelector21setupDefaultRootStyleEPN3DOM12DocumentImplE - fun:_ZN5khtml16CSSStyleSelectorC1EPN3DOM12DocumentImplE7QStringPNS1_18StyleSheetListImplERK4KUrlb - fun:_ZN3DOM12DocumentImpl6attachEv - fun:_ZN9KHTMLPart5beginERK4KUrlii - fun:_ZN15ChatMessageView7setHtmlERK7QString - fun:_ZN15ChatMessageView9clearViewEb - fun:_ZN15ChatMessageViewC1EP7QWidget - fun:_ZN8ChatViewC2EP7QWidget - fun:_ZN4ChatC1EP7QWidget -} -{ - - Memcheck:Leak - fun:malloc - fun:CRYPTO_malloc - fun:c2i_ASN1_BIT_STRING - fun:asn1_ex_c2i - obj:/lib/libcrypto.so.0.9.8 - fun:ASN1_item_ex_d2i - obj:/lib/libcrypto.so.0.9.8 - obj:/lib/libcrypto.so.0.9.8 - fun:ASN1_item_ex_d2i - obj:/lib/libcrypto.so.0.9.8 - obj:/lib/libcrypto.so.0.9.8 - fun:ASN1_item_ex_d2i -} -{ - - Memcheck:Leak - fun:realloc - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - fun:FcDefaultSubstitute - fun:_ZN13QFontDatabase4loadEPK12QFontPrivatei - fun:_ZNK12QFontPrivate15engineForScriptEi - fun:_ZNK12QFontMetrics6heightEv - fun:_ZN10QStatusBar8reformatEv - fun:_ZN10QStatusBar18setSizeGripEnabledEb - fun:_ZN10QStatusBarC2EP7QWidget - fun:_ZN10KStatusBarC1EP7QWidget - fun:_ZN11KMainWindow9statusBarEv -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN8QMapData11node_createEPPNS_4NodeEi - fun:_ZN4QMapI9KEntryKey6KEntryE6insertERKS0_RKS1_ - fun:_ZN9KEntryMap8setEntryERK10QByteArrayS2_S2_6QFlagsINS_11EntryOptionEE - fun:_ZN17KConfigIniBackend11parseConfigERK10QByteArrayR9KEntryMap6QFlagsIN14KConfigBackend11ParseOptionEEb - fun:_ZN17KConfigIniBackend11parseConfigERK10QByteArrayR9KEntryMap6QFlagsIN14KConfigBackend11ParseOptionEE - fun:_ZN14KConfigPrivate16parseConfigFilesEv - fun:_ZN7KConfig20reparseConfigurationEv - fun:_ZN7KConfigC1ERK7QString6QFlagsINS_8OpenFlagEEPKc - fun:_ZN11KMessConfig15getGlobalConfigERK7QString - fun:_ZN13NetworkWindowD0Ev - fun:_ZN13NetworkWindow7destroyEv -} -{ - - Memcheck:Leak - fun:malloc - fun:CRYPTO_malloc - fun:SSL_new - fun:_ZN24QSslSocketBackendPrivate14initSslContextEv - fun:_ZN24QSslSocketBackendPrivate21startClientEncryptionEv - fun:_ZN17QSslSocketPrivate16_q_connectedSlotEv - fun:_ZN10QSslSocket11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv - fun:_ZN22QAbstractSocketPrivate25fetchConnectionParametersEv - fun:_ZN22QAbstractSocketPrivate17_q_testConnectionEv - fun:_ZN14QWriteNotifier5eventEP6QEvent - fun:_ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent -} -{ - - Memcheck:Cond - fun:BN_div - fun:BN_MONT_CTX_set - fun:BN_MONT_CTX_set_locked - obj:/lib/libcrypto.so.0.9.8 - fun:RSA_verify - fun:EVP_VerifyFinal - fun:ASN1_item_verify - obj:/lib/libcrypto.so.0.9.8 - fun:X509_verify_cert - fun:ssl_verify_cert_chain - fun:ssl3_get_server_certificate - fun:ssl3_connect -} -{ - - Memcheck:Leak - fun:_Znwm - fun:_ZNK14QX11PixmapData11paintEngineEv - fun:_ZN8QPainter5beginEP12QPaintDevice - fun:_ZN11KIconEngine6pixmapERK5QSizeN5QIcon4ModeENS3_5StateE - fun:_ZNK5QIcon6pixmapERK5QSizeNS_4ModeENS_5StateE - fun:_ZN14QWidgetPrivate17setWindowIcon_sysEb - fun:_ZN7QWidget6createEmbb - fun:_ZN7QWidget10setVisibleEb - fun:_ZN7QWidget4showEv - fun:_ZN11LikeBackBar8autoMoveEv - fun:_ZN11LikeBackBar11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv -} -{ - - Memcheck:Leak - fun:malloc - fun:CRYPTO_malloc - fun:ssl3_setup_buffers - fun:ssl3_connect - fun:_ZN24QSslSocketBackendPrivate14testConnectionEv - fun:_ZN24QSslSocketBackendPrivate21startClientEncryptionEv - fun:_ZN17QSslSocketPrivate16_q_connectedSlotEv - fun:_ZN10QSslSocket11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv - fun:_ZN22QAbstractSocketPrivate25fetchConnectionParametersEv - fun:_ZN22QAbstractSocketPrivate17_q_testConnectionEv - fun:_ZN14QWriteNotifier5eventEP6QEvent -} -{ - - Memcheck:Leak - fun:malloc - fun:CRYPTO_malloc - fun:ASN1_OBJECT_new - fun:c2i_ASN1_OBJECT - fun:asn1_ex_c2i - obj:/lib/libcrypto.so.0.9.8 - fun:ASN1_item_ex_d2i - obj:/lib/libcrypto.so.0.9.8 - obj:/lib/libcrypto.so.0.9.8 - fun:ASN1_item_ex_d2i - obj:/lib/libcrypto.so.0.9.8 - obj:/lib/libcrypto.so.0.9.8 -} -{ - - Memcheck:Cond - fun:_ZL13PolygonRegionPK6QPointii - fun:_ZN7QRegionC1ERK8QPolygonN2Qt8FillRuleE - fun:_ZN15QX11PaintEngine11updateStateERK17QPaintEngineState - fun:_ZN15QPainterPrivate15updateStateImplEP13QPainterState - fun:_ZN15QPainterPrivate11updateStateEP13QPainterState - fun:_ZN8QPainter13setClipRegionERK7QRegionN2Qt13ClipOperationE - fun:_ZNK14QWidgetPrivate15paintBackgroundEP8QPainterRK7QRegionRK6QPointi - fun:_ZN14QWidgetPrivate10drawWidgetEP12QPaintDeviceRK7QRegionRK6QPointiP8QPainterP19QWidgetBackingStore - fun:_ZN19QWidgetBackingStore4syncEv - fun:_ZN14QWidgetPrivate16syncBackingStoreEv - fun:_ZN7QWidget5eventEP6QEvent - fun:_ZN11QMainWindow5eventEP6QEvent -} -{ - - Memcheck:Cond - fun:_ZL13PolygonRegionPK6QPointii - fun:_ZN7QRegionC1ERK8QPolygonN2Qt8FillRuleE - fun:_ZN15QX11PaintEngine11updateStateERK17QPaintEngineState - fun:_ZN15QPainterPrivate15updateStateImplEP13QPainterState - fun:_ZN15QPainterPrivate11updateStateEP13QPainterState - fun:_ZN8QPainter13setClipRegionERK7QRegionN2Qt13ClipOperationE - fun:_ZNK14QWidgetPrivate15paintBackgroundEP8QPainterRK7QRegionRK6QPointi - fun:_ZN14QWidgetPrivate10drawWidgetEP12QPaintDeviceRK7QRegionRK6QPointiP8QPainterP19QWidgetBackingStore - fun:_ZN19QWidgetBackingStore4syncEv - fun:_ZN14QWidgetPrivate16syncBackingStoreEv - fun:_ZN7QWidget5eventEP6QEvent - fun:_ZN11QMainWindow5eventEP6QEvent -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN7QString7reallocEi - fun:_ZN7QString6resizeEi - fun:_ZN7QString8fromUtf8EPKci - fun:_ZL26fromPercentEncodingMutableP10QByteArray - fun:_ZNK11QUrlPrivate5parseENS_12ParseOptionsE - fun:_ZNK4QUrl7isValidEv - fun:_ZN4KUrl14_setEncodedUrlERK10QByteArray - fun:_ZN4KUrlC1ERK7QString - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - fun:_ZN11QMetaObject8activateEP7QObjectiiPPv -} -{ - - Memcheck:Leak - fun:realloc - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - fun:FcPatternDuplicate - fun:_ZL14tryPatternLoadP10_FcPatterniRK8QFontDefiPS0_ - fun:_ZN13QFontDatabase4loadEPK12QFontPrivatei - fun:_ZNK12QFontPrivate15engineForScriptEi - fun:_ZNK12QFontMetrics6ascentEv - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN8QMapData11node_createEPPNS_4NodeEi - fun:_ZN4QMapI7QStringS0_E11node_createEP8QMapDataPPNS2_4NodeERKS0_S8_ - fun:_ZN4QMapI7QStringS0_E13detach_helperEv - fun:_ZN4QMapI7QStringS0_E6detachEv - fun:_ZN4QMapI7QStringS0_E5beginEv - fun:_ZN17XslTransformation20updateParametersListEv - fun:_ZN17XslTransformation13setParametersE4QMapI7QStringS1_E - fun:_ZN16ChatMessageStyle8setStyleERK7QString - fun:_ZN13ChatStylePage20slotChatStyleChangedERK7QString - fun:_ZN13ChatStylePage12loadSettingsEPK7Account - fun:_ZN21AccountSettingsDialog12loadSettingsEP7AccountbNS_4PageE -} -{ - - Memcheck:Leak - fun:_Znwm - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - obj:/usr/lib/libkhtml.so.5.2.0 - fun:_ZN9KHTMLPart5beginERK4KUrlii - fun:_ZN15ChatMessageView7setHtmlERK7QString - fun:_ZN15ChatMessageView9clearViewEb - fun:_ZN15ChatMessageViewC1EP7QWidget - fun:_ZN8ChatViewC2EP7QWidget - fun:_ZN4ChatC1EP7QWidget -} -{ - - Memcheck:Leak - fun:_Znwm - fun:_ZN19QDockAreaLayoutInfo12restoreStateER11QDataStreamR5QListIP11QDockWidgetEb - fun:_ZN15QDockAreaLayout12restoreStateER11QDataStreamRK5QListIP11QDockWidgetEb - fun:_ZN22QMainWindowLayoutState11checkFormatER11QDataStreamb - fun:_ZN22QMainWindowLayoutState12restoreStateER11QDataStreamRKS_ - fun:_ZN17QMainWindowLayout12restoreStateER11QDataStream - fun:_ZN11QMainWindow12restoreStateERK10QByteArrayi - fun:_ZN10ChatWindow14readPropertiesERK12KConfigGroup - fun:_ZN10ChatWindow10initializeEv - fun:_ZN10ChatMaster16createChatWindowEP4Chat - fun:_ZN10ChatMaster10createChatEP24MsnSwitchboardConnectionb - fun:_ZN10ChatMaster11qt_metacallEN11QMetaObject4CallEiPPv -} -{ - - Memcheck:Leak - fun:malloc - fun:_ZN7QVectorI5QListIN14QObjectPrivate10ConnectionEEE7reallocEii - fun:_ZN14QObjectPrivate13addConnectionEiPNS_10ConnectionE - fun:_ZN11QMetaObject7connectEPK7QObjectiS2_iiPi - fun:_ZN7QObject7connectEPKS_PKcS1_S3_N2Qt14ConnectionTypeE - fun:_ZN14KActionPrivate4initEP7KAction - fun:_ZN7KActionC1ERK5KIconRK7QStringP7QObject - fun:_ZN8LikeBack18sendACommentActionEP17KActionCollection - fun:_ZN14KMessInterface10initializeEv - fun:_ZN5KMess10initializeEv - fun:_ZN16KMessApplication20initializeMainWindowEv - fun:_ZN16KMessApplicationC1Ev -} -{ - - Memcheck:Leak - fun:realloc - fun:_ZN9QListData7reallocEi - fun:_ZN9QListData6appendEv - fun:_ZN5QListIP7QObjectE6appendERKS1_ - fun:_ZN14QObjectPrivate16setParent_helperEP7QObject - fun:_ZN15QSocketNotifierC2EiNS_4TypeEP7QObject - fun:_ZN19QNativeSocketEngine27setWriteNotificationEnabledEb - fun:_ZN22QAbstractSocketPrivate23_q_connectToNextAddressEv - fun:_ZN22QAbstractSocketPrivate18_q_startConnectingERK9QHostInfo - fun:_ZN15QAbstractSocket27connectToHostImplementationERK7QStringt6QFlagsIN9QIODevice12OpenModeFlagEE - fun:_ZN15QAbstractSocket11qt_metacallEN11QMetaObject4CallEiPPv - fun:_ZNK11QMetaMethod6invokeEP7QObjectN2Qt14ConnectionTypeE22QGenericReturnArgument16QGenericArgumentS5_S5_S5_S5_S5_S5_S5_S5_S5_ -} -{ - - Memcheck:Leak - fun:realloc - obj:/usr/lib/libfontconfig.so.1.3.0 - obj:/usr/lib/libfontconfig.so.1.3.0 - fun:FcDefaultSubstitute - fun:_ZN13QFontDatabase4loadEPK12QFontPrivatei - fun:_ZNK12QFontPrivate15engineForScriptEi - fun:_ZNK12QFontMetrics6ascentEv - fun:_ZN5khtml18CachedFontInstanceC1EPNS_16CachedFontFamilyEi - fun:_ZN5khtml16CachedFontFamily9queryFontEi - fun:_ZNK5khtml4Font6updateEi - fun:_ZN5khtml4Font11initDefaultEv - fun:_ZN5khtml11RenderStyleC1Eb -} diff --git a/po/ar.po b/po/ar.po index bb4b24b..34765ee 100644 --- a/po/ar.po +++ b/po/ar.po @@ -9,10 +9,11 @@ msgid "" msgstr "" "Project-Id-Version: ar\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2009-07-24 21:18+0200\n" "Last-Translator: Ma'moun Diraneyya \n" "Language-Team: Arabic \n" +"Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,7 +23,7 @@ msgstr "" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "أنا بعيد عن حاسوبي" @@ -30,7 +31,7 @@ msgstr "أنا بعيد عن حاسوبي" msgid "Your name" msgstr "اسمك" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "you@hotmail.com" @@ -471,39 +472,39 @@ msgstr "اكتب على الملف" msgid "Over&write" msgstr "ا&كتب عليه" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "أ&ضف هذا الوجه..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "أ&خفِ هذا الوجه..." -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "أ&رسل رسالة بريدية" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "أضف الم&تراسل" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "انس&خ عنوان البريد" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "&زُر الرابط" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "انسخ ال&عنوان" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "امحِ المحادثة" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "ا&حفظ المحادثة في ملف..." @@ -642,7 +643,7 @@ msgstr "&لون الخط" msgid "C&lear Chat Window" msgstr "امحِ &نافذة المحادثة" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -652,30 +653,30 @@ msgstr "" "online|away|idle|brb|busy|lunch|phone|invisible.
تستطيع أيضًا استخدام " "الاختصارات /online أو /phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "صياغة /status خاطئة" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "لا تستطيع استخدام الأمر /block في محادثة جماعية." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "لا يمكن استخدام الأمر /block" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "لا تستطيع استخدام الأمر /unblock في محادثة جماعية." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "لا يمكن استخدام الأمر /unblock!" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -684,18 +685,18 @@ msgstr "" "أمر مجهول %1. إذا لم تكن تريد لهذه الرسالة أن تكون أمرًا فألحق " "رسالتك بشرطة / ثانية." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "أمر مجهول" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 #, fuzzy msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "فشل إرسال الرسالة المخطوطة إلى %1." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 #, fuzzy msgctxt "Error message shown in chat" msgid "" @@ -703,18 +704,18 @@ msgid "" "it." msgstr "فشل إرسال الرسالة المخطوطة إلى %1." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "محادثة" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "محادثة - %1" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -724,38 +725,38 @@ msgstr "" "هل أنت متأكد أنك تريد إخفاء شريط القوائم؟ ستكون قادرًا على إظهاره مجددًا " "باستخدام اختصار لوحة المفاتيح: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "إخفاء شريط القوائم" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 #, fuzzy msgid "Drawing brush" msgstr "فرشاة المسح" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "فرشاة المسح" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 يكتب..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 و%2 يكتبان..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, fuzzy, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1 و%2 و%3 آخر/ون يكتبون..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -763,24 +764,24 @@ msgid "" "ul>

Chat started on:
%2
Connected with " "account:
%3
" msgstr "" -"

معلومات المحادثة

المتراسلون:
  • %" -"1
بدأت المحادثة في:
%2
متصل من " +"

معلومات المحادثة

المتراسلون:
  • " +"%1
بدأت المحادثة في:
%2
متصل من " "الحساب:
%3
" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "وضع التخطيط" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " "handwritten messages." msgstr "" -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -789,17 +790,17 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "الغمزات" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 #, fuzzy msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." @@ -809,51 +810,51 @@ msgstr "الغمزات معطلة: لا يستطيع خميس إرسال غمز msgid "&Start Private Chat" msgstr "ابدأ محادثة &خاصة" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "أر&سل رسالة بريدية" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "أظ&هر صفحته الشخصية" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "ال&خصائص" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "أ&ضف المتراسل" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "ا&قبل المتراسل" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "ا&حذف المتراسل" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "اح&ظر المتراسل" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "أل&غِ حظر المتراسل" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "الاس&م" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "الر&سالة الشخصية" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "ع&نوان البريد الإلكتروني" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "اسم الأ&غنية" @@ -879,15 +880,15 @@ msgstr "الملاح&ظات" msgid "&Emoticons" msgstr "الو&جوه" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "ا&نسخ" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "محظور" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -895,17 +896,18 @@ msgctxt "" msgid "The contact is %1" msgstr "المتراسل %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "فشل تنزيل صورة العرض" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "خميس" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -934,7 +936,7 @@ msgstr "أضف جديدًا" msgid "Edit" msgstr "حرِّر" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "أزل" @@ -990,52 +992,52 @@ msgstr "متوافق مع مرسال وِندُز لايف %1" msgid "Windows Live Messenger compatible" msgstr "متوافق مع مرسال وِندُز لايف" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "متصل" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "مشغول" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "بعيد" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "بعيد، مع رد آلي" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "خامل" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "سأعود حالاً" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "على الهاتف" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "خارج للغداء" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "متخفٍّ" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "غير متصل" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&حالتي" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "اقطع الاتصال" @@ -1137,16 +1139,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "خصائص المتراسل %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "متصل" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "لم يُشاهَد بعد" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "لا رسائل بعد" @@ -1174,20 +1176,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "العميل: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "أمتأكد أنك تريد استخدام صورة عرض هذا المتراسل؟" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "انسخ صورة المتراسل" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "نوع الملف المُختار غير مدعوم في فُنُن." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "أنواع ملفات غير مدعومة" @@ -1696,8 +1698,8 @@ msgstr "إعادة الاتصال غير ممكنة: ليس لهذا الحسا #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
Reconnect now!" +"Waiting for an Internet connection to reconnect...
Reconnect now!" msgstr "" "ينتظر اتصالاً بالإنترنت حتى يعيد الاتصال...
أعد الاتصال " "الآن!" @@ -1770,22 +1772,22 @@ msgstr "إضافة مجموعة" msgid "Enter a name for the new group:" msgstr "أدخل اسمًا للمجموعة الجديدة:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " "list?" msgstr "أمتأكد أنك تريد إزالة %1 من لائحة متراسليك؟" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "أزل المتراسل" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "أزله واحظره" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1794,12 +1796,12 @@ msgid "" msgstr "" "المجموعة %1 ليست فارغة: أزل جميع المتراسلين منها، ثم حاول مجددًا!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "إزالة مجموعة" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1807,24 +1809,24 @@ msgid "" "list?" msgstr "أمتأكد أنك تريد إزالة المجموعة %1 من لائحة متراسليك؟" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "أزل" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "هذه مجموعة خاصة، ولايمكن تغييرها." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "&غيِّر اسم المجموعة" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "أدخل اسمًا جديدًا لهذه المجموعة:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1833,21 +1835,21 @@ msgid "" msgstr "" "

لا يمكن الولوج آليًا بالحساب %1:
يجب عليك أولاً حفظ كلمة سره!

" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "فشل الولوج الآلي" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "ربما ينقطع الاتصال..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "انقطع الاتصال" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1855,7 +1857,7 @@ msgctxt "" msgid "

KMess has searched for it in the following folders:
%1

" msgstr "

بحث خميس عنه في المجلدات التالية:
%1

" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1870,12 +1872,12 @@ msgstr "" "p>

لأنه لم يستطع إيجاد الملف 'kmess.notifyrc' المطلوب، في أي واحد من " "مجلدات التطبيق.

%1

فضلاً تحقَّق من تثبيتك.

" -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "خطأ بشأن التنبيهات" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1884,210 +1886,205 @@ msgstr "خميس - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "ا&تصل" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "ا&قطع الاتصال" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "أ&ظهر صفحتي الشَّخصية" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "أظهر المتراسلين المقبو&لين" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "أظهر المتراسلين &غير المتصلين" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "أظهر المتراسلين المُزالي&ن" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "أظهر صندوق ال&تأريخ" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "أظهر شريط ال&بحث" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "أظهر الم&جموعات الفارغة" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&حجم صورة العرض" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "افر&ز المتراسلين حسب" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "أظهر نا&فذة النقل..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "مترا&سل جديد..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "مج&موعة جديدة..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&صدِّر لائحة المتراسلين..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "أظهر &تأريخ المحادثات..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "&حساب جديد..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "اضبط الحساب..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "ا&ضبط خميس..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "أظهر &قائمة الاختيار" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "لا تعرض" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "صغير" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "وسط" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "كبير" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "المجموعة" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "حالة الاتصال (متصل/غير متصل)" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "خليط" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "أظهر نافذة الشب&كة..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] ولجت بالحساب %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] اتصل %2" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] فصل %2" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "حا&دثه" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "أ&زله من المجموعة" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "انس&خه إلى المجموعة" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "ان&قله إلى المجموعة" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "حرّك المجموعة إلى الأس&فل" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "حرّك المجموعة إلى الأ&على" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "أز&ل المجموعة" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "&غيِّر اسم المجموعة" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "لست موجودًا على لائحة متراسلي هذا الشخص." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "عنوان البريد" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "العميل" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "نعم" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "لا" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "محظور" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "آخر مشاهدة" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "آخر رسالة" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "المجموعة %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2099,7 +2096,7 @@ msgstr[3] "%1 متراسلين، " msgstr[4] "%1 متراسلاً، " msgstr[5] "%1 متراسل، " -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2111,7 +2108,7 @@ msgstr[3] "%1 متصلين" msgstr[4] "%1 متصلاً" msgstr[5] "%1 متصل" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2123,18 +2120,18 @@ msgstr[3] "%1 متراسلين" msgstr[4] "%1 متراسلاً" msgstr[5] "%1 متراسل" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 #, fuzzy msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "انقر هنا لجعل خميس يحفظ كلمة سرِّك" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 #, fuzzy msgctxt "Default personal message tooltip" msgid "" @@ -2142,15 +2139,15 @@ msgid "" "along with your friendly name" msgstr "أدخل رسالة هنا لتُعرض لمتراسليك: سيشاهدون هذه الرسالة بعد اسمك" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "لا سجلات محادثات موجودة لهذا المتراسل." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "لا تأريخ محادثات موجود" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2159,7 +2156,7 @@ msgstr "" "لا سجلات محادثات موجودة لهذا المتراسل. لاحظ أنَّ المحادثات الجديد لا تُسجَّل، لكن " "يمكنك إذا أردت تسجيلها أن تفعَّل ذلك من إعدادات الحساب." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" @@ -2170,6 +2167,16 @@ msgstr[3] "%1 رسائل بريدية جديدة" msgstr[4] "%1 رسالة بريدية جديدة" msgstr[5] "%1 رسالة بريدية جديدة" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "أظهر للمتراسلين الم&قطوعة التي أستمع إليها" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "أظهر للمتراسلين الم&قطوعة التي أستمع إليها" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2846,48 +2853,56 @@ msgstr "" msgid "Marco Mentasti" msgstr "تهكُّم" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "شفرة متجانسة ومُلهِمة" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "ك‌مِرلين (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "كُبِتي (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "شفرة البالونات المنبثقة القديمة، وشفرة الندِّ للندِّ الأولية، ومُستوثِق MSN" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "شفرة مؤقت الخمول" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "حافظةشاشةك" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "باس‌كِت" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "شفرة الإغلاق إلى أيقونة صينية النظام" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "أمارُك" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "تنفيذ مدبِّر انهيار مخصَّص، بالإضافة إلى تنفيذ تراكب أيقونة صينية النظام" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2895,11 +2910,11 @@ msgstr "" "إصلاح علَّة اختلال التركيز في مبلِّغ‌ك، بالإضافة إلى تحايل منع اختطاف التركيز في " "نافذةك" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "اكْوَسِل" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2907,33 +2922,33 @@ msgstr "" "نُرحِّب بإرسالك إصلاحات للعلل أو رُقَع إلى منتديات مساعدة خميس!\n" "إذا شعرت بأن اسمك مفقود هنا فراسلنا أيضًا رجاءً!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "اسمك هنا؟" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "محمد عَصَر, عبدالعزيز الشريف, مأمون ديرانية" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "aser@arabeyes.org, a. a-a.s@hotmail.com, mamoun.diraneyya@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "لا تظهر نافذة لائحة المتراسلين ابتدائيًا" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "ولوج آلي بالبريد المُعطى" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "أجرِ اختبارًا تنقيحيًّا (نسخة المطورين فقط)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3562,24 +3577,24 @@ msgstr "خطأ في MSN" msgid "Trying the HTTP fallback..." msgstr "يجرِّب احتياطيَّ HTTP..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "يستوثق..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "استوثق" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "يتصل..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "استُقبِل أمر مجهول من الخادوم: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3591,69 +3606,69 @@ msgstr[3] "%1 دقائقٍ" msgstr[4] "%1 دقيقة" msgstr[5] "%1 دقيقة" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "سيُغلق الخادوم للصيانة في غضون %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "سيُغلق خادوم مِرسال لايف بعد %1 للصيانة." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
Details: %1" msgstr "تعذَّرت على خميس معالجة الرسائل دون اتصال.
التفاصيل: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "عميل SOAP لم يعد صالحًا." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "انتهت مهلة الاستيثاق" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "ينتظر قائمة المتراسلين..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

Warning: %1

" msgstr "

تحذير: %1

" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "تحذير من MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
Internal error reason: %1" msgstr "
سبب الخطأ الداخلي: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

Authentication has failed, please verify your account email and password." "

" msgstr "

فشل الاستيثاق، تحقَّق من فضلك من اسم حسابك وكلمة السر.

" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "خطأ في MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

The account %1 has been connected from another location.

" msgstr "

اتصل الحساب %1 من مكان ثانٍ.

" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3663,7 +3678,7 @@ msgstr "" "

لم تعد متصلاً: لقد اتصلت بالحساب %1 من عميل مرسال ثانٍ، أو من مكان " "ثانٍ.

" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

Unable to connect to the Live Messenger service.
Maybe you need to " @@ -3672,7 +3687,7 @@ msgstr "" "

عاجز عن الاتصال بخدمة مرسال لايف.
ربما أنت بحاجة لتستوثق قبل أن " "تستطيع النفاذ إلى الشبكة؟

" -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3687,25 +3702,25 @@ msgstr "" "أن يكون الاستيثاق إلى صفحة وِب أو وسيط مطلوبًا للنفاذ إلى الشبكة.

انقر هنا لزيارة صفحة حالة خدمة المرسال.

" -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

Unable to resolve the authentication on the client
Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

" msgstr "" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

KMess could not connect to the Live Messenger servers.
You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
It is also " "possible that the MSN network is unavailable at the moment.

" msgstr "" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

Unable to connect to the Live Messenger service.

" msgstr "

عاجز عن الاتصال بخدمة مرسال لايف.

" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3715,67 +3730,67 @@ msgid "" "Messenger service status page.

" msgstr "" "

تعذَّر على خميس الاتصال بخواديم مرسال لايف.
ربما تكون هناك مشكلة " -"باتصالك بالإنترنت، أو أن خواديم مرسال لايف غير متاحة مؤقتًا.

انقر هنا لزيارة صفحة حالة خدمة المرسال.

" +"باتصالك بالإنترنت، أو أن خواديم مرسال لايف غير متاحة مؤقتًا.

انقر هنا لزيارة صفحة حالة خدمة المرسال.

" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

Error: %1

" msgstr "

خطأ: %1

" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

أُبلِغ خادوم مرسال لايف عن خطأ:

%1

" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

Messenger Service Error: %1

" msgstr "

خطأ في خدمة المرسال: %1

" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

أُبلِغ خادوم مرسال لايف عن خطأ:

%1

" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

KMess Error: %1

" msgstr "

خطأ في خميس: %1

" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

KMess has encountered an internal error:

%1

" msgstr "

صادف خميس خطأ داخليًا:

%1

" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

Network connection lost.

" msgstr "

فُقد اتصال الشبكة.

" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

Connection to the Live Messenger server has been lost.

" msgstr "

فُقد الاتصال بخادوم مرسال لايف.

" -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" "

Developer info:
Error number: %1
Error string: %2

" msgstr "" -"

معلومات المطور:
رقم الخطأ: %1
جملة الخطأ: %" -"2

" +"

معلومات المطور:
رقم الخطأ: %1
جملة الخطأ: " +"%2

" #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3817,13 +3832,13 @@ msgstr[5] "" msgid "The connection to the server was lost" msgstr "فُقد الاتصال بالخادوم." -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "عنوان البريد المُحدَّد \"%1\" ليس عنوان بريد إلكتروني صالحًا!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3831,42 +3846,42 @@ msgid "" "account!" msgstr "عنوان البريد المُحدَّد \"%1\" لا ينتمي إلى حسابات مرسال لايف!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "طلب خدمة وِب غير صالح (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "لا يُمكن النفاذ إلى خدمة الوِب (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "إعادات توجيه خدمة الوِب كثيرة جدًا" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "خدمة وِب الرسائل دون اتصال غير متاحة حاليًا" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "خدمة وِب مرسال لايف تواجه مشكلات" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "استجابة خدمة وِب غير صالحة %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "لا استجابة من خدمة الوِب" @@ -4012,38 +4027,123 @@ msgstr "%1
على الهاتف" msgid "%1
is out for lunch" msgstr "%1
خارج للغداء" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "لا رسائل بريدية جديدة" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "لمتراسلي المجموعة نفسها" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "هذا المتراسل ليس متصلاً" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "هذا المتراسل ليس متصلاً" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "أيقونة خميس" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
'%1'
by '%2'" msgstr "رسالة بريدية جديدة:
'%1'
من '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

Closing the main window will keep KMess running in the system tray.

You can open KMess again by clicking on the bird icon, which is now " +"flashing.
Use 'Quit' from the 'Connect' menu to quit the application.

" +msgstr "" +"إغلاق النافذة الرئيسية سيُبقي خميس عاملاً في صينية النظام. استخدم 'أنهِ' من " +"قائمة 'اتصال' لإنهاء التطبيق." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "يرتصف في صينية النظام" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "يتصل بـ%1, عبر المنفذ %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

Connected as:
%1 (%2)

" +msgstr "
%1 (%2)" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "متصل" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

Not connected

" +msgstr "

فُقد اتصال الشبكة.

" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "ابدأ محادثة" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "اترك رسالة" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "اعرض الرسالة" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "التفاصيل" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "اقرأ البريد" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "أخفِ" @@ -4056,11 +4156,6 @@ msgstr "" "إغلاق النافذة الرئيسية سيُبقي خميس عاملاً في صينية النظام. استخدم 'أنهِ' من " "قائمة 'اتصال' لإنهاء التطبيق." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "يرتصف في صينية النظام" - #: notification/systemtraywidget.cpp:248 #, fuzzy, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4091,21 +4186,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "aser@arabeyes.org, a. a-a.s@hotmail.com, mamoun.diraneyya@gmail.com" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "تصفَّح..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "تصفَّح واقتطع صورة..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "عيِّن الصورة السابقة..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "صورة العرض" @@ -6351,6 +6446,10 @@ msgstr "" "تقريرك، أو ليخبروك عن موعد إنجاز الميزة التي طلبتها.
\n" "لن يُستخدم عنوان بريدك لأي غرض سوى هذا التقرير." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "لست موجودًا على لائحة متراسلي هذا الشخص." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<أدخل رسالتك الشخصية هنا>" diff --git a/po/ca.po b/po/ca.po index 87f7a39..949d667 100644 --- a/po/ca.po +++ b/po/ca.po @@ -6,10 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: ca\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" -"PO-Revision-Date: 2010-02-27 15:45+0100\n" -"Last-Translator: Adrià Arrufat \n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" +"PO-Revision-Date: 2010-05-20 17:49+0200\n" +"Last-Translator: \n" "Language-Team: American English \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +18,7 @@ msgstr "" "X-Generator: Lokalize 1.0\n" "First-Translator: Adrià Arrufat \n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Estic fora de l'ordinador" @@ -25,7 +26,7 @@ msgstr "Estic fora de l'ordinador" msgid "Your name" msgstr "El vostre nom" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "vosaltres@hotmail.com" @@ -491,39 +492,39 @@ msgstr "Sobreescriu el fitxer" msgid "Over&write" msgstr "Sobre&escriu" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Afegeix aquesta &emoticona..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Amaga aquesta &emoticona..." -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Envia un correu &electrònic" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Afegeix un &Contacte" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Copia l'adreça de &correu electrònic" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Visita l'en&llaç" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Copia l'&adreça" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "&Neteja la conversa" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Desa la conversa a un &fitxer" @@ -661,7 +662,7 @@ msgstr "Color de la lletra" msgid "C&lear Chat Window" msgstr "Neteja la finestra de conversa" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -672,32 +673,32 @@ msgstr "" "invisible
.
O bé podeu fer servir les dreceres /online, /" "phone etc." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Sintaxi /status incorrecta" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "No podeu fer servir la comanda /block en una conversa de grup." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "No es pot fer servir la comanda /block!" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "No podeu fer servir la comanda /unblock en una conversa de grup." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "No es pot fer servir la comanda /unblock!" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -706,18 +707,18 @@ msgstr "" "Comanda %1 desconeguda. Si no volíeu que aquest missatge fos " "una comanda, escriviu un altre / al principi." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Comanda desconeguda" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "No s'ha pogut enviar el missatge manuscrit: els contactes no ho suporten." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -726,18 +727,18 @@ msgstr "" "No s'ha pogut enviar el missarge manuscrit: s'ha produït un error mentre es " "creava." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Conversa" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Conversa" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -748,37 +749,37 @@ msgstr "" "mostrar un altre cop fent servir la següent decera de teclat: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Amagament del menú" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Pinzell" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Goma d'esborrar" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 està escrivint..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 i %2 estan escrivint..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 i %3 més estan escrivint..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -787,16 +788,16 @@ msgid "" "account:
%3
" msgstr "" "

Informació de la conversa

Contactes:
  • %1
Conversa començada el:
%" -"2
Connectat amb el compte:
%3
" +"dt>
  • %1
Conversa començada el:
" +"%2
Connectat amb el compte:
%3
" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Mode de dibuix" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -805,7 +806,7 @@ msgstr "" "Els missatges manuscrits estan desactivats: alguns dels contactes no en " "poden rebre." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -815,17 +816,17 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Ganyotes" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "Les ganyotes estan desactivades: alguns contactes no en poden rebre." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "Les ganyotes estan deshabilitades: aquest contacte no en pot rebre." @@ -834,51 +835,51 @@ msgstr "Les ganyotes estan deshabilitades: aquest contacte no en pot rebre." msgid "&Start Private Chat" msgstr "&Comença una conversa privada" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Envia un correu electrònic" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Visualitza el perfil" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Propietats" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Afegeix el contacte" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Permet al contacte" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "E&sborra el contacte" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "Bloqueja el contacte" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Desbloqueja el contacte" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Nom amistós" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Missatge persona" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Adreça de correu electrònic" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "&Nom de la cançó" @@ -904,15 +905,15 @@ msgstr "&Notes" msgid "&Emoticons" msgstr "&Emoticones" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Copia" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Bloquejat" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -920,17 +921,18 @@ msgctxt "" msgid "The contact is %1" msgstr "El contacte està %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "La descàrrega de la imatge ha fallat" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -959,7 +961,7 @@ msgstr "Afegeix nova emoticona" msgid "Edit" msgstr "Edita" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Esborra" @@ -1015,52 +1017,52 @@ msgstr "Windows Live Messenger %1 compatible" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger compatible" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "En línia " -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Ocupat" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Absent" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Absent amb auto-resposta" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inactiu" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Ara torno" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Al telèfon" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Estic menjant" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Invisible" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Desconnectats" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "El &meu estat" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Desconnecta" @@ -1166,16 +1168,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Propietats del contacte %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Connectat" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Mai vist encara" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Cap missatge encara" @@ -1203,20 +1205,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Client: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Esteu segurs que voleu fer servir la imatge d'aquest contacte?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Copia la imatge del contacte" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "El fitxer triat no està suportat per Phonon." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Tipus de fitxes no suportat" @@ -1730,11 +1732,11 @@ msgstr "" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
Reconnect now!" +"Waiting for an Internet connection to reconnect...
Reconnect now!" msgstr "" -"A l'espera d'una connexió a Internet per reconnectar-se...
Reconnecta't ara!" +"A l'espera d'una connexió a Internet per reconnectar-se...
Reconnecta't ara!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1800,7 +1802,7 @@ msgstr "Afegeix un grup" msgid "Enter a name for the new group:" msgstr "Escriviu un nom per al nou grup:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1809,15 +1811,15 @@ msgstr "" "Esteu segurs que voleu esborrar el contacte %1 de la vostra " "llista de contactes?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Esborra el contacte" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Esborra i bloqueja" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1827,12 +1829,12 @@ msgstr "" "El grup %1 no està buit: treieu o esborreu tots els contactes del " "grup i torneu-ho a provar!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Esborrament del grup" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1842,24 +1844,24 @@ msgstr "" "Esteu segurs que voleu esborrar el grup %1 de la vostra llista de " "contactes?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Esborra" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Aques es un grup especial, que no es pot canviar." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Reanomena el grup" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Escriviu un nom nou per aquest grup:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1869,21 +1871,21 @@ msgstr "" "

No es pot connectar automàticament amb aquest compte %1:
primer heu de desar la contrasenya del compte!

" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Autoconnexió fallida" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "La connexió podria estar caiguda " -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Desconnectat" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1891,7 +1893,7 @@ msgctxt "" msgid "

KMess has searched for it in the following folders:
%1

" msgstr "

KMess ho ha cercat a les següents carpetes:
%1

" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1906,12 +1908,12 @@ msgstr "" "fitxer 'kmess.notifyrc' no s'ha pogut trobar en cap carpeta del'aplicació.%1

Si us plau, verifiqueu la vostra instal·lació.

" -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Error amb les notificacions" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1920,210 +1922,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Incicia sessió" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Desconnecta't" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Mostra el meu &perfil" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Mostra els c&ontactes permesos" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Mostra les contactes &desconnectats" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Mostra els contactes &esborrats" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Mostra l'&historial" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Mostra la barra de &cerca" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Mostra els grups &buits" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Mida de les imatges" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Ordena els contactes per" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Mostra la finestra de &transferències" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Nou &contacte..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Nou &grup..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Exporta la llista de contactes..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Mostra l'&historial de conversa..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Nou com&pte" -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Configua el compte..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Configura &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Mostra el &menú de selecció" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "No en mostris" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Petites" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Mitjanes" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Grans" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Grup" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Connectats/Desconnectats" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Mixte" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." -msgstr "Mostra la &fonestra de connexions..." +msgstr "Mostra la &Finestra de Connexions..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Connectat amb %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 s'ha connectat" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 s'ha desconnectat" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Con&versa" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "&Esborra del grup" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Copia al grup" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Mou al grup" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Mou el grup a&vall" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Mou el gru am&unt" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Es&borra el grup" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Rea&nomena el grup" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Aquesta persona no us té a la seva llista de contactes." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Correu electrònic" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Client" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Sí" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "No" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Bloquejat" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Vist per últim cop" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Darrer missatge" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Grup %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2131,7 +2128,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 contacte, " msgstr[1] "%1 contactes, " -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2139,7 +2136,7 @@ msgid_plural "%1 online" msgstr[0] "%1 connectat " msgstr[1] "%1 connectats " -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2147,17 +2144,17 @@ msgid_plural "%1 contacts" msgstr[0] "%1 contacte" msgstr[1] "%1 contactes" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Cliqueu aquí per canviar el vostre nom amistós" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Cliqueu aquí per escriure un missatge personal[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2166,15 +2163,15 @@ msgstr "" "Escriviu aquí un missatge per mostrar als vostres contactes: el veuran " "juntament amb el vostre nom amistós" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "No s'han trobat registres de conversa per aquest contacte." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "No s'ha trobat cap historial de converses." -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2184,13 +2181,21 @@ msgstr "" "noves converses no s'estan enregistrant; si voleu que es registrin, podeu " "activar l'opció a les preferències del vostre compte." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 correu electrònic nou" msgstr[1] "%1 correus electrònics nous" +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Mostra als contactes què estic escoltant (cliqueu per desactivar-la)" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Mostra als contactes què estic escoltant (cliqueu per activar-la)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2875,62 +2880,70 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "Botó per alternar què estic escoltant sobre la llista de contactes." + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Codi d'inspiració i variat" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Codi de les notificacions de globus antigues, codi inicial p2p, control dels " "reptes de msn" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Codi de temporització a la inactivitat" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Codi de tancar a la safata del sistema amb una captura de pantalla" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Implementació del manipulador de fallades personalitzat, nova icona de la " "safata del sistema" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "Correcció de focus per KNotify i de pèrdua de focus per KWin" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2939,34 +2952,34 @@ msgstr "" "Si trobeu que el vostre nom hauria de figurar aquí, si us plau, contacteu " "amb nosaltres!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "El vostre nom aquí?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Adrià Arrufat,Jaume Cornadó" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "swiftscythe@gmail.com,jaumec@lleida.net" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "No mostris la llista de contactes a l'inici" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Autoconnecta't amb aquesta adreça de correu elctrònic" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "" "Executa una prova amb depuració (només per a compilacions de desenvolupadors)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3639,24 +3652,24 @@ msgstr "Error de MSN %1" msgid "Trying the HTTP fallback..." msgstr "Probant el mode HTTP..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Autentificant-se" -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Autentificat" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Connectant-se" -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Comanda desconeguda rebuda del servidor. %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3664,51 +3677,51 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minut" msgstr[1] "%1 minuts" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "El servidor es tancarà per manteniment en %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "El servidor de Live Messenger es tancarà en %1 per manteniment." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
Details: %1" msgstr "KMess no ha pogut processar els missatges Offline.
Detalls: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "El client SOAP ja no és vàlid." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "S'ha excedit el temps límit d'autentificació" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Esperant la llista de contactes..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

Warning: %1

" msgstr "

Avís: %1

" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Avís d'MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
Internal error reason: %1" msgstr "
Motiu d'error intern: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

Authentication has failed, please verify your account email and password." @@ -3717,18 +3730,18 @@ msgstr "" "

L'autentificació ha fallat, si us plau verifiqueu l'adreça de correu " "electrònic i la contrasenya.

" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Error de MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

The account %1 has been connected from another location.

" msgstr "

El compte %1 s'ha connectat des d'una altra ubicació.

" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3738,7 +3751,7 @@ msgstr "" "

Heu estat desconnectats: us heu connectat amb el compte %1 des " "d'un altre client d'MSN, o des d'una altra ubicació.

" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

Unable to connect to the Live Messenger service.
Maybe you need to " @@ -3747,7 +3760,7 @@ msgstr "" "

No s'ha pogut connectar al servei de LIve Messenger.
Potser " "necessiteu autentificar-vos abans de poder accedir a la xarxa?

" -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3760,11 +3773,11 @@ msgstr "" "

KMess no s'ha pogut connectar als servidors de Live Messenger.
Deu " "haver un problema amb la vostra connexió a Internet, o els servidors de MSN " "estan inaccessibles temporalment.
També és possible que l'autentificació " -"a la pàgina web o el proxy hagin demanat accés a la xarxa.

Cliqueu aquí per visitar la pàgina sobre l'estat dels serveis de " -"Messenger.

" +"a la pàgina web o el proxy hagin demanat accés a la xarxa.

Cliqueu aquí per visitar la pàgina sobre l'estat dels serveis " +"de Messenger.

" -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

Unable to resolve the authentication on the client
Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

" @@ -3772,7 +3785,7 @@ msgstr "" "

No s'ha pogut resoldre l'autentificació del client
Potser no teniu " "instal·lats els paquets qca2 i/o qca2-plugin-ossl

" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

KMess could not connect to the Live Messenger servers.
You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
It is also " @@ -3783,12 +3796,12 @@ msgstr "" "que el KMess funcioni.
També és possible que la xarxa MSN no es trobi " "disponible ara mateix

" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

Unable to connect to the Live Messenger service.

" msgstr "

No s'ha pogut connectar al servei de Live Messenger.

" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3802,56 +3815,56 @@ msgstr "" "estan inaccessibles temporalment.

Cliqueu aquí per " "visitar la pàgina sobre l'estat dels serveis de Messenger.

" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

Error: %1

" msgstr "

Error: %1

" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

El servidor de Live Messenger ha comunicat un error:

%1

" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

Messenger Service Error: %1

" msgstr "

Error de serveis de Messenger: %1

" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

El servidor de Live Messenger ha comunicat un error:

%1

" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

KMess Error: %1

" msgstr "

Error de KMess: %1

" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

KMess has encountered an internal error:

%1

" msgstr "

KMess ha trobat un error intern:

%1

" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

Network connection lost.

" msgstr "

S'ha perdut la connexió.

" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

Connection to the Live Messenger server has been lost.

" msgstr "

S'ha perdut la connexió al servidor de Live Messenger.

" -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3899,13 +3912,13 @@ msgstr[1] "%1 pings perduts" msgid "The connection to the server was lost" msgstr "S'ha perdut la connexió al servidor" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "L'adreça de correu electrònic \"%1\" no és vàlida!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3915,42 +3928,42 @@ msgstr "" "L'adreça de correu electrònic \"%1\" no correspon a cap compte de Live " "Messenger!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Demanda de servei web invàlida (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "El servei web no està accessible (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Massa redireccions per part servei web" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Els missatges en desconnexió del servei web no estan disponibles" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "El serveu web de Live Messenger està experimentant problemes" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Resposta de servei web invàlida %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Cap resposta del servei web" @@ -4097,38 +4110,124 @@ msgstr "%1
està al telèfon" msgid "%1
is out for lunch" msgstr "%1
ha anat a menjar" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 correu electrònic nou" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Per a contactes d'un mateix grup" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Aquest contacte no està connectat" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Aquest contacte no està connectat" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "Icona de KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
'%1'
by '%2'" msgstr "Nou correu electrònic:
'%1'
de '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

Closing the main window will keep KMess running in the system tray.

You can open KMess again by clicking on the bird icon, which is now " +"flashing.
Use 'Quit' from the 'Connect' menu to quit the application.

" +msgstr "" +"Tancar la finestra principal de KMess farà que segueixi funcionant a la " +"safata del sistema. Feu servir 'Abandona' del menú 'Connecta' per sortir de " +"l'aplicació." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Anclant-se a la safata del sistema" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Connectant-se a %1, port %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

Connected as:
%1 (%2)

" +msgstr "
%1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Connectat" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

Not connected

" +msgstr "

S'ha perdut la connexió.

" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Comença una conversa" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Deixa un missatge" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Mostra el missatge" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Detalls" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Llegeix el correu electrònic" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Amaga" @@ -4142,11 +4241,6 @@ msgstr "" "safata del sistema. Feu servir 'Abandona' del menú 'Connecta' per sortir de " "l'aplicació." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Anclant-se a la safata del sistema" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4177,21 +4271,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 correus electrònics " -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Examina..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Examina i retalla una imatge..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Posa una imatge anterior..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Imatge a mostrar" @@ -6525,6 +6619,10 @@ msgstr "" "La vostra adreça de correu electrònic no serà utilitzada per res més que " "això." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Aquesta persona no us té a la seva llista de contactes." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Escriviu aquí el vostre missatge personal>" diff --git a/po/de.po b/po/de.po index 69de35f..7d08a42 100644 --- a/po/de.po +++ b/po/de.po @@ -9,17 +9,18 @@ msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" -"PO-Revision-Date: 2010-02-27 14:14+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" +"PO-Revision-Date: 2010-06-27 14:36+0200\n" "Last-Translator: Panagiotis Papadopoulos \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Ich bin nicht an meinem Computer" @@ -27,7 +28,7 @@ msgstr "Ich bin nicht an meinem Computer" msgid "Your name" msgstr "Ihr Name" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "sie@hotmail.de" @@ -134,7 +135,7 @@ msgstr "Sie haben ein Animoticon gesendet!" #, kde-format msgctxt "Message shown in the chat window, %1 is the wink name" msgid "You have sent the "%1" wink!" -msgstr "Sie haben das „%1“-Animoticon gesendet!" +msgstr "Sie haben das „%1“-Animoticon gesendet!" #: chat/chat.cpp:1007 msgid "" @@ -164,8 +165,8 @@ msgctxt "Warning message shown in chat, %1 is the contact's friendly name" msgid "" "%1 has sent you a voice clip, but KMess does not support voice clips yet." msgstr "" -"%1 hat Ihnen eine Sprachaufzeichnung gesendet, KMess unterstützt " -"aber Sprachaufzeichnungen noch nicht." +"%1 hat Ihnen eine Sprachaufzeichnung gesendet, KMess unterstützt aber " +"Sprachaufzeichnungen noch nicht." #: chat/chat.cpp:1201 #, kde-format @@ -174,8 +175,8 @@ msgid "" "%1 has sent you an action message, but KMess does not support action " "messages yet." msgstr "" -"%1 hat Ihnen eine Aktionsnachricht gesendet, KMess unterstützt " -"aber Aktionsnachrichten noch nicht." +"%1 hat Ihnen eine Aktionsnachricht gesendet, KMess unterstützt aber " +"Aktionsnachrichten noch nicht." #: chat/chat.cpp:1212 msgctxt "Warning message shown in chat" @@ -229,7 +230,7 @@ msgctxt "" "Message shown in the chat window, %1 is the contact's friendly name, %2 is " "the wink name" msgid "%1 has sent you a wink: "%2"!" -msgstr "%1 hat Ihnen ein Animoticon gesendet: „%2“!" +msgstr "%1 hat Ihnen ein Animoticon gesendet: „%2“!" #: chat/chat.cpp:1321 #, kde-format @@ -239,8 +240,7 @@ msgid "" "have the "cabextract" program installed." msgstr "" "Sie haben ein Animoticon von %1 erhalten, es kann aber nicht angezeigt " -"werden. Bitte stellen Sie sicher, dass „cabextract“ installiert " -"ist." +"werden. Bitte stellen Sie sicher, dass „cabextract“ installiert ist." #: chat/chat.cpp:1330 #, kde-format @@ -251,10 +251,8 @@ msgid "" "You received the "%2" wink from %1, but it could not be displayed. " "Make sure you have the "cabextract" program installed." msgstr "" -"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber " -"nicht " -"angezeigt werden. Bitte stellen Sie sicher, dass „cabextract“ " -"installiert ist." +"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber nicht angezeigt " +"werden. Bitte stellen Sie sicher, dass „cabextract“ installiert ist." #: chat/chat.cpp:1342 #, kde-format @@ -264,7 +262,7 @@ msgid "" "wink package with "cabextract" has failed." msgstr "" "Sie haben ein Animoticon von %1 erhalten, es kann aber nicht angezeigt " -"werden. Das Entpacken des Animoticonpakets mit „cabextract“ ist " +"werden. Das Entpacken des Animoticonpakets mit „cabextract“ ist " "fehlgeschlagen." #: chat/chat.cpp:1351 @@ -276,10 +274,9 @@ msgid "" "You received the "%2" wink from %1, but it could not be displayed. " "Extracting the wink package with "cabextract" has failed." msgstr "" -"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber " -"nicht " -"angezeigt werden. Das Entpacken des Animoticonpakets mit „" -"cabextract“ ist fehlgeschlagen." +"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber nicht angezeigt " +"werden. Das Entpacken des Animoticonpakets mit „cabextract“ ist " +"fehlgeschlagen." #: chat/chat.cpp:1363 #, kde-format @@ -300,8 +297,8 @@ msgid "" "You received the "%2" wink from %1, but it could not be displayed. " "The data could not be read." msgstr "" -"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber " -"nicht angezeigt werden. Die Daten können nicht gelesen werden." +"Sie haben das „%2“-Animoticon von %1 erhalten, es kann aber nicht angezeigt " +"werden. Die Daten können nicht gelesen werden." #: chat/chat.cpp:1414 #, kde-format @@ -320,7 +317,7 @@ msgstr "%1 hat sich abgemeldet." #: chat/chat.cpp:1429 #, kde-format msgid "%1 has changed his or her status to "%2"." -msgstr "%1 hat seinen/ihren Status auf „%2“ gesetzt." +msgstr "%1 hat seinen/ihren Status auf „%2“ gesetzt." #: chat/chat.cpp:1460 #, kde-format @@ -367,8 +364,8 @@ msgid "" "The file "%1" could not be found on your computer, and the " "download failed." msgstr "" -"Die Datei „%1“ kann auf dem Computer nicht gefunden werden und " -"der Download ist fehlgeschlagen." +"Die Datei „%1“ kann auf dem Computer nicht gefunden werden und der Download " +"ist fehlgeschlagen." #: chat/chat.cpp:1656 #, kde-format @@ -412,7 +409,7 @@ msgstr "" #: chat/chatmaster.cpp:1467 #, kde-format msgid "%1 is sending a wink: "%2"" -msgstr "%1 sendet ein Animoticon: „%2“" +msgstr "%1 sendet ein Animoticon: „%2“" #: chat/chatmessagestyle.cpp:383 #, kde-format @@ -469,8 +466,8 @@ msgid "" "Make sure you have permission to write in the folder where logs are being " "saved." msgstr "" -"Das Chat-Protokoll kann im folgenden Verzeichnis nicht gespeichert werden: „%" -"1“.\n" +"Das Chat-Protokoll kann im folgenden Verzeichnis nicht gespeichert werden: " +"„%1“.\n" "Bitte stellen Sie sicher, dass Sie Schreibrechte für den Ordner haben, in " "dem die Protokolle gespeichert werden sollen." @@ -504,39 +501,39 @@ msgstr "Datei überschreiben" msgid "Over&write" msgstr "Überschreiben" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Dieses &Emoticon hinzufügen …" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Dieses &Emoticon ausblenden" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "&E-Mail senden" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Kont&akt hinzufügen" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "E-&Mail-Adresse kopieren" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Verknüpfung öffnen" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Verknüpfungs&adresse kopieren" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Chat &leeren" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Chat als Datei speichern …" @@ -676,7 +673,7 @@ msgstr "Schrift&farbe" msgid "C&lear Chat Window" msgstr "Chatfenster &leeren " -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -687,34 +684,34 @@ msgstr "" "lunch|phone|invisible.
Sie können auch Kurzbefehle wie /online oder /phone benutzen." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Fehlerhafte „/status“-Syntax" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "Es ist nicht möglich, während einem Gruppen-Chat, den „/block“-Befehl " "zu verwenden." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "„/block“-Befehl nicht verwendbar" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Es ist nicht möglich, während einem Gruppen-Chat, den „/unblock“-" "Befehl zu verwenden." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "„/unblock“-Befehl nicht verwendbar" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -724,19 +721,19 @@ msgstr "" "als Befehl eingeben wollten, sollten Sie Ihrer Nachricht ein zusätzliches " "„/“ hinzufügen." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Unbekannter Befehl" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "Das Senden der handgeschriebenen Nachricht ist fehlgeschlagen: Die Kontakte " "können sie nicht empfangen." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -745,18 +742,18 @@ msgstr "" "Das Senden der handgeschriebenen Nachricht ist fehlgeschlagen: Während des " "Erstellens ist ein Fehler aufgetreten." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Chat" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 – Chat" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -767,37 +764,37 @@ msgstr "" "wieder anzuzeigen, können Sie folgenden Kurzbefehl verwenden: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Menüleiste ausblenden" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Zeichenpinsel" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Radierer" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 tippt gerade …" -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 und %2 tippen gerade …" -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 und %3 andere tippen gerade …" -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -805,17 +802,17 @@ msgid "" "ul>
Chat started on:
%2
Connected with " "account:
%3
" msgstr "" -"

Chat-Informationen

Kontakte:
  • %" -"1
Chat-Beginn:
%2
Angemeldet mit:" -"
%3
" +"

Chat-Informationen

Kontakte:
  • " +"%1
Chat-Beginn:
%2
Angemeldet " +"mit:
%3
" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Handschriftmodus" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -824,22 +821,22 @@ msgstr "" "Handschriftmodus ist deaktiviert: Einige der Kontakte können keine " "handgeschriebenen Nachrichten empfangen." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " "messages." msgstr "" -"Handschriftmodus ist deaktiviert: Dieser Kontakt kann keine " -"handgeschriebenen Nachrichten empfangen." +"Handschriftmodus ist deaktiviert: Der Kontakt kann keine handgeschriebenen " +"Nachrichten empfangen." #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Animoticons" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." @@ -847,7 +844,7 @@ msgstr "" "Animoticons sind deaktiviert: Einige der Kontakte können keine Animoticons " "empfangen." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" @@ -857,51 +854,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "&Privaten Chat beginnen" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "E-Mail &senden" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Profil anzeigen" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Eigenschaften" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Kontakt hinzufügen" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Kontakt er&lauben" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "Kontakt löschen" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "Kontakt &blockieren" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Blockier&ung aufheben" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Spitzname" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Statusnachricht" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "&E-Mail-Adresse" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Namen des Musiktitels" @@ -927,15 +924,15 @@ msgstr "&Notizen" msgid "&Emoticons" msgstr "&Emoticons" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Kopieren" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Blockiert" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -943,17 +940,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Der Kontakt ist %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Herunterladen des Anzeigebildes fehlgeschlagen" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -982,7 +980,7 @@ msgstr "Neues hinzufügen" msgid "Edit" msgstr "Bearbeiten" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Entfernen" @@ -1038,52 +1036,52 @@ msgstr "Kompatibel zu Windows Live Messenger %1 " msgid "Windows Live Messenger compatible" msgstr "Kompatibel zu Windows Live Messenger" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Online" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Beschäftigt" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Abwesend" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Abwesend (mit Abwesenheitsnachricht)" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inaktiv" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Bin gleich zurück" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Am Telefon" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Beim Mittagessen" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Unsichtbar" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Offline" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Mein Status" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Verbindung trennen" @@ -1189,16 +1187,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Kontakteigenschaften von %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Verbunden" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Noch nicht gesehen" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Bisher keine Nachrichten erhalten" @@ -1226,21 +1224,21 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Programm: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "" "Sind Sie sicher, dass Sie das Anzeigebild dieses Kontakts benutzen möchten?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Kontakt-Anzeigebild kopieren" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Der ausgewählte Dateityp wird nicht von Phonon unterstützt." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Nicht unterstützter Dateityp" @@ -1758,11 +1756,11 @@ msgstr "" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
Reconnect now!" +"Waiting for an Internet connection to reconnect...
Reconnect now!" msgstr "" -"Auf Internetverbindung warten, um die Verbindung wiederherzustellen …" -"
Jetzt wiederverbinden" +"Auf Internetverbindung warten, um die Verbindung wiederherzustellen …
Jetzt wiederverbinden" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1826,7 +1824,7 @@ msgstr "Gruppe hinzufügen" msgid "Enter a name for the new group:" msgstr "Geben Sie einen Namen für die neue Gruppe ein:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1835,15 +1833,15 @@ msgstr "" "Sind Sie sicher, dass Sie %1 von Ihrer Kontaktliste entfernen " "wollen?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Kontakt löschen" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Löschen und blockieren" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1853,12 +1851,12 @@ msgstr "" "Die Gruppe %1 ist nicht leer! Entfernen Sie alle darin befindlichen " "Kontakte und versuchen Sie es erneut." -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Entfernen einer Gruppe" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1868,24 +1866,24 @@ msgstr "" "Sind Sie sicher, dass Sie die Gruppe %1 aus Ihrer Kontaktliste " "entfernen möchten?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Löschen" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Das ist eine spezielle Gruppe, die nicht verändert werden kann." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Gruppe umbenennen" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Geben Sie einen neuen Namen für die Gruppe ein:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1895,21 +1893,21 @@ msgstr "" "

Die automatische Anmeldung funktioniert nicht mit diesem Zugang: %1.
Sie müssen erst das Passwort des Zugangs speichern.

" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Automatische Anmeldung fehlgeschlagen" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Verbindung könnte unterbrochen sein …" -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Verbindung getrennt" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1917,7 +1915,7 @@ msgctxt "" msgid "

KMess has searched for it in the following folders:
%1

" msgstr "

KMess hat in den folgenden Ordner danach gesucht:
%1

" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1933,12 +1931,12 @@ msgstr "" "der folgenden Ordner gefunden werden:

%1

Bitte überprüfen Sie Ihre " "Installation.

" -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Benachrichtigungsfehler" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1947,210 +1945,205 @@ msgstr "KMess – %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Verbinden" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "Verbin&dung trennen" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Mein &Profil anzeigen" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Erl&aubte Kontakte anzeigen" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "&Offline-Kontakte anzeigen" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Gelöschte Kontakte anzeigen" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Ereigniskasten anzeigen" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Kontakt&suchleiste anzeigen" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "L&eere Gruppen anzeigen" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "Kontaktanzeigebilder" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Kontakte &sortieren nach" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Über&tragungsfenster anzeigen …" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Kontakt hinzufügen …" -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Neue &Gruppe erstellen …" -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "Kontaktliste &exportieren …" -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "C&hat-Protokolle anzeigen …" -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Neuen Zug&ang erstellen …" -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Zug&ang bearbeiten …" -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "&KMess einrichten …" -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Auswahl&menü zeigen" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Nicht anzeigen" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Klein" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Mittel" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Groß" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Gruppe" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Online/Offline" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Gemischt" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "&Netzwerkfenster anzeigen …" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] angemeldet mit %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 hat sich angemeldet" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 hat sich abgemeldet" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Cha&t" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Aus G&ruppe entfernen" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "In Gruppe kopieren" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "In Gruppe verschieben" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Gruppe nach unten verschieben" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Gruppe nach &oben verschieben" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Gruppe löschen" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Gruppe umbe&nennen" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Dieser Kontakt hat Sie nicht in seiner/ihrer Kontaktliste." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "E-Mail-Adresse" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Programm" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Ja" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Nein" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Blockiert" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Zuletzt online" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Letzte Nachricht" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Gruppe %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2158,7 +2151,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 Kontakt, " msgstr[1] "%1 Kontakte, " -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2166,7 +2159,7 @@ msgid_plural "%1 online" msgstr[0] "%1 online" msgstr[1] "%1 online" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2174,35 +2167,34 @@ msgid_plural "%1 contacts" msgstr[0] "%1 Kontakt" msgstr[1] "%1 Kontakte" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Klicken Sie hier, um Ihren Spitznamen zu ändern." -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Hier klicken, um Statusnachricht einzugeben[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " "along with your friendly name" msgstr "" "Klicken Sie hier, um eine Nachricht einzugeben, die Ihre Kontakte sehen " -"sollen. Sie wird " -"neben Ihrem Spitznamen zu sehen sein." +"sollen. Sie wird neben Ihrem Spitznamen zu sehen sein." -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Es können keine Chat-Protokolle für diesen Kontakt gefunden werden." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Keine Chat-Protokolle gefunden" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2212,13 +2204,25 @@ msgstr "" "Sie, dass neue Chats standardmäßig nicht protokolliert werden. Sie können " "das protokollieren Ihrer Chats, in den Zugangseinstellungen aktivieren." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 neue E-Mail-Nachricht" msgstr[1] "%1 neue E-Mail-Nachrichten" +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "" +"Kontakten zeigen welchen Musiktitel Sie gerade hören (klicken Sie hier, um " +"es zu deaktivieren)" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "" +"Kontakten zeigen welchen Musiktitel Sie gerade hören (klicken Sie hier, um " +"es zu aktivieren)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2908,48 +2912,56 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspiration und verschiedener Code" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Alter Popup-Balloon-Code, ursprünglicher P2P-Code, MSN-Challenge-Handler" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Code zur Inaktivitätserkennung" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" # ugly -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "" "Code für den Dialog, der beim Schließen von KMess ein Bild vom " "Systemabschnitt der Kontrollleiste zeigt." -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" # ugly -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" @@ -2957,7 +2969,7 @@ msgstr "" "eines Symbols im Systemabschnitt der Kontrollleiste" # ugly -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2966,12 +2978,12 @@ msgstr "" "Aktivieren ließ und Umgehungslösung eines Problems mit KWins Funktion " "„Vorbeugung gegen unerwünschte Aktivierung“" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" # ugly -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2980,33 +2992,33 @@ msgstr "" "veröffentlichen!\n" "Wenn Sie denken, dass Ihr Name hier fehlt kontaktieren Sie uns bitte!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Ihr Name soll auch hier stehen?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Panagiotis Papadopoulos" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "pano_90@gmx.net" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Das Kontaktlistenfenster beim Start nicht anzeigen" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Automatisch mit der angegebenen E-Mail-Adresse anmelden" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Einen Debug-Test ausführen (nur in der Entwickler-Version möglich)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3057,7 +3069,7 @@ msgstr "Hier klicken, um abzubrechen." #: network/applications/filetransferp2p.cpp:233 #, kde-format msgid "The contact wants to send you a file: "%1" (%2)." -msgstr "Der Kontakt will Ihnen eine Datei senden: „%1“ (%2)." +msgstr "Der Kontakt will Ihnen eine Datei senden: „%1“ (%2)." #: network/applications/filetransfer.cpp:260 #: network/applications/filetransferp2p.cpp:346 @@ -3066,7 +3078,7 @@ msgid "" "The file "%1" already exists.\n" "Do you want to overwrite it?" msgstr "" -"Die Datei „%1“ existiert bereits.\n" +"Die Datei „%1“ existiert bereits.\n" "Möchten Sie sie überschreiben?" #: network/applications/filetransfer.cpp:290 @@ -3075,8 +3087,8 @@ msgstr "" msgid "" "The transfer of the file "%1" failed. Could not save the file." msgstr "" -"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei " -"kann nicht gespeichert werden." +"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei kann nicht " +"gespeichert werden." #: network/applications/filetransfer.cpp:295 #, kde-format @@ -3084,8 +3096,8 @@ msgid "" "The transfer of the file "%1" failed. Could not open the " "destination file." msgstr "" -"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Zieldatei " -"kann nicht geöffnet werden." +"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Zieldatei kann nicht " +"geöffnet werden." #: network/applications/filetransfer.cpp:319 msgid "Transfer accepted." @@ -3102,20 +3114,19 @@ msgstr "Verbinde zu %1, Port %2" #: network/applications/filetransferp2p.cpp:548 #, kde-format msgid "The contact has cancelled the transfer of the file "%1"." -msgstr "" -"Der Kontakt hat die Übertragung der Datei „%1“ abgebrochen." +msgstr "Der Kontakt hat die Übertragung der Datei „%1“ abgebrochen." #: network/applications/filetransfer.cpp:432 #: network/applications/filetransferp2p.cpp:559 #, kde-format msgid "You have cancelled the transfer of the file "%1"." -msgstr "Sie haben die Übertragung der Datei „%1“ abgebrochen." +msgstr "Sie haben die Übertragung der Datei „%1“ abgebrochen." #: network/applications/filetransfer.cpp:443 #: network/applications/filetransferp2p.cpp:570 #, kde-format msgid "You have rejected the transfer of the file "%1"." -msgstr "Sie haben die Übertragung der Datei „%1“ abgelehnt." +msgstr "Sie haben die Übertragung der Datei „%1“ abgelehnt." #: network/applications/filetransfer.cpp:490 msgid "Connection established" @@ -3125,13 +3136,13 @@ msgstr "Verbindung hergestellt" #: network/applications/filetransferp2p.cpp:674 #, kde-format msgid "Successfully sent the file "%1"." -msgstr "Die Datei „%1“ ist erfolgreich übertragen worden." +msgstr "Die Datei „%1“ ist erfolgreich übertragen worden." #: network/applications/filetransfer.cpp:585 #: network/applications/filetransferp2p.cpp:678 #, kde-format msgid "Successfully received the file "%1"." -msgstr "Die Datei „%1“ ist erfolgreich empfangen worden." +msgstr "Die Datei „%1“ ist erfolgreich empfangen worden." #: network/applications/filetransfer.cpp:742 #: network/applications/filetransferp2p.cpp:811 @@ -3139,8 +3150,7 @@ msgstr "Die Datei „%1“ ist erfolgreich empfangen worden." msgid "" "The transfer of the file "%1" failed. The file does not exist." msgstr "" -"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei " -"existiert nicht." +"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei existiert nicht." #: network/applications/filetransfer.cpp:747 #: network/applications/filetransferp2p.cpp:816 @@ -3148,20 +3158,20 @@ msgstr "" msgid "" "The transfer of the file "%1" failed. The file could not be read." msgstr "" -"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei " -"kann nicht gelesen werden." +"Die Übertragung der Datei „%1“ ist fehlgeschlagen. Die Datei kann nicht " +"gelesen werden." #: network/applications/filetransfer.cpp:774 #: network/applications/filetransferp2p.cpp:850 #, kde-format msgid "Sending file "%1" (%2)." -msgstr "Sende Datei „%1“ (%2)." +msgstr "Sende Datei „%1“ (%2)." #: network/applications/filetransfer.cpp:799 #: network/applications/filetransferp2p.cpp:888 #, kde-format msgid "The contact has accepted the transfer of the file "%1"." -msgstr "Der Kontakt hat der Übertragung der Datei „%1“ zugestimmt." +msgstr "Der Kontakt hat der Übertragung der Datei „%1“ zugestimmt." #: network/applications/filetransfer.cpp:817 #: network/applications/filetransferp2p.cpp:393 @@ -3181,7 +3191,7 @@ msgstr "" #: network/applications/filetransferp2p.cpp:404 #, kde-format msgid "You have accepted the transfer of the file "%1"." -msgstr "Sie haben der Übertragung der Datei „%1“ zugestimmt." +msgstr "Sie haben der Übertragung der Datei „%1“ zugestimmt." #: network/applications/filetransferp2p.cpp:614 msgid "File could not be written" @@ -3378,13 +3388,12 @@ msgstr "" #: network/extra/msnftpconnection.cpp:120 #, kde-format msgid "You have cancelled the transfer of file "%1"." -msgstr "Sie haben die Übertragung der Datei „%1“ abgebrochen." +msgstr "Sie haben die Übertragung der Datei „%1“ abgebrochen." #: network/extra/msnftpconnection.cpp:126 #, kde-format msgid "The contact has cancelled the transfer of file "%1"." -msgstr "" -"Der Kontakt hat die Übertragung der Datei „%1“ abgebrochen." +msgstr "Der Kontakt hat die Übertragung der Datei „%1“ abgebrochen." #: network/extra/msnftpconnection.cpp:133 msgid "Failed" @@ -3706,24 +3715,24 @@ msgstr "MSN-Fehler %1" msgid "Trying the HTTP fallback..." msgstr "Ausweich-Verbindung über HTTP wird versucht …" -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Authentisieren …" -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Authentifiziert" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Verbinden …" -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Unbekannter Befehl vom Server empfangen: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3731,52 +3740,52 @@ msgid_plural "%1 minutes" msgstr[0] "%1 Minute" msgstr[1] "%1 Minuten" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Der Server schließt für Wartungsarbeiten in %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "" "Die Live-Messenger-Dienst werden in %1 für Wartungsarbeiten heruntergefahren." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
Details: %1" msgstr "KMess kann die Offline-Nachrichten nicht verarbeiten.
Details: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "Der SOAP-Client ist nicht mehr gültig." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Authentifizierungszeitlimit überschritten" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Auf Kontaktliste warten …" -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

Warning: %1

" msgstr "

Warnung: %1

" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN-Warnung" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
Internal error reason: %1" msgstr "
Grund des internen Fehlers: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

Authentication has failed, please verify your account email and password." @@ -3785,20 +3794,20 @@ msgstr "" "

Authentifizierung fehlgeschlagen. Bitte überprüfen Sie Ihren Zugangsnamen " "und ihr Passwort.

" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN-Fehler" # ugly -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

The account %1 has been connected from another location.

" msgstr "" "

Der Zugang %1 ist von einem anderen Ort aus angemeldet worden.

" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3809,7 +3818,7 @@ msgstr "" "i>, entweder mit einem anderem Messenger-Programm oder von einem anderen Ort " "aus, angemeldet.

" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

Unable to connect to the Live Messenger service.
Maybe you need to " @@ -3819,7 +3828,7 @@ msgstr "" "
Es könnte sein, dass Sie sich zuerst authentisieren müssen, bevor Sie " "auf das Netzwerk zugreifen können.

" -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3837,7 +3846,7 @@ msgstr "" "die Messenger-Statusseite anzuzeigen.

" # ugly -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

Unable to resolve the authentication on the client
Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

" @@ -3845,7 +3854,7 @@ msgstr "" "

Die Authentisierung von KMess kann nicht aufgelöst werden.
Vielleicht " "ist bei Ihnen „qca2“ und/oder „qca2-plugin-ossl“ nicht installiert?

" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

KMess could not connect to the Live Messenger servers.
You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
It is also " @@ -3856,12 +3865,12 @@ msgstr "" "KMess funktioniert.
Es ist auch möglich, dass das MSN-Netzwerk zurzeit " "nicht erreichbar ist.

" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

Unable to connect to the Live Messenger service.

" msgstr "

Kann nicht zum Live-Messenger-Service verbinden.

" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3872,59 +3881,59 @@ msgid "" msgstr "" "

KMess kann sich nicht mit den Live-Messenger-Servern verbinden.
" "Entweder besteht ein Problem mit Ihrer Internetverbindung, oder die Live-" -"Messenger-Server könnten zurzeit nicht erreichbar sein.

Klicken Sie hier , um die Messenger-Statusseite anzuzeigen.

" +"Messenger-Server könnten zurzeit nicht erreichbar sein.

Klicken Sie hier , um die Messenger-Statusseite anzuzeigen.

" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

Error: %1

" msgstr "

Fehler: %1

" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

Der Live-Messenger-Server hat einen Fehler gemeldet:

%1

" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

Messenger Service Error: %1

" msgstr "

Messenger-Service-Fehler: %1

" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

Der Live-Messenger-Server meldet einen Fehler:

%1

" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

KMess Error: %1

" msgstr "

KMess-Fehler: %1

" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

KMess has encountered an internal error:

%1

" msgstr "

KMess ist einem internen Fehler begegnet:

%1

" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

Network connection lost.

" msgstr "

Netzwerk-Verbindung verloren.

" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

Connection to the Live Messenger server has been lost.

" msgstr "

Die Verbindung zum Live-Messenger-Server ist verloren gegangen.

" -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3972,14 +3981,14 @@ msgstr[1] "%1 Pings verloren" msgid "The connection to the server was lost" msgstr "Die Verbindung zum Server ging verloren" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "" "Die eingegebene E-Mail-Adresse, „%1“, ist keine gültige E-Mail-Adresse!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3989,42 +3998,42 @@ msgstr "" "Die eingegebene E-Mail-Adresse, „%1“, gehört zu keinem „Live Messenger“-" "Zugang!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Ungültige Web-Service-Anfrage (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Der Webdienst ist nicht zugreifbar (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Zu viele Weiterleitungen durch den Webdienst" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Der Offline-Nachrichten-Webdienst ist zurzeit nicht verfügbar" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Der Live-Messenger-Webdienst hat zurzeit Probleme." -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Ungültige Antwort vom Webdienst %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Keine Antwort vom Webdienst" @@ -4173,38 +4182,117 @@ msgstr "%1
ist am Telefon" msgid "%1
is out for lunch" msgstr "%1
ist beim Mittagessen" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +msgid "You received a new e-mail message" +msgstr "Sie haben eine neue E-Mail-Nachricht erhalten" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +msgid "A contact messaged you" +msgstr "Ein Kontakt hat Ihnen eine Nachricht gesendet" + +#: notification/macnotification.cpp:90 +msgid "A contact came online" +msgstr "Ein Kontakt ist nun online" + +#: notification/macnotification.cpp:96 +msgid "A contact went offline" +msgstr "Ein Kontakt ist nun offline" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +msgid "KMess notification" +msgstr "KMess-Benachrichtigung" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
'%1'
by '%2'" msgstr "Neue E-Mail:
„%1“
von „%2“" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

Closing the main window will keep KMess running in the system tray.

You can open KMess again by clicking on the bird icon, which is now " +"flashing.
Use 'Quit' from the 'Connect' menu to quit the application.

" +msgstr "" +"Wenn Sie das Hauptfenster von KMess schließen, wird KMess im Systemabschnitt " +"der Kontrollleiste weiterhin ausgeführt. Um KMess zu beenden, benutzen Sie " +"„Beenden“ aus dem Punkt „Verbinden“ in der Menüleiste." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Im Systemabschnitt der Kontrollleiste einbetten" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Verbinde zu %1, Port %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

Connected as:
%1 (%2)

" +msgstr "
%1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Nicht verbunden" + +#: notification/newsystemtraywidget.cpp:219 +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

Not connected

" +msgstr "

Nicht verbunden

" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Chatten" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Nachricht hinterlassen" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Nachricht anzeigen" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Details" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "E-Mail lesen" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Ausblenden" @@ -4218,11 +4306,6 @@ msgstr "" "der Kontrollleiste weiterhin ausgeführt. Um KMess zu beenden, benutzen Sie " "„Beenden“ aus dem Punkt „Verbinden“ in der Menüleiste." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Im Systemabschnitt der Kontrollleiste einbetten" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4255,21 +4338,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " – %1 E-Mails" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Auswählen …" -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Bild auswählen und zuschneiden …" -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Vorheriges Bild wählen …" #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Anzeigebild" @@ -4680,7 +4763,7 @@ msgstr "Klicken Sie auf diesen Knopf, um zum Textmodus umzuschalten." msgid "" "Click this button to switch to the handwriting mode, so you can write or " "paint a handwritten message." -msgstr "Klicken Sie diesen Knopf, um in dem Handschriftmodus zu wechseln." +msgstr "Klicken Sie auf diesen Knopf, um in dem Handschriftmodus zu wechseln." #. i18n: file: chat/chatwindow.ui:238 #. i18n: ectx: property (toolTip), widget (QToolButton, standardEmoticonButton_) @@ -5199,7 +5282,7 @@ msgstr "Geben Sie hier das Passwort Ihres Zugangs ein." #. i18n: ectx: property (text), widget (QLabel, initialStatusLabel_) #: rc.cpp:296 msgid "Status at login:" -msgstr "Status beim anmelden:" +msgstr "Status beim Anmelden:" #. i18n: file: initialview.ui:243 #. i18n: ectx: property (toolTip), widget (QComboBox, initialStatus_) @@ -6644,6 +6727,10 @@ msgstr "" "
\n" "Ihre E-Mail-Adresse wird nur für diesen Kommentar verwendet." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Dieser Kontakt hat Sie nicht in seiner/ihrer Kontaktliste." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Geben Sie hier Ihre Statusnachricht ein>" diff --git a/po/el.po b/po/el.po index 4b19ba0..4394afe 100644 --- a/po/el.po +++ b/po/el.po @@ -8,17 +8,18 @@ msgid "" msgstr "" "Project-Id-Version: el\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-02-28 10:10+0100\n" "Last-Translator: Glentadakis Dimitrios \n" "Language-Team: Greek \n" +"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.0\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Είμαι μακριά από τον υπολογιστή μου" @@ -26,7 +27,7 @@ msgstr "Είμαι μακριά από τον υπολογιστή μου" msgid "Your name" msgstr "Το ψευδώνυμό σας" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "εσείς@hotmail.com" @@ -495,39 +496,39 @@ msgstr "Αντικατάσταση αρχείου" msgid "Over&write" msgstr "Αντικατάσταση" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Προσθέστε αυτό το &εικονίδιο διάθεσης..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Απόκρυψη αυτού του &εικονιδίου διάθεσης" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Αποστολή &email" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Προσθήκη επαφής" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Αντιγραφή διεύθυνσης e&mail" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Ακολουθήστε τον &δεσμό" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Αντιγραφή διεύθυνσης" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Καθαρισμός συνομιλίας" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Αποθήκευση της συνομιλίας σε &αρχείο..." @@ -668,7 +669,7 @@ msgstr "&Χρώμα γραμματοσειράς" msgid "C&lear Chat Window" msgstr "Καθαρισμός παραθύρου συνομιλίας" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -679,34 +680,34 @@ msgstr "" "b>.
Μπορείτε επίσης να χρησιμοποιήσετε τις συντομεύσεις όπως /online ή /phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Λάθος σύνταξη για την εντολή /status" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "Δεν μπορείτε να χρησιμοποιήσετε την εντολή /block σε μια ομαδοποιημένη " "συνομιλία." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Αδύνατη η χρήση της εντολής /block" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Δεν μπορείτε να χρησιμοποιήσετε την εντολή /unblock σε μια " "ομαδοποιημένη συνομιλία." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Αδύνατη η χρήση της εντολής /unblock" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -715,18 +716,18 @@ msgstr "" "Άγνωστη εντολή %1. Αν το μήνυμά σας δεν είναι μία εντολή, " "προσθέστε ακόμα ένα / στην αρχή του μηνύματος." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Άγνωστη εντολή" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "Η αποστολή του χειρόγραφου μηνύματος απέτυχε: οι επαφές δεν το υποστηρίζουν." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -735,18 +736,18 @@ msgstr "" "Η αποστολή του χειρόγραφου μηνύματος απέτυχε: συνέβη ένα σφάλμα κατά την " "δημιουργία του." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Συνομιλία" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Συνομιλία" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -756,37 +757,37 @@ msgstr "" "Είστε σίγουρος ότι θέλετε να αποκρύψετε τη γραμμή μενού; Θα μπορείτε " "να την επανεμφανίσετε με την συντόμευση πληκτρολογίου: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Απόκρυψη γραμμής μενού" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Πινέλο" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Γόμα" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "Ο χρήστης %1 πληκτρολογεί..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "Οι χρηστές %1 και %2 πληκτρολογούν..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "Οι χρήστες %1, %2 και ακόμα %3 πληκτρολογούν..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -794,17 +795,17 @@ msgid "" "ul>
Chat started on:
%2
Connected with " "account:
%3
" msgstr "" -"

Πληροφορίες Συνομιλίας

Επαφές:
  • %" -"1
Έναρξη συνομιλίας στις:
%2

Πληροφορίες Συνομιλίας

Επαφές:
  • " +"%1
Έναρξη συνομιλίας στις:
%2
Σύνδεση ως:
%3
" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Λειτουργία χειρόγραφου" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -813,7 +814,7 @@ msgstr "" "Η λειτουργία χειρόγραφων μηνυμάτων είναι απενεργοποιημένη: μερικές από τις " "επαφές δεν υποστηρίζουν την λήψη χειρόγραφων μηνυμάτων." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -824,18 +825,19 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Νεύματα" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" -msgid "Winks are disabled: some of the contacts do not support receiving winks." +msgid "" +"Winks are disabled: some of the contacts do not support receiving winks." msgstr "" "Τα νεύματα είναι απενεργοποιημένα: κάποιες από τις επαφές δεν υποστηρίζουν " "την λήψη νευμάτων." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" @@ -846,51 +848,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "&Ξεκινήστε Ιδιωτική Συνομιλία" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "Αποστολή Email" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "Προβολή προφίλ" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Ιδιότητες" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "Προσθήκη επαφής" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Επιτρεπόμενη επαφή" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Διαγραφή επαφής" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Φραγή επαφής" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Αναίρεση φραγής επαφής" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "Ψευδώνυμο" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "Προσωπικό μήνυμα" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Διεύθυνση &email" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "&Τίτλος τραγουδιού" @@ -916,15 +918,15 @@ msgstr "&Σημειώσεις" msgid "&Emoticons" msgstr "&Εικονίδια διάθεσης" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Αντιγραφή" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Σε φραγή" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -932,17 +934,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Η επαφή είναι %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Η λήψη του avatar απέτυχε" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -972,7 +975,7 @@ msgstr "Προσθήκη νέου" msgid "Edit" msgstr "Επεξεργασία" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Αφαίρεση" @@ -1028,52 +1031,52 @@ msgstr "Συμβατό με Windows Live Messenger %1" msgid "Windows Live Messenger compatible" msgstr "Συμβατό Windows Live Messenger" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Σε σύνδεση" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Απασχολημένος" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Απουσία" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Απουσία με αυτόματη απάντηση" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Αδρανής" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Παρατεταμένη απουσία" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Στο τηλέφωνο" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Για γεύμα" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Αόρατος" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Χώρίς σύνδεση" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Κατάσταση" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Αποσύνδεση" @@ -1182,16 +1185,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Ιδιότητες της επαφής %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Σε Σύνδεση" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Δεν εμφανίστηκε ακόμα" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Κανένα μήνυμα ακόμα" @@ -1219,21 +1222,21 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Πελάτης: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "" "Είστε σίγουρος ότι θέλετε να χρησιμοποιήσετε το avatar αυτής της επαφής;" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Αντιγραφή εικόνας επαφής" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Ο επιλεγμένος τύπος αρχείων δεν υποστηρίζεται από το Phonon" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Ο τύπος αρχείων δεν υποστηρίζεται" @@ -1749,11 +1752,11 @@ msgstr "" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
Reconnect now!" +"Waiting for an Internet connection to reconnect...
Reconnect now!" msgstr "" -"Αναμονή σύνδεσης στο διαδίκτυο για επανασύνδεση...
Επανασύνδεση τώρα!" +"Αναμονή σύνδεσης στο διαδίκτυο για επανασύνδεση...
Επανασύνδεση τώρα!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1772,8 +1775,8 @@ msgstr[0] "" "Αναμονή %1 δευτερολέπτου πριν την επανασύνδεση...
Επανασύνδεση τώρα!" msgstr[1] "" -"Αναμονή %1 δευτερολέπτων πριν την επανασύνδεση...
Επανασύνδεση τώρα!" +"Αναμονή %1 δευτερολέπτων πριν την επανασύνδεση...
Επανασύνδεση τώρα!" #: initialview.cpp:662 msgctxt "Button label" @@ -1818,7 +1821,7 @@ msgstr "Προσθήκη μίας ομάδας" msgid "Enter a name for the new group:" msgstr "Εισάγετε ένα όνομα για την ομάδα :" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1827,15 +1830,15 @@ msgstr "" "Επιθυμείτε σίγουρα την αφαίρεση της επαφής %1 από την λιστα " "επαφών σας;" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Αφαίρεση επαφής" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Αφαίρεση και φραγή" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1845,12 +1848,12 @@ msgstr "" "Η ομάδα %1 δεν είναι κενή! Πρώτα αφαιρέστε όλες τις επαφές από αυτή " "την ομάδα, και έπειτα προσπαθήστε ξανά!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Αφαίρεση ομάδας" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1860,24 +1863,24 @@ msgstr "" "Επιθυμείτε σίγουρα τη αφαίρεση της ομάδας %1 από τη λίστα επαφών " "σας;" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Αφαίρεση" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Αυτή είναι μια ειδική ομάδα, η οποία δεν μπορεί να τροποποιηθεί." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Μετονoμασία ομάδας" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Εισάγετε το νέο όνομα για την ομάδα:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1887,21 +1890,21 @@ msgstr "" "

Η αυτόματη σύνδεση δεν είναι δυνατή για το λογαριασμό %1:
πρέπει πρώτα να αποθηκεύσετε τον κωδικό του λογαριασμού!

" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Η αυτόματη σύνδεση απέτυχε" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Η σύνδεση μπορεί να είναι κλειστή..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Αποσυνδεδεμένος" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1909,7 +1912,7 @@ msgctxt "" msgid "

KMess has searched for it in the following folders:
%1

" msgstr "

Το KMess έψαξε γι' αυτό στους παρακάτω φακέλους:
%1

" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1924,12 +1927,12 @@ msgstr "" "

Το απαραίτητο αρχείο 'kmess.notifyrc' δεν βρέθηκε σε κανένα φάκελο " "εφαρμογών.

%1

Παρακαλώ ελέγξτε την εγκατάστασή σας.

" -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Σφάλμα με τις ειδοποιήσεις" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1938,210 +1941,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Σύνδεση" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "Αποσύνδεση" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Εμφάνιση των στοιχείων μου" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Εμφάνιση επιτρεπόμενων επαφών" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Εμφάνιση μη συνδεδεμένων επαφών" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Εμφάνιση διαγραμμένων επαφών " -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Προβολή πλαισίου καταγραφών" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Εμφάνιση της γραμμής αναζήτησης" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Εμφάνιση κενών ομάδων" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "Μέγεθος εμφάνισης εικόνων" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Ταξινόμηση επαφών ανά" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Εμφάνιση παραθύρου μεταφορών..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Νέα επαφή..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Νέα &ομάδα..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "Εξαγωγή της λίστας επαφών..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Εμφάνιση ιστορικού συνομιλιών..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Νέος &λογαριασμός..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Ρύθμιση Λογαριασμού ..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Ρύθμιση του &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Εμφάνιση του μενού Επιλογών" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Να μην εμφανίζεται" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Μικρό" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Μεσαίο" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Μεγάλο" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Ομάδα" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Συνδεδεμένοι/Αποσυνδεδεμένοι" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Ανάμεικτα" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Εμφάνιση παραθύρου δικτύου..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Σύνδεση ως %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1]Ο χρήστης %2 συνδέθηκε" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1]Ο χρήστης %2 αποσυνδέθηκε" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Συνομιλία" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Αφαίρεση από την Ομάδα" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "Αντιγραφή στην Ομάδα" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "Μετακίνηση στην Ομάδα" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Μετακινήστε την Ομάδα προς τα Κάτω" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Μετακινήστε την Ομάδα προς τα Πάνω" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Αφαίρεση ομάδας" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Μετονoμασία ομάδας" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Αυτή η επαφή δεν σας εχει στην λίστα επαφών της" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Διεύθυνση email" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Πελάτης" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Ναι" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Όχι" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Σε φραγή" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Τελευταία παρουσία" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Τελευταίο μήνυμα" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Oμάδα %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2149,7 +2147,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 επαφή," msgstr[1] "%1 επαφές," -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2157,7 +2155,7 @@ msgid_plural "%1 online" msgstr[0] "%1 Σε σύνδεση" msgstr[1] "%1 Σε σύνδεση" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2165,18 +2163,18 @@ msgid_plural "%1 contacts" msgstr[0] "%1 επαφή" msgstr[1] "%1 επαφές" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Πατήστε εδώ για να αλλάξετε το ψευδώνυμό σας" # i want to set a short phrase to fit in the main window -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Γράψτε εδώ το προσωπικό σας μήνυμα[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2185,15 +2183,15 @@ msgstr "" "Γράψτε εδώ ένα μήνυμα για να δείξετε στις επαφές σας: θα εμφανίζεται μαζί με " "το ψευδώνυμό σας" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Δεν βρέθηκαν καταγραφές συνομιλιών γι' αυτή την επαφή." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Δεν βρέθηκε ιστορικό συνομιλιών." -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2204,13 +2202,23 @@ msgstr "" "νέες συνομιλίες, μπορείτε να ενεργοποιήσετε την ενέργεια αυτή από τις " "ρυθμίσεις λογαριασμού." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 νέο μήνυμα email" msgstr[1] "%1 νέα μηνύματα email" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Εμφάνιση του τραγουδιού που ακούω" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Εμφάνιση του τραγουδιού που ακούω" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2596,7 +2604,8 @@ msgid "Andrea Decorte" msgstr "Andrea Decorte" #: main.cpp:131 -msgid "More Italian translation, Group selection in 'contact added user' dialog" +msgid "" +"More Italian translation, Group selection in 'contact added user' dialog" msgstr "" "Επιπλέον ιταλική μετάφραση, επιλογή ομάδας στον διάλογο « προστιθέμενες " "επαφές χρήστη » " @@ -2893,53 +2902,61 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Έμπνευση και κοινός κώδικας" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Παλιός κώδικας των popups ειδοποιήσεων, αρχικός κώδικας για P2P, διαχείριση " "σφαλμάτων με MSN" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Κώδικας του μετρητή αδράνειας" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "" "Κώδικας για το στιγμιότυπο κλεισίματος με ενσωμάτωση στο πλαίσιο συστήματος" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Υλοποίηση προσαρμοσμένης διαχείρισης κατάρρευσης προγράμματος, υλοποίηση " "επικάλυψης του εικονιδίου κατάστασης" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2947,11 +2964,11 @@ msgstr "" "Το KNotify δεν εστιάζει στην διόρθωση σφαλμάτων και το KWin εστιάζει στην " "κλοπή εναλλακτικής πρόληψης" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2961,35 +2978,35 @@ msgstr "" "αν νομίζετε πως το όνομά σας λείπει από αυτή τη λίστα, επικοινωνήστε μαζί " "μας επίσης!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Το όνομά σας εδώ ;" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Glentadakis Dimitrios" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "dglent@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Να μην εμφανίζεται το παράθυρο με την λίστα επαφών στην εκκίνηση" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Αυτόματη σύνδεση με αυτόν το λογαριασμό" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "" "Εκκινήστε το πρόγραμμα σε κατάσταση αποσφαλμάτωσης (για την έκδοση ανάπτυξης " "μόνο)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3056,7 +3073,8 @@ msgstr "" #: network/applications/filetransfer.cpp:290 #: network/applications/filetransferp2p.cpp:376 #, kde-format -msgid "The transfer of the file "%1" failed. Could not save the file." +msgid "" +"The transfer of the file "%1" failed. Could not save the file." msgstr "" "Η μεταφορά του αρχείου "%1" απέτυχε. Αδύνατη η αποθήκευση του " "αρχείου." @@ -3118,7 +3136,8 @@ msgstr "Η επαφή έλαβε το αρχείο επιτυχώς "%1&quo #: network/applications/filetransfer.cpp:742 #: network/applications/filetransferp2p.cpp:811 #, kde-format -msgid "The transfer of the file "%1" failed. The file does not exist." +msgid "" +"The transfer of the file "%1" failed. The file does not exist." msgstr "Η μεταφορά του αρχείου "%1" απέτυχε. Το αρχείο δεν υπάρχει." #: network/applications/filetransfer.cpp:747 @@ -3314,7 +3333,8 @@ msgstr "Η μεταφορά απέτυχε. Παρουσιάστηκε ένα ε #: network/applications/p2papplicationbase.cpp:1210 msgid "The transfer failed. Could not open data source." -msgstr "Η μεταφορά του αρχείου απέτυχε. Αδύνατο το άνοιγμα της πηγής δεδομένων." +msgstr "" +"Η μεταφορά του αρχείου απέτυχε. Αδύνατο το άνοιγμα της πηγής δεδομένων." #: network/applications/unknownapplication.cpp:53 #, kde-format @@ -3666,24 +3686,24 @@ msgstr "Σφάλμα MSN %1" msgid "Trying the HTTP fallback..." msgstr "Δοκιμή της σύνδεσης HTTP" -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Ταυτοποίηση..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Επιβεβαιώθηκε" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Σύνδεση..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Άγνωστη εντολή λήφθηκε από τον εξυπηρετητή: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3691,53 +3711,53 @@ msgid_plural "%1 minutes" msgstr[0] "%1 λεπτό" msgstr[1] "%1 λεπτά" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Ο εξυπηρετητής θα κλείσει για λόγους συντήρησης σε %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Ο εξυπηρετητής MSN Live θα κλείσει για λόγους συντήρησης σε %1." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
Details: %1" msgstr "" "Το KMess δεν μπόρεσε να επεξεργαστεί τα μηνύματα εκτός σύνδεσης.
Λεπτομέρειες: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "Ο πελάτης SOAP δεν είναι έγκυρος πια." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Η πιστοποίηση απέτυχε (τέλος χρονικού ορίου)" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Αναμονή της λίστας επαφών " -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

Warning: %1

" msgstr "

Προσοχή: %1

" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Προειδοποίηση MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
Internal error reason: %1" msgstr "
Αιτία εσωτερικού σφάλματος: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

Authentication has failed, please verify your account email and password." @@ -3746,18 +3766,18 @@ msgstr "" "

Η ταυτοποίηση απέτυχε. Παρακαλώ βεβαιωθείτε οτι εισάγατε το σωστό κωδικό " "πρόσβασης ή το σωστό όνομα του λογαριασμού σας

" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Σφάλμα MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

The account %1 has been connected from another location.

" msgstr "

Ο λογαριασμός %1 συνδέθηκε από άλλη τοποθεσία.

" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3767,7 +3787,7 @@ msgstr "" "

Έχετε αποσυνδεθεί : έχετε συνδεθεί με τον λογαριασμό %1 από έναν " "άλλο πελάτη MSN, ή από άλλη τοποθεσία.

" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

Unable to connect to the Live Messenger service.
Maybe you need to " @@ -3776,7 +3796,7 @@ msgstr "" "

Αδύνατη η σύνδεση στην υπηρεσία Live Messenger.
Μήπως θα πρέπει να " "συνδεθείτε με το λογαριασμό σας, ώστε να αποκτήσετε πρόσβαση στο δίκτυο;

" -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3793,7 +3813,7 @@ msgstr "" "διαμεσολαβητή για πρόσβαση στο δίκτυο.

Πατήστε εδώγια " "να επισκεφθείτε την σελίδα κατάστασης του Messenger:

" -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

Unable to resolve the authentication on the client
Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

" @@ -3801,7 +3821,7 @@ msgstr "" "

Είναι αδύνατος ο έλεγχος της αυθεντικότητας στον πελάτη
Μήπως δεν " "έχετε εγκαταστήσει το qca2 ή/και το qca2-plugin-ossl;

" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

KMess could not connect to the Live Messenger servers.
You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
It is also " @@ -3812,12 +3832,12 @@ msgstr "" "για να κάνετε το KMess να δουλέψει.
Είναι επίσης πιθανόν το δίκτυο του " "MSN να μην είναι διαθέσιμο αυτή τη στιγμή.

" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

Unable to connect to the Live Messenger service.

" msgstr "

Αδύνατη η σύνδεση στην υπηρεσία Live Messenger.

" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3832,56 +3852,56 @@ msgstr "" "href='%1'>Πατήστε εδώγια να επισκεφθείτε την σελίδα κατάστασης του " "Messenger:

" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

Error: %1

" msgstr "

Σφάλμα.%1

" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

Ο εξυπηρετητής Live Messenger ανέφερε ένα σφάλμα:

%1

" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

Messenger Service Error: %1

" msgstr "

Σφάλμα της υπηρεσίας Messenger: %1

" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

Ο εξυπηρετητής Live Messenger ανέφερε ένα σφάλμα:

%1

" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

KMess Error: %1

" msgstr "

Σφάλμα KMess: %1

" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

KMess has encountered an internal error:

%1

" msgstr "

Το KMess παρουσίασε ένα εσωτερικό σφάλμα:

%1

" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

Network connection lost.

" msgstr "

Χάθηκε η σύνδεση με το δίκτυο.

" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

Connection to the Live Messenger server has been lost.

" msgstr "

Η σύνδεση με τον εξυπηρετητή Live Messenger χάθηκε.

" -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3929,13 +3949,13 @@ msgstr[1] "%1 pings χάθηκαν" msgid "The connection to the server was lost" msgstr "Η σύνδεση με τον εξυπηρετητή χάθηκε" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "Η διεύθυνση email, \"%1\", δεν είναι έγκυρη !" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3945,44 +3965,44 @@ msgstr "" "Η καθορισμένη διεύθυνση email, \"%1\", δεν ανήκει σε λογαριασμό Live " "Messenger!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Άκυρο αίτημα διαδικτυακής υπηρεσίας (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Η διαδικτυακή υπηρεσία δεν είναι διαθέσιμη (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Πάρα πολλές ανακατευθύνσεις από την διαδικτυακή υπηρεσία" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "" "Η διαδικτυακή υπηρεσία μηνυμάτων εκτός σύνδεσης δεν είναι δεν είναι " "διαθέσιμη αυτή τη στιγμή" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Η διαδικτυακή υπηρεσία Live Messenger αντιμετωπίζει προβλήματα" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Άκυρο αίτημα διαδικτυακής υπηρεσίας %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Καμία απάντηση από την διαδικτυακή υπηρεσία" @@ -4131,38 +4151,124 @@ msgstr "%1
είναι στο τηλέφωνο" msgid "%1
is out for lunch" msgstr "%1
είναι έξω για φαγητό" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 νέο μήνυμα email" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Για τις επαφές της ίδιας ομάδας" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Η επαφή δεν είναι σε σύνδεση" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Η επαφή δεν είναι σε σύνδεση" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "Εικονίδιο KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
'%1'
by '%2'" msgstr "Νέα αλληλογραφία:
'%1'
από '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

Closing the main window will keep KMess running in the system tray.

You can open KMess again by clicking on the bird icon, which is now " +"flashing.
Use 'Quit' from the 'Connect' menu to quit the application.

" +msgstr "" +"Κλείνοντας το βασικό παράθυρο θα διατηρήσετε την εκτέλεση του KMess στο " +"πλαίσιο συστήματος. Επιλέξτε « Τερματισμός » στο μενού « Σύνδεση » για να " +"τερματίσετε την εφαρμογή." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Ενσωμάτωση στο πλαίσιο συστήματος" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Σύνδεση στο %1, θύρα %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

Connected as:
%1 (%2)

" +msgstr "
%1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Σε Σύνδεση" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

Not connected

" +msgstr "

Χάθηκε η σύνδεση με το δίκτυο.

" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Έναρξη συνομιλίας" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Αφήστε ένα μήνυμα" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Εμφάνιση μηνύματος" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Λεπτομέρειες" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Ανάγνωση email" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Απόκρυψη" @@ -4176,11 +4282,6 @@ msgstr "" "πλαίσιο συστήματος. Επιλέξτε « Τερματισμός » στο μενού « Σύνδεση » για να " "τερματίσετε την εφαρμογή." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Ενσωμάτωση στο πλαίσιο συστήματος" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4211,21 +4312,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 μήνυμα" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Περιήγηση..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Άνοιγμα και κόψιμο εικόνας" -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Χρήση προηγούμενης εικόνας..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Avatar" @@ -4424,7 +4525,8 @@ msgid "Welcome to %1." msgstr "Καλώς ήλθατε στο %1." #: utils/likeback/likeback.cpp:336 -msgctxt "Welcome dialog text, explanation for both the like and dislike buttons" +msgctxt "" +"Welcome dialog text, explanation for both the like and dislike buttons" msgid "" "Each time you have a great or frustrating experience, please click on the " "appropriate face below the window title-bar, briefly describe what you like " @@ -4474,7 +4576,8 @@ msgstr "Μου αρέσει το νέο θέμα. Πολύ ευχάρισ #: utils/likeback/likeback.cpp:380 msgctxt "Welcome dialog text, usage example" -msgid "I dislike the welcome page of this assistant. Too time consuming." +msgid "" +"I dislike the welcome page of this assistant. Too time consuming." msgstr "" "Δεν μου αρέσει η εισαγωγική σελίδα αυτού του οδηγού. Πάρα πολύ " "χρονοβόρα." @@ -4990,7 +5093,8 @@ msgstr "Προσκαλέστε μία επαφή που δεν είναι στη #. i18n: ectx: property (toolTip), widget (QLineEdit, otherEdit_) #: rc.cpp:198 msgid "Enter the email address of a person to invite" -msgstr "Εισάγετε τη διεύθυνση email της επαφής που επιθυμείτε να προσκαλέσετε :" +msgstr "" +"Εισάγετε τη διεύθυνση email της επαφής που επιθυμείτε να προσκαλέσετε :" #. i18n: file: dialogs/invitedialog.ui:101 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) @@ -5144,7 +5248,8 @@ msgstr "" #. i18n: file: initialview.ui:179 #. i18n: ectx: property (toolTip), widget (KComboBox, handleCombobox_) #: rc.cpp:287 -msgid "Enter here the email address of your registered Passport or Live account" +msgid "" +"Enter here the email address of your registered Passport or Live account" msgstr "Εισάγετε εδώ την διεύθυνση email του λογαριασμού σας Passport ή Live" #. i18n: file: initialview.ui:195 @@ -6515,8 +6620,8 @@ msgid "" msgstr "" "Κάντε κλικ σε ένα από αυτά τα εικονίδια για να στείλετε την " "ανταπόκρισή σας στους προγραμματιστές του KMess. Μπορείτε να " -"απενεργοποιήσετε τα εικονίδια μέσω του πλαισίου ελέγχου « Εμφάνιση εικονιδίων " -"αρεσκείας » από το μενού βοήθεια.\n" +"απενεργοποιήσετε τα εικονίδια μέσω του πλαισίου ελέγχου « Εμφάνιση " +"εικονιδίων αρεσκείας » από το μενού βοήθεια.\n" " " #. i18n: file: utils/likeback/likebackbar.ui:49 @@ -6585,7 +6690,8 @@ msgstr "Ένα νέο χαρακτηριστικό που επιθυμείτε" #. i18n: ectx: property (text), widget (QCheckBox, specifyEmailCheckBox_) #: rc.cpp:961 msgid "Specify an email address to be contacted back:" -msgstr "Εισάγετε μια διεύθυνση ηλ.ταχυδρομείου για να επικοινωνήσουμε μαζί σας:" +msgstr "" +"Εισάγετε μια διεύθυνση ηλ.ταχυδρομείου για να επικοινωνήσουμε μαζί σας:" #. i18n: file: utils/likeback/likebackdialog.ui:188 #. i18n: ectx: property (text), widget (QLabel, label) @@ -6604,6 +6710,10 @@ msgstr "" "Η διεύθυνση του email σας δεν πρόκειται να χρησιμοποιηθεί για οτιδήποτε " "άλλο από αυτή την αναφορά." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Αυτή η επαφή δεν σας εχει στην λίστα επαφών της" + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Γράψτε το προσωπικό σας μήνυμα>" diff --git a/po/es.po b/po/es.po index 5447e78..6d4cf17 100644 --- a/po/es.po +++ b/po/es.po @@ -13,10 +13,11 @@ msgid "" msgstr "" "Project-Id-Version: es\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-03-01 09:45+0100\n" "Last-Translator: Mauricio Muñoz Lucero \n" "Language-Team: Spanish \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -25,7 +26,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Language: es_AR\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "No estoy frente al equipo" @@ -33,7 +34,7 @@ msgstr "No estoy frente al equipo" msgid "Your name" msgstr "Su nombre" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "su_identificador@hotmail.com" @@ -501,39 +502,39 @@ msgstr "Sobreescribir archivo" msgid "Over&write" msgstr "&Sobreescribir" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Agregar este &emoticono..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Ocultar este &emoticono" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "&Enviar correo electrónico" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Agregar &contacto" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "C&opiar dirección de correo electrónico" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Visitar en&lace" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Copi&ar dirección" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "&Limpiar conversación" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Guardar conversación en un &archivo..." @@ -673,7 +674,7 @@ msgstr "&Color de letra" msgid "C&lear Chat Window" msgstr "&Limpiar ventana de conversación" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -684,32 +685,32 @@ msgstr "" "invisible
.
O puede utilizar los comandos rápidos /online, /" "phone, etc." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Sintaxis incorrecta para /status" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "Usted no puede bloquear a nadie en una conversación grupal." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "No puede usar el comando /block" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Usted no puede desbloquear a nadie en una conversación grupal." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "No puede usar el comando /unblock" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -718,17 +719,17 @@ msgstr "" "Comando desconocido%1. Si usted no desea que este mensaje sea " "un comando, agregue al inicio otro /." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Comando desconocido" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "Fallo al enviar el dibujo a %1. El contacto no soporta esta acción" -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -736,18 +737,18 @@ msgid "" msgstr "" "Fallo al enviar el dibujo a %1: el error ha ocurrido mienstra se creaba" -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Conversación" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Conversación" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -757,37 +758,37 @@ msgstr "" "¿Está seguro que desea ocultar la barra de menú? Podrá mostrarla " "nuevamente utilizando este atajo de teclado: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Ocultando el menú" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Brocha" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Borrador" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 está escribiendo..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 y %2 están escribiendo..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 y %3 otros están escribiendo..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -801,11 +802,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Modo dibujo" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -813,7 +814,7 @@ msgid "" msgstr "" "Modo Dibujo desactivado: algunos contactos no tienen soporte para recibirlo" -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -824,18 +825,18 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Guiños" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" "Guiños desactivados: algunos contactos no cuentan con soporte para recibirlos" -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" @@ -846,51 +847,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "&Iniciar conversación privada" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Enviar correo electrónico" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Ver perfil" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Propiedades" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "A&gregar contacto" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "&Admitir contacto" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Eliminar contacto" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&No admitir contacto" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Readmitir contacto" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "Ap&odo" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "Mensaje &personal" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Dirección de &correo electrónico" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Nombre de la &canción" @@ -916,15 +917,15 @@ msgstr "&Notas" msgid "&Emoticons" msgstr "&Emoticonos" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Copiar" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Sin admisión" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -932,17 +933,18 @@ msgctxt "" msgid "The contact is %1" msgstr "El contacto está %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Falló la descarga de la imagen" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -971,7 +973,7 @@ msgstr "Agregar nuevo" msgid "Edit" msgstr "Editar" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Eliminar" @@ -1027,52 +1029,52 @@ msgstr "Compatible con Windows Live Messenger %1" msgid "Windows Live Messenger compatible" msgstr "Compatible con Windows Live Messenger" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Conectado" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Ocupado" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Ausente" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Ausente con respuesta automática" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inactivo" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Vuelvo enseguida" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Al teléfono" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Salí a comer" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Invisible" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Desconectado" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Mi estado" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Desconectar" @@ -1178,16 +1180,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Propiedades de contacto para %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Conectado" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Aún no ha sido visto" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Aún no hay mensajes" @@ -1215,20 +1217,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Cliente: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "¿Está seguro que desea usar la imágen para mostrar de este contacto?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Copiar la imágen de este contacto" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "El tipo de fichero seleccionado no está soportado por Phonon." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Tipo de fichero no soportado" @@ -1741,11 +1743,11 @@ msgstr "No se puede reconectar: esta cuenta no tiene contraseñas guardadas." #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
Reconnect now!" +"Waiting for an Internet connection to reconnect...
Reconnect now!" msgstr "" -"Esperando una conexión de Internet para reconectar...
¡Reconectar ahora!" +"Esperando una conexión de Internet para reconectar...
" +"¡Reconectar ahora!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1764,8 +1766,8 @@ msgstr[0] "" "Esperando %1 segundo antes de la reconexión...
¡Reconectar " "ahora!" msgstr[1] "" -"Esperando %1 segundos antes de la reconexión...
¡Reconectar ahora!" +"Esperando %1 segundos antes de la reconexión...
" +"¡Reconectar ahora!" #: initialview.cpp:662 msgctxt "Button label" @@ -1809,7 +1811,7 @@ msgstr "Agregar un grupo" msgid "Enter a name for the new group:" msgstr "Introduzca el nombre para el nuevo grupo:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1818,15 +1820,15 @@ msgstr "" "¿Está seguro que desea eliminar el contacto %1de su lista de " "contactos?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Eliminar contacto" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Eliminar y no admitir" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1836,12 +1838,12 @@ msgstr "" "¡El grupo %1 no está vacío! Primero elimine todos los contactos de " "dicho grupo, y vuelva a intentarlo." -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Eliminar grupo" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1851,24 +1853,24 @@ msgstr "" "¿Está seguro que desea eliminar el grupo %1de su lista de " "contactos?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Eliminar" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Éste es un grupo especial, y no puede ser cambiado." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Renombrar Grupo" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Introduzca el nuevo nombre para este grupo:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1878,21 +1880,21 @@ msgstr "" "

No se puede iniciar la sesión automáticamente con esta cuenta %1:" "
Usted deberá guardar primero la contraseña de dicha cuenta

" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Falló el inicio de sesión automático" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "La conexión puede estar caída..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Desconectado" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1900,7 +1902,7 @@ msgctxt "" msgid "

KMess has searched for it in the following folders:
%1

" msgstr "

KMess buscó en los siguientes directorios:
%1

" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1916,12 +1918,12 @@ msgstr "" "ninguno de los directorios de la aplicación

%1

Por favor verifique su " "instalación

" -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Error con las notificaciones" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1930,210 +1932,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Conectar" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Desconectar" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Mostrar mi &perfil" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Mostrar contactos &admitidos" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Mostrar contactos &desconectados" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Mostrar contactos &eliminados" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Mostrar &historial de eventos" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Mostrar la barra de &búsqueda" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Mostrar grupos &vacios" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Tamaño de las imágenes" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Ordenar contactos por" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Mostrar ventana de &transferencias..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Nuevo &contacto..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Nuevo &grupo..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Exportar lista de contactos..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Mostrar &historial de conversaciones..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Nueva &cuenta..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Configurar cuenta..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Configurar &Kmess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Mostrar &menú de selección" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "No mostrar" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Pequeño" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Mediano" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Grande" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Grupo" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Conectados/Desconectados" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Mezclado" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Mostrar ventana de &red..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] sesión iniciada con %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 se conectó" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 se desconectó" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "&Conversación" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Eliminar del g&rupo" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Copiar al grupo" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Mover al grupo" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Mover grupo &abajo" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Mover grupo a&rriba" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Eli&minar grupo" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Re&nombrar grupo" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Esta persona no lo tiene en su lista de contactos." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Correo electrónico" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Cliente" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Si" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "No" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Sin admisión" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Última vez visto" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Último mensaje" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Grupo %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2141,7 +2138,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 contacto," msgstr[1] "%1 contactos," -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2149,7 +2146,7 @@ msgid_plural "%1 online" msgstr[0] "%1 conectado" msgstr[1] "%1 conectados" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2157,36 +2154,35 @@ msgid_plural "%1 contacts" msgstr[0] "%1 contacto" msgstr[1] "%1 contactos" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Presione aquí para cambiar su seudónimo" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " "along with your friendly name" msgstr "" "Presione aquí para introducir un mensaje que se mostrará a sus contactos: " -"Ellos lo verán junto a " -"su seudónimo" +"Ellos lo verán junto a su seudónimo" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "" "No se encontraron archivos de registro de conversaciones con este contacto." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "No se ha encontrado un historial de conversaciones" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2197,13 +2193,23 @@ msgstr "" "quiere que sus conversaciones sean registradas, deberá activarlo en la " "configuración de su cuenta." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 nuevo mensaje de correo electrónico" msgstr[1] "%1 nuevos mensajes de correo electrónico" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Mostrarle a mis contactos la &canción que estoy escuchando" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Mostrarle a mis contactos la &canción que estoy escuchando" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2887,52 +2893,60 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspiración y certeza del código" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Antiguo código de notificación emergente, código p2p inicial, manejo del MSN " "challenge" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Código del temporizador" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Código de cerrar a la bandeja" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Implementación del manejador de fallos personalizada, implementación del " "icono en la Barra de Sistema" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2940,11 +2954,11 @@ msgstr "" "Parche para el fallo en que Knotify no entrega el foco y Kwin impide que se " "le robe el foco." -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2953,35 +2967,35 @@ msgstr "" "de KMess!\n" "¡Si siente que falta su nombre aquí, por favor contactenos!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "¿Su nombre aquí?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Juan Pablo González Tognarelli,Manuel Ramírez,Guillermo Arana" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr ",,elgui02@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "No mostrar la lista de contactos al inicio" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "" "Iniciar sesión automáticamente con la dirección de correo electrónico dada" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "" "Ejecuta una prueba de depuración (sólo para compilación de desarrolladores)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3660,24 +3674,24 @@ msgstr "Error de MSN: %1" msgid "Trying the HTTP fallback..." msgstr "Intentando el HTTP alternativo..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Autenticando..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Autenticado" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Conectando..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Se recibió un comando desconocido del servidor: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3685,53 +3699,53 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minuto" msgstr[1] "%1 minutos" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "El servidor cierra por mantenimiento en %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "El servidor de Live Messenger cerrará en %1 para mantenimiento." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
Details: %1" msgstr "" "KMess no ha podido procesar los mensajes recibidos cuando estaba " "desconectado.
Detalles: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "El cliente SOAP ya no es válido." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Se excedió el tiempo de autenticación" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Esperando por lista de contactos..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

Warning: %1

" msgstr "

Advertencia: %1

" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Advertencia MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
Internal error reason: %1" msgstr "
Motivo del error interno: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

Authentication has failed, please verify your account email and password." @@ -3740,18 +3754,18 @@ msgstr "" "

La autenticación falló, por favor verifique su cuenta de correo " "electrónico y su contraseña.

" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Error de MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

The account %1 has been connected from another location.

" msgstr "

La cuenta %1 se ha conectado desde otra ubicación.

" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3761,7 +3775,7 @@ msgstr "" "

¡Ha sido desconectado: Usted se conectó con la cuenta %1 desde " "otro cliente de mensajería o desde otra ubicación.

" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

Unable to connect to the Live Messenger service.
Maybe you need to " @@ -3770,7 +3784,7 @@ msgstr "" "

No se puede conectar al servicio de Live Messenger.
¿Quizás usted " "necesita autenticarse antes de acceder a la red?

" -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3787,7 +3801,7 @@ msgstr "" "a la red.

Presione aquí para visitar la página de " "estado del servicio de Messenger.

" -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

Unable to resolve the authentication on the client
Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

" @@ -3795,7 +3809,7 @@ msgstr "" "

No se puede autenticar cliente
talvez no tenga instalado los " "paquetes qca2 y/o qca2-plugin-ossl?

" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

KMess could not connect to the Live Messenger servers.
You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
It is also " @@ -3806,12 +3820,12 @@ msgstr "" "que funciono.
O también es posible que la red MSN no este disponible en " "este momento.

" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

Unable to connect to the Live Messenger service.

" msgstr "

No se puede conectar al servicio de Live Messenger.

" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3822,68 +3836,68 @@ msgid "" msgstr "" "

KMess no ha podido conectarse con los servidores de Live Messenger.
" "Puede haber un problema con su conexión a internet, o quizás los servidores " -"de Live Messenger no estén disponibles temporalmente

Presione aquí para visitar la página de estado del servicio de Live " -"Messenger.

" +"de Live Messenger no estén disponibles temporalmente

Presione aquí para visitar la página de estado del servicio de " +"Live Messenger.

" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

Error: %1

" msgstr "

Error: %1

" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

El servidor de Live Messenger ha reportado un error:

%1

" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

Messenger Service Error: %1

" msgstr "

Error del servicio de Messenger: %1

" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

The Live Messenger server has reported an error:

%1

" msgstr "

El servidor de Live Messenger ha reportado un error:

%1

" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

KMess Error: %1

" msgstr "

Error de KMess: %1

" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

KMess has encountered an internal error:

%1

" msgstr "

KMess ha encontrado un error interno:

%1

" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

Network connection lost.

" msgstr "

Se ha perdido la conexión con la red.

" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

Connection to the Live Messenger server has been lost.

" msgstr "

Se ha perdido la conexión con el servidor de Live Messenger.

" -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" "

Developer info:
Error number: %1
Error string: %2

" msgstr "" -"

Información para el desarrollador:
Número de error: %" -"1
Cadena del error: %2

" +"

Información para el desarrollador:
Número de error: " +"%1
Cadena del error: %2

" #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3922,7 +3936,7 @@ msgstr[1] "%1 paquetes perdidos" msgid "The connection to the server was lost" msgstr "Se ha perdido la conexión con el servidor" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" @@ -3930,7 +3944,7 @@ msgstr "" "¡La dirección de correo electrónico especificada, \"%1\" no es una dirección " "de correo electrónico válida!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3940,43 +3954,43 @@ msgstr "" "¡La dirección de correo electrónico especificada, \"%1\" no está asociada a " "una cuenta de Live Messenger!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Solicitud de servicio web inválido (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "El servicio web no está disponible (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Demasiadas redirecciones por el servicio web" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "" "El servicio web de mensajes fuera de línea no está disponible e este momento" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "El servidor web de Live Messenger está atravesando algunos problemas" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Respuesta del servicio web inválida %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "No hay respuesta del servicio web" @@ -4123,38 +4137,123 @@ msgstr "%1
está al teléfono" msgid "%1
is out for lunch" msgstr "%1
salió a comer" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 nuevo mensaje de correo electrónico" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Para contactos del mismo grupo" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Este contacto no está conectado" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Este contacto no está conectado" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "Icono de KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
'%1'
by '%2'" msgstr "Nuevo correo electrónico:
'%1'
de '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

Closing the main window will keep KMess running in the system tray.

You can open KMess again by clicking on the bird icon, which is now " +"flashing.
Use 'Quit' from the 'Connect' menu to quit the application.

" +msgstr "" +"Cuando cierre la ventana principal, KMess seguirá ejecutándose en la bandeja " +"del sistema. Use 'Salir' desde el menú 'Conexión' para cerrar la aplicación." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Minimizado en la bandeja de sistema" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Conectando a %1, puerto %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

Connected as:
%1 (%2)

" +msgstr "
%1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Conectado" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

Not connected

" +msgstr "

Se ha perdido la conexión con la red.

" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Empezar a conversar" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Dejar un mensaje" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Ver mensaje" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Detalles" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Leer correo electrónico" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Ocultar" @@ -4167,11 +4266,6 @@ msgstr "" "Cuando cierre la ventana principal, KMess seguirá ejecutándose en la bandeja " "del sistema. Use 'Salir' desde el menú 'Conexión' para cerrar la aplicación." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Minimizado en la bandeja de sistema" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4202,21 +4296,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 emails" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Examinar..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Examinar y cortar imagen..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Definir una imagen anterior..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Imagen para mostrar" @@ -4529,9 +4623,8 @@ msgid "" "read your comment!
You may want to use an online " "translation tool to translate your message.
" msgstr "" -"Por favor, escriba en %1 ó %2, ó los desarrolladores no leerán " -"su comentario!
Usted también puede utilizar la " -"herramienta " +"Por favor, escriba en %1 ó %2, ó los desarrolladores no leerán su " +"comentario!
Usted también puede utilizar la
herramienta " "de traducción en linea para traducir su mensaje.
" #: utils/likeback/likebackdialog.cpp:168 @@ -6573,6 +6666,10 @@ msgstr "" " Su dirección de correo no será utilizada para ningún otro " "asunto que no esté relacionado con su informe." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Esta persona no lo tiene en su lista de contactos." + #~ msgctxt "Label text" #~ msgid "" #~ "Handwriting is disabled: KMess no pudo enviar el dibujo a mano alzada a " diff --git a/po/et.po b/po/et.po index 9609a1b..62cdc18 100644 --- a/po/et.po +++ b/po/et.po @@ -9,17 +9,18 @@ msgid "" msgstr "" "Project-Id-Version: kmess\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-03-01 18:00+0200\n" "Last-Translator: Mihkel Tõnnov \n" "Language-Team: Eesti \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.0\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Olen arvutist eemal" @@ -27,7 +28,7 @@ msgstr "Olen arvutist eemal" msgid "Your name" msgstr "Sinu nimi" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "sina@hotmail.com" @@ -485,39 +486,39 @@ msgstr "Faili ülekirjutamine" msgid "Over&write" msgstr "&Kirjuta üle" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Lisa see &emotikon..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Peida see &emotikon" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Saada &e-kiri" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Lisa &kontakt" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Kopeeri e-&posti aadress" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Ava &link" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Kopeeri &aadress" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "&Tühjenda vestlus" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Salvesta vestlus &failina..." @@ -656,7 +657,7 @@ msgstr "Fondi &värv" msgid "C&lear Chat Window" msgstr "&Tühjenda vestlusaken" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -667,30 +668,30 @@ msgstr "" "> Võid kasutada ka kiirkorraldusi nagu /online või /phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Ebakorrektne /status käsu süntaks" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "Grupivestluses pole võimalik käsku /block kasutada." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Käsku /block pole võimalik kasutada" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "Grupivestluses pole võimalik käsku /unblock kasutada." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Käsku /unblock pole võimalik kasutada" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -699,18 +700,18 @@ msgstr "" "Tundmatu käsk %1. Kui sa ei tahtnudki, et seda käsuna " "koheldaks, lisa sõnumi algusesse veel üks /." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Tundmatu käsk" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "Käsitsi kirjutatud sõnumi saatmine ebaõnnestus: kontaktid ei toeta seda." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -718,18 +719,18 @@ msgid "" msgstr "" "Käsitsi kirjutatud sõnumi saatmine ebaõnnestus: selle loomisel ilmnes viga." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Vestlus" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Vestlus" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -739,37 +740,37 @@ msgstr "" "Kas tahad kindlasti menüüriba peita? Selle taasnäitamiseks saad " "kasutada klahvikombinatsiooni %1." -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Menüü peitmine" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Pintsel" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Kustutuskumm" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 kirjutab..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 ja %2 kirjutavad..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 ja veel %3 kirjutavad..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -783,98 +784,97 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Käsitsi kirjutamise režiim" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " "handwritten messages." msgstr "" -"Käsitsi kirjutamine pole lubatud: mõned kontaktidest ei saa " -"käsitsi kirjutatud sõnumeid vastu võtta." +"Käsitsi kirjutamine pole lubatud: mõned kontaktidest ei saa käsitsi " +"kirjutatud sõnumeid vastu võtta." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " "messages." msgstr "" -"Käsitsi kirjutamine pole lubatud: see kontakt ei saa käsitsi " -"kirjutatud sõnumeid vastu võtta." +"Käsitsi kirjutamine pole lubatud: see kontakt ei saa käsitsi kirjutatud " +"sõnumeid vastu võtta." #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Animasõnumid" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" -"Animasõnumid pole lubatud: mõned kontaktidest ei saa animasõnumeid " -"vastu võtta." +"Animasõnumid pole lubatud: mõned kontaktidest ei saa animasõnumeid vastu " +"võtta." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" -"Animasõnumid pole lubatud: see kontakt ei saa animasõnumeid " -"vastu võtta." +"Animasõnumid pole lubatud: see kontakt ei saa animasõnumeid vastu võtta." #: chat/contactframe.cpp:354 msgid "&Start Private Chat" msgstr "&Alusta privaatvestlust" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Saada e-kiri" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Vaata profiili" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Omadused" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Lisa kontakt" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "L&uba kontakt" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Eemalda kontakt" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Blokeeri kontakt" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Eemalda blokeerin&g" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Näidatav nimi" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Olekuteade" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "&E-posti aadress" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Laulu &nimi" @@ -900,15 +900,15 @@ msgstr "&Märkmed" msgid "&Emoticons" msgstr "&Emotikonid" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Kopeeri" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Blokeeritud" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -916,17 +916,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Kontakt on %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Avatari allalaadimine ebaõnnestus" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -955,7 +956,7 @@ msgstr "Lisa uus" msgid "Edit" msgstr "Muuda" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Eemalda" @@ -1011,52 +1012,52 @@ msgstr "Windows Live Messenger %1-ga ühilduv" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messengeriga ühilduv" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Võrgus" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Hõivatud" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Eemal" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Eemal (automaatvastajaga)" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Jõude" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Varsti tagasi" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Telefonil" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Lõunal" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Nähtamatu" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Võrgust väljas" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Määra olek" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Ühenda lahti" @@ -1089,9 +1090,9 @@ msgid "" "options)" msgstr "" "Kiirkorraldused ei tohi:
  • olla pikemad kui 7 tähemärki,
  • alata " -"sümboliga \"/\" (see häiriks IRC-sarnaste käskude kasutamist),
  • " -"sisaldada kandiliste sulgudega ümbritsetud teksti (nagu nt [b] või [color], " -"sest neid võidakse kasutada teksti vormindamiseks)
" +"sümboliga \"/\" (see häiriks IRC-sarnaste käskude kasutamist),
  • sisaldada kandiliste sulgudega ümbritsetud teksti (nagu nt [b] või " +"[color], sest neid võidakse kasutada teksti vormindamiseks)
  • " #: dialogs/addemoticondialog.cpp:303 #, kde-format @@ -1161,16 +1162,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "%1 - Omadused" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Ühendatud" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Pole veel nähtud" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Pole veel sõnumeid" @@ -1198,20 +1199,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Klient: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Kas tahad kindlasti kasutada selle kontakti avatari?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Kopeeri avatar" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Phonon ei toeta valitud failitüüpi." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Toetamata failitüüp" @@ -1724,8 +1725,8 @@ msgstr "Taasühendumine nurjus: konto parool pole salvestatud" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" "Taasühendumiseks Interneti-ühenduse ootamine...
    Ühenda " "kohe" @@ -1790,24 +1791,24 @@ msgstr "Grupi lisamine" msgid "Enter a name for the new group:" msgstr "Sisesta uue grupi nimi:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " "list?" msgstr "" -"Kas tahad kindlasti kontakti %1 oma kontaktiloendist " -"eemaldada?" +"Kas tahad kindlasti kontakti %1 oma kontaktiloendist eemaldada?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Eemalda kontakt" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Eemalda ja blokeeri" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1817,12 +1818,12 @@ msgstr "" "Grupp %1 ei ole tühi. Esmalt eemalda sellest kõik kontaktid ning " "proovi siis uuesti." -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Grupi eemaldamine" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1831,24 +1832,24 @@ msgid "" msgstr "" "Kas tahad kindlasti grupi %1 oma kontaktiloendist eemaldada?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Eemalda" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "See on erigrupp ja seda ei saa muuta." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Grupi ümbernimetamine" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Sisesta grupi uus nimi:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1858,21 +1859,21 @@ msgstr "" "

    Konto %1 automaatne sisselogimine pole võimalik: esmalt tuleb " "konto parool salvestada.

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Automaatne sisselogimine nurjus" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Ühendus võib olla maas..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Ühenduseta" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1880,7 +1881,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess otsis seda järgnevatest kataloogidest:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1895,12 +1896,12 @@ msgstr "" "p>

    Vajalikku faili \"kmess.notifyrc\" ei leitud ühestki rakenduste " "kataloogist.

    %1

    Palun kontrolli oma paigalduse korrektsust.

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Viga märguannetega" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1909,210 +1910,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Ühenda" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "Ühenda &lahti" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Näita mu &profiili" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "&Lubatud kontaktide näitamine" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "&Võrgust väljas kontaktide näitamine" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "&Eemaldatud kontaktide näitamine" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "A&jaloopaneeli näitamine" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Ot&singuriba näitamine" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Tühjad&e gruppida näitamine" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Avatari suurus" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Kontaktide &järjestuse alus" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Näita &failiedastusakent..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Uus &kontakt..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Uus &grupp..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Ekspordi kontaktiloend..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Näita vestluse &ajalugu..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Uus &konto..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Konto seadistamine..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "&KMessi seadistamine..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Valiku&menüü näitamine" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Ei näidata" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Väike" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Keskmine" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Suur" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Grupp" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Võrgus või mitte" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Segamini" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "&Näita võrguakent..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] %2 sisselogitud" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 tuli võrku" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 läks võrgust välja" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "&Vestle..." -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "&Eemalda grupist" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Kopeeri gruppi" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Liiguta gruppi" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Liiguta grupp &alla" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Liiguta grupp &üles" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "&Eemalda grupp" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "&Nimeta grupp ümber" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Sind pole selle kasutaja kontaktiloendis" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "E-post" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Klient" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Jah" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Ei" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Blokeeritud" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Viimati nähtud" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Viimane sõnum" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Grupp %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2120,7 +2116,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 kontakt, " msgstr[1] "%1 kontakti, " -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2128,7 +2124,7 @@ msgid_plural "%1 online" msgstr[0] "%1 võrgus" msgstr[1] "%1 võrgus" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2136,33 +2132,32 @@ msgid_plural "%1 contacts" msgstr[0] "%1 kontakt" msgstr[1] "%1 kontakti" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Klõpsa oma näidatava nime muutmiseks" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Klõpsa olekuteate määramiseks[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " "along with your friendly name" -msgstr "" -"Sisesta siia teade, mida tahad, et kontaktid sinu nime juures näeksid" +msgstr "Sisesta siia teade, mida tahad, et kontaktid sinu nime juures näeksid" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Selle kontaktiga peetud vestluste logisid ei leitud." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Vestluse ajalugu ei leitud" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2172,13 +2167,23 @@ msgstr "" "logita, kui tahad, et seda tehtaks, saad vestluste logimise sisse lülitada " "konto seadistuses." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 uus e-kiri" msgstr[1] "%1 uut e-kirja" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "&Hetkel esitatava loo näitamine kontaktidele" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "&Hetkel esitatava loo näitamine kontaktidele" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2849,7 +2854,8 @@ msgstr "Anastasios Bourazanis" msgid "" "Emoticon preview in settings page,clickable contact properties dialog text" msgstr "" -"Emotikonide eelvaade seadistusaknas, kontakti omaduste dialoogi klõpsatav tekst" +"Emotikonide eelvaade seadistusaknas, kontakti omaduste dialoogi klõpsatav " +"tekst" #: main.cpp:182 msgid "Internationalization fixes, drag'n'drop of images into display pictures" @@ -2859,51 +2865,59 @@ msgstr "Internatsionaliseerimise parandused, pildi lohistamine avatariks" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspiratsioon ja veidi koodi" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Vana teatemullide tekitamise kood, algne P2P kood, MSN challenge'i käsitleja" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Jõudeoleku taimeri kood" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Süsteemisalve sulgetud ikooni pildistamise kood" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Kohandatud krahhide käsitleja võimaldamine, süsteemse salve ikooni ülekatte " "võimaldamine" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2911,11 +2925,11 @@ msgstr "" "KNotify fookuse mitteandmise vea parandamine ja ümbernurgaminek KWini " "fookuseröövimise ennetamiseks" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2923,33 +2937,33 @@ msgstr "" "Võid vabalt postitada veaparandusi ja koodipaiku KMessi foorumisse.\n" "Samuti võta meiega ühendust, kui leiad, et sinu nimi on siit puudu." -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Sinu nimi siin?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Mihkel Tõnnov,Lauri Võsandi" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "mihhkel@gmail.com,lauri.vosandi@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Kontaktiloendi akent käivitudes ei näidata" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Automaatne sisselogimine antud aadressiga" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Silumistesti käivitamine (ainult arendusjärkudes)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3596,24 +3610,24 @@ msgstr "MSN-i viga %1" msgid "Trying the HTTP fallback..." msgstr "Varuvariandina HTTP proovimine..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Autentimine..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Autenditud" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Ühendumine..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Serverilt saadi tundmatu käsk: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3621,53 +3635,53 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minuti" msgstr[1] "%1 minuti" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Server suletakse hoolduseks %1 jooksul." -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Live Messengeri server suletakse hoolduseks %1 jooksul." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "" "KMessil polnud võimalik võrgust väljas olles saadud sõnumeid töödelda.
    Üksikasjad: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP-i klient pole enam kehtiv." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Autentimise ajapiirang ületatud" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Kontaktiloendi ootamine..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    Hoiatus: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN-i hoiatus" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    Sisemine vea põhjus: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." @@ -3676,18 +3690,18 @@ msgstr "" "

    Autentimine ebaõnnestus, palun kontrolli oma konto aadressi ning parooli " "õigsust.

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN-i viga" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    Kontoga "%1" logiti sisse kusagilt mujalt.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3697,7 +3711,7 @@ msgstr "" "

    Sinu ühendus katkestati: logisid kontoga "%1" sisse teises " "Messengeri kliendis või teises arvutis.

    " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3706,7 +3720,7 @@ msgstr "" "

    Live Messengeri teenusega polnud võimalik ühenduda.
    Võibolla eeldab " "võrgu kasutamine autentimist?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3716,14 +3730,14 @@ msgid "" "to a web page or proxy may be required to access the network.

    Click here to visit the Messenger service status page.

    " msgstr "" -"

    Kmessil polnud võimalik Live Messengeri serveritega ühenduda.
    " -"Probleem võib olla su Interneti-ühendusega, ka võivad Live Messengeri " +"

    Kmessil polnud võimalik Live Messengeri serveritega ühenduda.
    Probleem võib olla su Interneti-ühendusega, ka võivad Live Messengeri " "serverid olla ajutiselt kättesaamatud.
    Samuti on võimalik, et võrgu " -"kasutamiseks nõutakse veebilehel või puhverserveris autentimist.

    " -"Messengeri teenuse seisundilehe külastamiseks klõpsa siin." -"

    " +"kasutamiseks nõutakse veebilehel või puhverserveris autentimist.

    Messengeri teenuse seisundilehe külastamiseks klõpsa siin.

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " @@ -3731,23 +3745,23 @@ msgstr "" "

    Kliendi autentimist pole võimalik lahendada.
    Vahest pole paketid " ""qca2" ja/või "qca2-plugin-ossl" paigaldatud?

    " -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " "possible that the MSN network is unavailable at the moment.

    " msgstr "" -"

    KMessil polnud võimalik Live Messengeri serveritega ühenduda.
    " -"Tõenäoliselt tuleb olukorra parandamiseks paigaldada paketid " -""qca2" ja "qca2-plugin-ossl".
    Samuti on võimalik, " -"et MSN-i võrk pole hetkel kättesaadav.

    " +"

    KMessil polnud võimalik Live Messengeri serveritega ühenduda.
    Tõenäoliselt tuleb olukorra parandamiseks paigaldada paketid "" +"qca2" ja "qca2-plugin-ossl".
    Samuti on võimalik, et MSN-" +"i võrk pole hetkel kättesaadav.

    " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Live Messengeri teenusega pole võimalik ühenduda.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3761,56 +3775,56 @@ msgstr "" "serverid olla ajutiselt kättesaamatud.

    Messengeri teenuse seisundilehe " "külastamiseks klõpsa siin.

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Viga: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messengeri server teatas veast:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Messengeri teenuse viga: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messengeri server teatas veast:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    KMessi viga: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    KMessis ilmnes sisemine viga:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Võrguühendus katkes.

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    Ühendus Live Messengeri serveriga katkes.

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3856,13 +3870,13 @@ msgstr[1] "%1 vastuseta pingi" msgid "The connection to the server was lost" msgstr "Ühendus serveriga katkes" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "Sisestatud e-posti aadress \"%1\" ei ole korrektselt kirjutatud." -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3872,44 +3886,44 @@ msgstr "" "Sisestatud e-posti aadress \"%1\" ei ole ühegi Live Messengeri kontoga " "seotud." -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Sobimatu veebiteenuse taotlus (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Veebiteenus pole juurdepääsetav (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Liiga palju ümbersuunamisi veebiteenuselt" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "" -"Võrgust väljas olevatele kontaktidele sõnumite saatmise veebiteenus " -"pole hetkel kättesaadav" +"Võrgust väljas olevatele kontaktidele sõnumite saatmise veebiteenus pole " +"hetkel kättesaadav" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messengeri veebiteenusel esineb probleeme" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Sobimatu veebiteenuse vastus %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Veebiteenuselt ei saadud vastust" @@ -3934,8 +3948,8 @@ msgstr "%1 ütleb:
    "%2"" #, kde-format msgid "%1 has sent you an offline message:
    '%2'" msgstr "" -"%1 on saatnud sõnumi, kui võrgust väljas olid:
    "%" -"2"" +"%1 on saatnud sõnumi, kui võrgust väljas olid:
    "" +"%2"" #: notification/chatnotification.cpp:185 #, kde-format @@ -4057,38 +4071,123 @@ msgstr "%1
    räägib telefoniga" msgid "%1
    is out for lunch" msgstr "%1
    läks lõunale" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 uus e-kiri" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Sama grupi kontaktide puhul" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "See kontakt pole võrgus" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "See kontakt pole võrgus" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "KMessi ikoon" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "Uus e-kiri:
    "%1"
    Saatja: %2" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"Peaakna sulgemisel töötab KMess paneelile minimeeritult edasi. Rakendusest " +"päriselt väljumiseks kasuta menüüs \"Ühendus\" olevat käsku \"Välju\"." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Süsteemsesse salve dokkimine" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Ühendumine: %1, port %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "
    %1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Ühendatud" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Võrguühendus katkes.

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Alusta vestlust" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Jäta sõnum" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Vaata sõnumit" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Üksikasjad" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Ava e-kiri" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Peida" @@ -4101,11 +4200,6 @@ msgstr "" "Peaakna sulgemisel töötab KMess paneelile minimeeritult edasi. Rakendusest " "päriselt väljumiseks kasuta menüüs \"Ühendus\" olevat käsku \"Välju\"." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Süsteemsesse salve dokkimine" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4136,21 +4230,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 kirja" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Sirvi..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Sirvi ning kärbi pilti..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Vali varasem pilt..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Avatar" @@ -4441,8 +4535,8 @@ msgid "" "tool to translate your message.
    " msgstr "" "Palun kirjuta see %1 keeles, muidu ei saa arendajad su arvamust " -"lugeda.
    Võid oma sõnumi tõlkimiseks kasutada " -"tõlketööriista Internetis.
    " +"lugeda.
    Võid oma sõnumi tõlkimiseks kasutada tõlketööriista Internetis.
    " #: utils/likeback/likebackdialog.cpp:152 #, kde-format @@ -4455,8 +4549,8 @@ msgid "" "translation tool to translate your message.
    " msgstr "" "Palun kirjuta see %1 või %2 keeles, muidu ei saa arendajad su " -"arvamust lugeda.
    Võid oma sõnumi tõlkimiseks kasutada " -"tõlketööriista Internetis.
    " +"arvamust lugeda.
    Võid oma sõnumi tõlkimiseks kasutada tõlketööriista Internetis.
    " #: utils/likeback/likebackdialog.cpp:168 msgctxt "" @@ -5618,7 +5712,8 @@ msgid "" "These options allow you to choose how KMess will organize your chat logs " "within the directory specified below." msgstr "" -"Siin saad määrata, kuidas KMess vestluslogid allmääratud kataloogis korraldab." +"Siin saad määrata, kuidas KMess vestluslogid allmääratud kataloogis " +"korraldab." #. i18n: file: settings/chatloggingpage.ui:137 #. i18n: ectx: property (whatsThis), widget (QLabel, label) @@ -6431,6 +6526,10 @@ msgstr "" "Su e-posti aadressi ei kasutata millekski muuks peale selle teadaande." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Sind pole selle kasutaja kontaktiloendis" + #~ msgid "Webcam Chat" #~ msgstr "Veebikaamera-vestlus" diff --git a/po/fi.po b/po/fi.po index 8493f31..a99bfd5 100644 --- a/po/fi.po +++ b/po/fi.po @@ -11,17 +11,18 @@ msgid "" msgstr "" "Project-Id-Version: fi\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2009-11-07 17:26+0200\n" "Last-Translator: \n" "Language-Team: American English \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Poissa tietokoneelta" @@ -29,7 +30,7 @@ msgstr "Poissa tietokoneelta" msgid "Your name" msgstr "Nimesi" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "käyttäjä@hotmail.com" @@ -492,39 +493,39 @@ msgstr "Korvaa tiedosto" msgid "Over&write" msgstr "Korvaa" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Lisää hymiö" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Piilota hymiöt" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Lähetä sähköposti" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Lisää yhteystietoihin" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Kopioi sähköpostiosoite" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Katso linkki" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Kopioi osoite" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Tyhjennä keskustelu" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Tallenna keskustelu tiedostoon..." @@ -663,7 +664,7 @@ msgstr "Kirjaisimen väri" msgid "C&lear Chat Window" msgstr "Tyhjennä keskusteluikkuna" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -673,30 +674,30 @@ msgstr "" "online | away | brb | busy | lunch | phone | invisible.
    Voidaan " "myös käyttää lyhentäen, esim: /online tai /phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Väärä syntaksi /status komennossa" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "Et voi käyttää /block komentoa ryhmäkeskustelussa." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Et voi käyttää /block komentoa!" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "Et voi käyttää /unblock komentoa ryhmäkeskustelussa." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Et voi käyttää /unblock komentoa!" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -705,18 +706,18 @@ msgstr "" "Tuntematon komento %1. Viestin ollessa jokin muu kuin komento, " "kirjoita viestisi \"//teksti\"." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Tuntematon komento" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 #, fuzzy msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "Epäonnistui käsinkirjoitetun viestin lähetyksessä käyttäjälle %1." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 #, fuzzy msgctxt "Error message shown in chat" msgid "" @@ -724,18 +725,18 @@ msgid "" "it." msgstr "Epäonnistui käsinkirjoitetun viestin lähetyksessä käyttäjälle %1." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Keskustelu" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - keskustelu" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -745,38 +746,38 @@ msgstr "" "Oletko varma että haluat piilottaa valikkon? Valikon saa uudelleen " "näkyviin painamalla pikanäppäintä: %1 " -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Piilota valikko" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 #, fuzzy msgid "Drawing brush" msgstr "Pyyhi" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Pyyhi" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 kirjoittaa..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1, ja %2 kirjoittavat..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, fuzzy, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2, ja %3 kirjoittavat..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -784,24 +785,24 @@ msgid "" "ul>
    Chat started on:
    %2
    Connected with " "account:
    %3
    " msgstr "" -"

    Keskustelu tiedot

    Käyttäjät:
    • %" -"1
    Keskustelu aloitettu:
    %2

    Keskustelu tiedot

    Käyttäjät:
    • " +"%1
    Keskustelu aloitettu:
    %2
    Yhdistetty käyttäjätilillä:
    %3
    " #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Käsinkirjoitustila" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " "handwritten messages." msgstr "" -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -810,17 +811,17 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Vinkkausket" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 #, fuzzy msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." @@ -832,51 +833,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "Aloita yksityinen keskustelu" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "Lähetä sähköposti" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "Näytä profiili" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "Ominaisuudet" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "Lisää käyttäjä" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Salli käyttäjä" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "Poista käyttäjä" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "Estä käyttäjä" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Salli käyttäjä" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "Nimimerkkisi" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "Henkilökohtainen viesti" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Sähköpostiosoite" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Kappaleen nimi" @@ -902,15 +903,15 @@ msgstr "Muistio" msgid "&Emoticons" msgstr "Hymiöt" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "Kopioi" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Estetty" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -918,17 +919,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Käyttäjä on %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Näyttökuvan lataus epäonnistui" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -957,7 +959,7 @@ msgstr "Lisää uusi" msgid "Edit" msgstr "Muokkaa" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Poista" @@ -1013,52 +1015,52 @@ msgstr "Windows Live Messenger %1 yhteensopiva" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger yhteensopiva" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Paikalla" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Kiireinen" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Poissa" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Poissa (automaattinen vastaus)" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Joutilaana" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Tulen pian takaisin" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Puhelimessa" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Lounaalla" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Näkymätön" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Pois linjoilta" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "Oma tila" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Katkaise yhteys" @@ -1161,16 +1163,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Yhteystiedot %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Yhdistetty" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Ei ole nähty" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Ei viestejä" @@ -1198,20 +1200,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Asiakasohjelma: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Oletko varma, että haluat näyttää tämän käyttäjän kuvan?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Kopioi käyttäjän kuva" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Valittu tiedostotyyppi ei ole tuettuna Phonon:ssa." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Tukematon tiedostotyyppi" @@ -1725,8 +1727,8 @@ msgstr "" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "Odotetaan uudelleen yhdistämistä
    <Yhdistä nyt" #: initialview.cpp:422 @@ -1791,7 +1793,7 @@ msgstr "Lisää ryhmä" msgid "Enter a name for the new group:" msgstr "Nimeä uusi ryhmä:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1800,15 +1802,15 @@ msgstr "" "Oletko varma että haluat poistaa käyttäjän %1yhteystiedoistasi?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Poista käyttäjä" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Poista ja estä käyttäjä" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1818,12 +1820,12 @@ msgstr "" "Ryhmä %1 ei ole tyhjä. Poista ensiksi käyttäjät ryhmästä ja yritä " "uudelleen." -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Ryhmän poistaminen" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1832,24 +1834,24 @@ msgid "" msgstr "" "Oletko varma, että haluat poistaa ryhmän %1 yhteystiedoistasi" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Poistettu" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Tämä on erityinen ryhmä, eikä sitä voi muuttaa." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Uudelleen nimeä ryhmä" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Syötä uusi nimi ryhmälle:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1859,21 +1861,21 @@ msgstr "" "

    Ei voida yhdistää automaattisesti käyttätilille %1:
    Salasanan " "täytyy ensin olla tallennettuna!

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Automaattinen kirjautuminen epäonnistui" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Yhteys mahdollisesti katki..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Yhteyskatkesi" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1881,7 +1883,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess etsi seuraavista kansioista:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1896,12 +1898,12 @@ msgstr "" "notifyrc' ei löytynyt ohjelmisto-kansioista.

    %1

    Tarkista asennettu " "ohjelmisto.

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Tapahtui virhe ilmoituksissa" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1910,210 +1912,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "Yhdistä" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "Katkaise yhteys" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Näytä minun profiili" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Näytä sallitut käyttäjät" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Näytä poissaolevat käyttäjät" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Näytä poistetut käyttäjät" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Näytä historia" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Näytä hakurivi" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Näytä tyhjät ryhmät" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "Näytä käyttäjien kuvat" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Järjestä käyttäjät" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Näytä tiedostonsiirtoikkuna" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Uusi käyttäjä" -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Uusi ryhmä" -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "Vie käyttäjälista" -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Näytä keskusteluhistoria" -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Uusi käyttäjätili" -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Muokkaa käyttäjätiliä" -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Muokkaa KMessiä" -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Näytä valinta valikko" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Älä näytä" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Pieni" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Keskikokoinen" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Suuri" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Ryhmä" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Paikalla/Poissa" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Sekoitettu" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Näytä verkkoyhteydet" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Kirjautui sisään %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 Kirjautui" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 Poistui" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Keskustelu" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Poista ryhmästä" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "Kopioi ryhmään" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "Siirrä ryhmään" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Siirrä ryhmää alemmas" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Siirrä ryhmää ylemmäs" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Poista ryhmä" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Uudelleennimeä ryhmä" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Et ole tämän käyttäjän yhteystietolistalla." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Sähköpostiosoite" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Asiakasohjelma" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Kyllä" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Ei" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Estetty" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Viimeksi nähty" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Viimeisin viesti" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Ryhmä %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2121,7 +2118,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 käyttäjä." msgstr[1] "%1 Käyttäjät" -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2129,7 +2126,7 @@ msgid_plural "%1 online" msgstr[0] "%1 Paikalla" msgstr[1] "%1 Paikalla" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2137,18 +2134,18 @@ msgid_plural "%1 contacts" msgstr[0] "%1 käyttäjä" msgstr[1] "%1 käyttäjät" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 #, fuzzy msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Paina tästä tallentaakseen salasanasi" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 #, fuzzy msgctxt "Default personal message tooltip" msgid "" @@ -2158,15 +2155,15 @@ msgstr "" "Syötä tähän henkilökohtainen viestisi: ystäväsi näkevät tämän nimimerkkisi " "kanssa." -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Ei löydy tallennettuja lokitiedostoja kyseiseltä käyttäjältä." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Ei löydy keskusteluhistoriaa" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2176,13 +2173,23 @@ msgstr "" "keskusteluja ei tallenneta, jos haluat tallentaa keskustelut, voit kytkeä " "ominaisuuden päälle käyttäjätilin asetuksista." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 sähköpostiviesti" msgstr[1] "%1 sähköpostiviestiä" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Näytä kuunneltavan kappaleen nimi" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Näytä kuunneltavan kappaleen nimi" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2866,49 +2873,57 @@ msgstr "" msgid "Marco Mentasti" msgstr "Sarkastinen" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspiraatio ja ohjelmakoodi" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "Vanha puhekuplakoodi, p2p koodi, ja MSN käyttäytyminen" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Joutilaana olon laskuri" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Sulje-ilmaisinalueelle ikonin kuvankaappaus koodi" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Muokattau kaatumisen hallinnan toteutus. Ilmoitusaluuen ikonien toteuttaminen" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2916,11 +2931,11 @@ msgstr "" "KNotify 'not giving focus' bugin korjaus ja KWin 'focus stealing prevention " "workaround'" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2929,33 +2944,33 @@ msgstr "" "keskustelusivuille. Jos tunnet nimesi puuttuvan listalta ja se kuuluisi " "sinne, otathan yhteyttä meihin!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Nimesi tähän?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Sinun nimet" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "Sinun sähköpostiosoitteesi" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Älä näytä yhteystietolistaa käynnistyksen yhteydessä" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Kirjaudu automaattisesti annetulla sähköpostiosoitteella" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Aja virheen tarkistus (Ainoastaan kehittäjien versioissa)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3608,24 +3623,24 @@ msgstr "MSN Virhe" msgid "Trying the HTTP fallback..." msgstr "Yritetään HTTP varmistuksella..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Tunnistaudutaan..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Tunnistauduttu" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Yhdistetään..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Vastaanotettiin tuntematon virhe palvelimelta: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3633,51 +3648,51 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minuutti" msgstr[1] "%1 minuuttia" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Palvelin suljetaan huollettavaksi %1 minuutin kuluttua" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Live Messenger palvelin sujletaan huollettavksi %1 minuutin kuluttua" -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "Ei voinnu käsitellä poissaolon aikaisia viestejä.
    Lisätietoja: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP asiakasohjelma ei ole enään kelvollinen" -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Odotettiin liian kauan tunnistautumista" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Odotetaan yhteystietolistaa" -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    Varoitus: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN Varoitus" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    Sisäisen virheen syy: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." @@ -3685,18 +3700,18 @@ msgid "" msgstr "" "

    Tunnustautuminen epäonnistui. Tarkista käyttäjännimi, ja salasana.

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN Virhe" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    Käyttäjätili %1 yhdistettiin muualta.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3706,7 +3721,7 @@ msgstr "" "

    Yhteys katkaistu. Käyttäjätilisi %1 on yhdistetty palveluun " "muualta.

    " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3715,7 +3730,7 @@ msgstr "" "

    Ei voitu yhdistää LIve Messenger palveluun.
    Ehkä sinun pitää " "tunnistautua palveluun ennen kuin voit yhdistää?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3731,25 +3746,25 @@ msgstr "" "vaaditaan proxy tavoittaakseen verkkoa.Paina " "tästä<7a>tarkistakseen Messenger-palvelun tilan sivuilta.

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " msgstr "" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " "possible that the MSN network is unavailable at the moment.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Ei voi yhdistää Live Messenger palveluun.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3764,64 +3779,64 @@ msgstr "" "vaaditaan proxy tavoittaakseen verkkoa.
    Paina " "tästä<7a>tarkistakseen Messenger-palvelun tilan sivuilta.

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Virhe: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messenger palvelin raportoi virheen:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Messenger palveluvirhe: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    The Live Messenger palvelu raportoi virheestä:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    KMess Virhe: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    Tapahtui KMessin sisäisen virhe:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Verkkoyhteys katkesi

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    Yhteys Live Messenger palveluun katkesi

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" "

    Developer info:
    Error number: %1
    Error string: %2

    " msgstr "" -"

    Kehittäjät:
    Virheen numero: %1
    Virherivi: %" -"2

    " +"

    Kehittäjät:
    Virheen numero: %1
    Virherivi: " +"%2

    " #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3859,14 +3874,14 @@ msgstr[1] "1 ping hukattu" msgid "The connection to the server was lost" msgstr "Yhteys palvelimeen katkesi" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "" "Sähköpostiosoite \"%1\", jota yritettiin lisätä. Ei ole käyttökelponen!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3874,42 +3889,42 @@ msgid "" "account!" msgstr "Sähköpostiosoite \"%1\" ei ole Live Messenger käyttäjätili!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Väärä web-palvelupyyntö (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Palvelu ei ole tavoitettavissa (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Liian monta uudelleenohjausta web-palvelusta" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Poissaoloviestipalvelu on väliaikaisesti saavuttamattomissa" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messenger palvelussa ongelmia" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Väärä web-palvelupyyntö %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Ei vastaa palvelupyyntöihin" @@ -4055,38 +4070,123 @@ msgstr "%1
    puhelimessa" msgid "%1
    is out for lunch" msgstr "%1
    lounaalla" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 sähköpostiviesti" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Ainoastaan kontakteille samassa ryhmässä" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Käyttäjä ei ole paikalla" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Käyttäjä ei ole paikalla" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "KMess-ikoni" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "Uusi sähköposti:
    %1
    käyttäjältä %2" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"Sulkemalla pääikkunan KMess jää aktiiviseksi järjestelmäpalkkiin. Käytä " +"\"Poistu\" valintaa \"Yhdistä\" valikosta sulkeaksesi ohjelman." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Pienennetään järjestelmäpalkkiin" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Yhdistetään kohteeseen %1 portti %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "
    %1 (%2)" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Yhdistetty" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Verkkoyhteys katkesi

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Aloita keskustelu" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Jätä viesti" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Näytä viesti" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Tietoa" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Lue sähköposti" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Piilota" @@ -4099,11 +4199,6 @@ msgstr "" "Sulkemalla pääikkunan KMess jää aktiiviseksi järjestelmäpalkkiin. Käytä " "\"Poistu\" valintaa \"Yhdistä\" valikosta sulkeaksesi ohjelman." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Pienennetään järjestelmäpalkkiin" - #: notification/systemtraywidget.cpp:248 #, fuzzy, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4134,21 +4229,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "Sinun sähköpostiosoitteesi" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Selaa..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Selaa, ja rajaa kuva" -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Valitse edellinen kuva..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Keskustelukuvake" @@ -6450,6 +6545,10 @@ msgstr "" "Sähköpostisoitettasi ei tulla hyödyntämään, muuhun kuin reportointiin
    " +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Et ole tämän käyttäjän yhteystietolistalla." + #~ msgctxt "Label text" #~ msgid "" #~ "Handwriting is disabled: KMess cannot send drawings to some of the " diff --git a/po/fr.po b/po/fr.po index 56093a9..c33340d 100644 --- a/po/fr.po +++ b/po/fr.po @@ -15,17 +15,18 @@ msgid "" msgstr "" "Project-Id-Version: fr\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-01-04 22:54+0100\n" "Last-Translator: Grégory BELLIER \n" "Language-Team: American English \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Je ne suis pas devant mon ordinateur" @@ -33,7 +34,7 @@ msgstr "Je ne suis pas devant mon ordinateur" msgid "Your name" msgstr "Votre pseudo" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "vous@hotmail.com" @@ -497,39 +498,39 @@ msgstr "Écraser le fichier" msgid "Over&write" msgstr "&Ecraser" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Afficher les &Emoticônes" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Cacher cette &Émoticône" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "&Envoyer un e-mail" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "&Ajouter le Contact" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Copier l'adresse e-&mail :" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Suivre le &Lien" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Copier l'&Adresse" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Effacer &la Conversation" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Enregistrer la conversation dans le &Fichier..." @@ -669,7 +670,7 @@ msgstr "Changer la &Couleur" msgid "C&lear Chat Window" msgstr "Effacer &la fenêtre de Chat" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -680,34 +681,34 @@ msgstr "" "invisible.
    Vous pouvez aussi utiliser des raccourcis comme /" "online ou /phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Syntaxe incorrecte pour la commande /status" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "Vous ne pouvez pas utiliser la commande /block dans un chat groupé." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Impossible d'utiliser la commande /block" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Vous ne pouvez pas utiliser la commande /unblock dans un chat groupé." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Impossible d'utiliser la commande /unblock !" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -716,19 +717,19 @@ msgstr "" "Commande inconnue %1. Si votre message n'est pas une commande, " "rajoutez un autre / au début du message." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Commande inconnue" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "Impossible d'envoyer le message manuscrit : les contacts ne supportent pas " "cette fonctionnalité." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -737,18 +738,18 @@ msgstr "" "Impossible d'envoyer le message manuscrit : il y a eu une erreur lors de sa " "création" -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Conversation" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Conversation" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -758,37 +759,37 @@ msgstr "" "Etes-vous sûr de vouloir masquer la barre de menu ? Vous pouvez la " "réafficher en utilisant le raccourci : %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Masquer le menu" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Gomme" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Gomme" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 est en train d'écrire..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 et %2 sont en train d'écrire..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 et %3 autres personnes sont en train d'écrire..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -802,11 +803,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Mode écriture à main levée" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -815,7 +816,7 @@ msgstr "" "Écriture manuscrite désactivée : un ou plusieurs contacts ne supporte(nt) " "pas cette fonctionnalité." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -826,11 +827,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Clins d'œil" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." @@ -838,7 +839,7 @@ msgstr "" "Les clins d'oeil sont désactivés : un ou plusieurs contacts ne supporte(nt) " "pas cette fonctionnalité." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" @@ -849,51 +850,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "&Démarrer une Conférence privée" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Envoyer un e-mail" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Voir son Profil" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Propriétés" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Ajouter le Contact" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Autoriser &le Contact" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Supprimer le contact" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Bloquer le Contact" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Débloquer le Contact" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Pseudonyme" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Message Personnel" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Adresse &e-mail" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "&Nom du morceau" @@ -919,15 +920,15 @@ msgstr "&Notes" msgid "&Emoticons" msgstr "&Emoticônes" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Copier" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Bloqué" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -935,17 +936,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Le contact est %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Le téléchargement de l'avatar a échoué." -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -975,7 +977,7 @@ msgstr "Ajouter un nouveau" msgid "Edit" msgstr "Éditer" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Supprimer" @@ -1031,52 +1033,52 @@ msgstr "Compatible Windows Live Messenger %1" msgid "Windows Live Messenger compatible" msgstr "Compatible Windows Live Messenger" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "En ligne" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Occupé" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Absent" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Absent avec auto-réponse" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inactif" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Bientôt de retour" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Au téléphone" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Parti manger" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Invisible" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Déconnecté" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Mon Statut" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Déconnecter" @@ -1181,16 +1183,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Propriétés du contact %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Connecté" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Pas encore aperçu" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Pas de messages pour le moment" @@ -1218,20 +1220,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Client MSN : %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Êtes-vous sûr(e) de vouloir utiliser l'avatar de ce contact ?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Copier l'avatar du contact" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Ce type de fichier n'est pas supporté par Phonon." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Type de fichier non supporté" @@ -1745,11 +1747,11 @@ msgstr "" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" -"En attente d'une reconnexion de la ligne Internet...
    Reconnexion maintenant !" +"En attente d'une reconnexion de la ligne Internet...
    Reconnexion maintenant !" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1815,7 +1817,7 @@ msgstr "Ajouter un Groupe" msgid "Enter a name for the new group:" msgstr "Entrer un nom pour le nouveau groupe :" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1824,15 +1826,15 @@ msgstr "" "Êtes-vous sûr(e) de vouloir supprimer %1 de votre liste de " "contacts ?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Supprimer le contact" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Supprimer et bloquer" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1842,12 +1844,12 @@ msgstr "" "Le groupe \"%1\" n'est pas vide : supprimez d'abord tous les contacts " "de ce groupe puis réessayez !" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Supprimé du groupe" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1857,24 +1859,24 @@ msgstr "" "Etes-vous sûr(e) de vouloir supprimer le groupe %1 de votre liste " "de contacts ?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Supprimer" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "C'est un groupe spécial qui ne peut être modifié." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Renommer le Groupe" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Entrer le nouveau nom pour ce groupe :" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1884,21 +1886,21 @@ msgstr "" "

    Impossible de s'identifier automatiquement avec le compte \"%1\" : " "
    vous devez d'abord enregistrer le mot de passe du compte !

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "L'authentification automatique a échoué" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "La connexion est peut être perdue..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Déconnecté" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1906,7 +1908,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess l'a cherché dans les dossiers suivants :
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1922,12 +1924,12 @@ msgstr "" "suivants : %1

    Veuillez vérifier votre installation et copier le " "fichier manquant dans un des répertoires listés." -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Erreur avec les notifications" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1936,210 +1938,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Connexion" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Déconnexion" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Voir mon &Profil" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Afficher les Contacts &Autorisés" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Afficher les Contacts &Déconnectés" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Afficher les Contacts Supp&rimés" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Afficher les &Historiques" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Afficher la &Barre de recherche" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Affich&er les groupes vides" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "Taille &des Avatars" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Cla&sser les Contacts par" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Afficher la fenêtre de &Transfert" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Nouveau &Contact..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Nouveau &Groupe..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Exporter la liste des contacts..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "&Historique des conversations..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Nouve&au Compte..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Configuration du Compte..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Configurer &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Voir le &menu Sélection" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Ne pas afficher" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Petit" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Moyen" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Large" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Groupe" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Connecté/Déconnecté" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Mélangé" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Afficher la fenêtre du &Réseau" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Identifié avec %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 s'est connecté(e)" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 s'est déconnecté(e)" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Conversa&tion" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Supp&rimer du groupe" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Copier dans le groupe" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "Déplacer dans le &Groupe" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Placer le Groupe en &Bas" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Placer le Groupe en &Haut" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Suppri&mer le Groupe" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Re&nommer le Groupe" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Ce contact ne vous a pas ajouté dans sa liste de contact." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Adresse e-mail" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Client MSN" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Oui" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Non" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Bloqué" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Vu(e) pour la dernière fois" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Dernier message" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Groupe %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2147,7 +2144,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 contact" msgstr[1] "%1 contacts," -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2155,7 +2152,7 @@ msgid_plural "%1 online" msgstr[0] "%1 connecté" msgstr[1] "%1 connectés" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2163,17 +2160,17 @@ msgid_plural "%1 contacts" msgstr[0] "%1 contact" msgstr[1] "%1 contacts" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Cliquez ici pour changer votre pseudonyme" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Entrez votre message personnel[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2182,15 +2179,15 @@ msgstr "" "Tapez ici un message à montrer à vos contacts : ils le verront avec votre " "pseudonyme" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Pas d'historique trouvé pour ce contact." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Aucun historique trouvé" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2200,13 +2197,21 @@ msgstr "" "conversations ne sont pas archivées. Si vous souhaitez qu'elles le soient, " "vous pouvez le spécifier dans les réglages de votre compte." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 nouveau mail" msgstr[1] "%1 nouveaux mails" +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Informer les contacts du morceau que j'écoute (cliquer pour désactiver)" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Informer les contacts du morceau que j'écoute (cliquer pour activer)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2892,52 +2897,60 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspirations et code allant avec" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Ancien code des popups de notification, début du code pour le P2P, et " "gestion des problème avec MSN" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Code du compteur d'inactivité" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Code de l'icône de fermeture vers la barre des tâches" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Implémentation du gestionnaire de plantages et de l'icône dans la barre " "système." -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2945,11 +2958,11 @@ msgstr "" "Correction du bug empêchant KNotify de donner le focus, et protection contre " "le vol de focus de la part de KWin." -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2959,34 +2972,34 @@ msgstr "" "S'il vous semble que votre nom manque à cette liste, s'il vous plaît " "contactez-nous également !" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Votre nom ici ?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Grégory BELLIER" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "gregory.bellier@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Ne pas montrer la liste de contacts sur la fenêtre au départ" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Se connecter automatiquement avec ce compte" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "" "Lancer le mode de débuggage (pour la version de développement uniquement)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3673,24 +3686,24 @@ msgstr "Erreur MSN %1" msgid "Trying the HTTP fallback..." msgstr "Essai de connection HTTP..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Authentification en cours..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Authentifié" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Connexion en cours..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "KMess a reçu une commande inconnue de la part du serveur: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3698,55 +3711,55 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minute" msgstr[1] "%1 minutes" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Le serveur est arrêté pour maintenance dans %1 !" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "" -"Afin d'effectuer la maintenance, le serveur Live Messenger s'arrêtera dans %" -"1." +"Afin d'effectuer la maintenance, le serveur Live Messenger s'arrêtera dans " +"%1." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "" "KMess n'a pas pu procéder à l'envoi de vos messages en direction d'un " "contact déconnecté.
    Détails : %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "Le client SOAP n'est plus valide." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Temps limite de connexion dépassé" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "En attente de la liste de contacts..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    Attention: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Avertissement MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    Motif de l'erreur interne : %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." @@ -3755,18 +3768,18 @@ msgstr "" "

    L'authentification a échoué, merci de vérifier votre adresse email et " "votre mot de passe

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Erreur MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    Le compte %1 s'est connecté depuis un autre endroit.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3777,7 +3790,7 @@ msgstr "" "êtes connecté(e) avec un autre client, %1 ou\n" "depuis un autre endroit.

    " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3786,7 +3799,7 @@ msgstr "" "

    Impossible de vous connecter au service Windows Live Messenger.
    Peut-" "être devez-vous d'abord vous identifier avant d'accéder au réseau ?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3802,7 +3815,7 @@ msgstr "" "p>

    Cliquez ici pour consulter la page d'état du service " "Messenger.

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " @@ -3810,7 +3823,7 @@ msgstr "" "

    Impossible de procéder à l'authentification !
    Avez-vous installé " "QCA2 et/ou son qca2-plugin-ossl ?

    " -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " @@ -3820,12 +3833,12 @@ msgstr "" ">Vérifiez si vous avez installé QCA2 ainsi que qca2-plugin-ossl.
    De " "plus, il est possible que le réseau MSN soit pour le moment indisponible.

    " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Impossible de se connecter au service Live Messenger.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3840,56 +3853,56 @@ msgstr "" "p>

    Cliquez ici pour consulter la page d'état du service " "Messenger.

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Erreur: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Le serveur Live Messenger a signalé une erreur :

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Erreur du Service Messenger: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Le serveur Live Messenger a signalé une erreur :

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    Erreur de KMess : %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    KMess a subi une erreur interne :

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Connection au réseau perdue.

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    La connexion avec le serveur Live Messenger a été perdue.

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3936,13 +3949,13 @@ msgstr[1] "%1 pertes de ping" msgid "The connection to the server was lost" msgstr "La connexion avec le serveur a été perdue." -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "L'adresse e-mail spécifiée, \"%1\", n'est pas valide !" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3952,42 +3965,42 @@ msgstr "" "L'adresse e-mail spécifiée, \"%1\", n'appartient pas à un compte Live " "Messenger !" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Requête du service web invalide (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Le service web est inaccessible (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Trop de redirections du service web" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Le service des messages hors ligne est actuellement indisponible." -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Le service Live Messenger rencontre des problèmes" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Réponse du service web invalide %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Pas de réponse du service web" @@ -4133,38 +4146,116 @@ msgstr "%1
    est au téléphone" msgid "%1
    is out for lunch" msgstr "%1
    est parti manger" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "Changement de statut du contact" + +#: notification/macnotification.cpp:66 +msgid "You received a new e-mail message" +msgstr "Vous avez reçu un nouveau mail" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "Un contact vous a wizzé !" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "Un contact a débuté une conversation avec vous" + +#: notification/macnotification.cpp:84 +msgid "A contact messaged you" +msgstr "Un contact vous a envoyé un message" + +#: notification/macnotification.cpp:90 +msgid "A contact came online" +msgstr "Un contact s'est connecté" + +#: notification/macnotification.cpp:96 +msgid "A contact went offline" +msgstr "Un contact s'est déconnecté" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +msgid "KMess notification" +msgstr "Notification KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "e-mail reçu :
    '%1'
    de '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"

    La fermeture de la fenêtre principale laisse KMess fonctionner en arrière " +"plan.

    Vous pouvez rouvrir KMess en cliquant sur l'icône avec l'oiseau
    " +"Cliquez sur 'Quitter' du menu 'Connexion' pour quitter l'application.

    " + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Ancrage dans le System Tray" + +#: notification/newsystemtraywidget.cpp:205 +#, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Connecté en tant que %1 (%2)" + +#: notification/newsystemtraywidget.cpp:209 +#, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "

    Connecté en tant que:
    %1 (%2)

    " + +#: notification/newsystemtraywidget.cpp:216 +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Déconnecté" + +#: notification/newsystemtraywidget.cpp:219 +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Déconnecté.

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Démarrer une conversation" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Laisser un message" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Voir le message" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Détails" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Lire l'e-mail" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Masquer" @@ -4178,11 +4269,6 @@ msgstr "" "plan. Cliquez sur \"Quitter\" dans le menu \"Connexion\" pour quitter " "véritablement le programme." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Ancrage dans le System Tray" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4213,21 +4299,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 e-mails" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Parcourir..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Parcourir et rogner l'image..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Définir l'image précédente..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Avatar" @@ -4572,8 +4658,8 @@ msgid "" "

    You can provide the developers a brief description of your opinions about " "%1.
    %2 %3%4

    " msgstr "" -"

    Vous pouvez envoyer aux développeurs vos opinions à propos de %1.
    %2 %" -"3%4

    " +"

    Vous pouvez envoyer aux développeurs vos opinions à propos de %1.
    %2 " +"%3%4

    " #: utils/likeback/likebackdialog.cpp:225 #, kde-format @@ -6372,8 +6458,8 @@ msgid "" "Specify the path of a program to use to open links; a '%u' here will be " "replaced with the links' URL." msgstr "" -"Spécifiez le chemin vers le programme à utiliser pour ouvrir les liens. Un '%" -"u' sera remplacé par l'URL du lien." +"Spécifiez le chemin vers le programme à utiliser pour ouvrir les liens. Un " +"'%u' sera remplacé par l'URL du lien." #. i18n: file: settings/miscellaneouspage.ui:126 #. i18n: ectx: property (text), widget (QLabel, customBrowserInfo_) @@ -6572,6 +6658,10 @@ msgstr "" "pour vous avertir lorsque votre demande sera effectuée.
    \n" "Votre adresse e-mail ne sera pas utilisée à d'autres fins." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Ce contact ne vous a pas ajouté dans sa liste de contact." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Rédigez ici votre message personnel>" @@ -7098,13 +7188,6 @@ msgstr "" #~ msgid "You have sent a wink!" #~ msgstr "Vous avez envoyé un clin d'œil." -#, fuzzy -#~ msgctxt "Contacts counters in normal group tooltip" -#~ msgid "%1 contact, %2 online" -#~ msgid_plural "%1 contacts, %2 online" -#~ msgstr[0] "%1 contact, %2 en ligne" -#~ msgstr[1] "Ce contact n'est pas en ligne" - #, fuzzy #~ msgid "You have not chatted with this contact yet." #~ msgstr "Vous avez rejeté l'invitation." @@ -7342,9 +7425,6 @@ msgstr "" #~ "Si activé, un message popup est affiché lorsque l'un de vos contacts " #~ "débute une conversation avec vous." -#~ msgid "Start a &chat with you" -#~ msgstr "Débuter une conversation avec moi" - #~ msgid "" #~ "If enabled, a popup message is shown every time one of your contacts " #~ "sends you a message." @@ -7363,9 +7443,6 @@ msgstr "" #~ "Si activé, un message popup est affiché lorsque l'un de vos contacts " #~ "change d'état MSN." -#~ msgid "Change their &status" -#~ msgstr "Changer votre état" - #, fuzzy #~ msgid "" #~ "If enabled, a popup message is shown when one of your contacts goes " @@ -7620,10 +7697,6 @@ msgstr "" #~ msgid "Sidebar" #~ msgstr "Bar latérale" -#, fuzzy -#~ msgid "New contact's group" -#~ msgstr "Nouveau &Contact" - #~ msgid "Enter your login information:" #~ msgstr "Saisissez vos identifiants de connexion :" @@ -7691,10 +7764,6 @@ msgstr "" #~ msgid "Add contact" #~ msgstr "Ajouter le contact" -#, fuzzy -#~ msgid "KMess Notification" -#~ msgstr "Notification d'e-mails" - #~ msgid "" #~ msgstr "" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 0000000..fb5de7b --- /dev/null +++ b/po/gl.po @@ -0,0 +1,6270 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Anton Meixome , 2009. +msgid "" +msgstr "" +"Project-Id-Version: kmess\n" +"Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" +"PO-Revision-Date: 2010-03-11 09:10+0100\n" +"Last-Translator: Indalecio Freiría Santos \n" +"Language-Team: Galego \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 0.3\n" +"X-Poedit-Language: Galician\n" +"X-Poedit-Country: SPAIN\n" + +#: account.cpp:45 account.cpp:755 +msgid "I am away from my computer" +msgstr "Estou lonxe do meu computador" + +#: account.cpp:54 +#, fuzzy +msgid "Your name" +msgstr "Indalecio Freiría Santos" + +#: account.cpp:57 settings/accountpage.cpp:220 +#: settings/accountsettingsdialog.cpp:205 +msgid "you@hotmail.com" +msgstr "" + +#: accountsmanager.cpp:559 +#, kde-format +msgid "" +"Some insecurely stored account passwords have been found.
    Do you " +"want to import the passwords to the KDE Wallet named '%1', keep the " +"insecurely stored passwords, or delete them permanently?

    Note: " +"it is not recommended to keep insecurely stored passwords if the KDE Wallet " +"is available, because your passwords will be easily readable in the KMess " +"configuration files." +msgstr "" + +#: accountsmanager.cpp:567 +msgctxt "Dialog box caption" +msgid "Secure Password Storage" +msgstr "Almacenamento de contrasinal seguro" + +#: accountsmanager.cpp:569 +msgctxt "Dialog button: Import passwords to a KDE wallet" +msgid "Import" +msgstr "Importar" + +#: accountsmanager.cpp:572 +msgctxt "Dialog button: Delete insecurely stored passwords" +msgid "Delete" +msgstr "Eliminar" + +#: accountsmanager.cpp:575 +msgctxt "Dialog button: Keep insecurely stored passwords" +msgid "Keep" +msgstr "Manter" + +#: chat/chat.cpp:112 +msgctxt "Error dialog box text" +msgid "" +"You cannot send invitations when there are multiple contacts in a chat. " +"Please start a separate chat with the contact you wanted to send the " +"invitation to." +msgstr "" + +#: chat/chat.cpp:136 +#, kde-format +msgid "%1 has joined the chat." +msgstr "%1 uniuse á conversa." + +#: chat/chat.cpp:189 +#, kde-format +msgctxt "Message shown in chat, %1 is the contact's friendly name" +msgid "The chat went idle, %1 has left it." +msgstr "" + +#: chat/chat.cpp:195 +#, kde-format +msgctxt "Message shown in chat, %1 is the contact's friendly name" +msgid "%1 has left the chat." +msgstr "%1 deixou a conversa." + +#: chat/chat.cpp:357 +#, kde-format +msgctxt "Name of a chat tab" +msgid "%1 and %2" +msgstr "%1 e %2" + +#: chat/chat.cpp:365 +#, kde-format +msgctxt "Name of a chat tab" +msgid "%1 et al." +msgstr "" + +#: chat/chat.cpp:661 +#, kde-format +msgctxt "Automatic reply message" +msgid "%1 (This message was sent automatically)" +msgstr "" + +#: chat/chat.cpp:827 +#, kde-format +msgid "" +"KMess could not save the log for this chat:
    The chat logs " +"directory, "%1", does not exist." +msgstr "" + +#: chat/chat.cpp:969 +msgctxt "Message shown in the chat window (when the wink name is unknown)" +msgid "You have sent a wink!" +msgstr "Enviaches un chisco" + +#: chat/chat.cpp:974 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the wink name" +msgid "You have sent the "%1" wink!" +msgstr "" + +#: chat/chat.cpp:1007 +msgid "" +"The chat has been disabled because you are no longer connected to the Live " +"Messenger server." +msgstr "" +"A conversa foi deshabilitada debido a que xa non estas conectado ao servidor " +"de Live Messenger." + +#: chat/chat.cpp:1164 +msgctxt "Warning message shown in chat" +msgid "There has been a connection problem." +msgstr "Houbo un problema de conexión." + +#: chat/chat.cpp:1174 +msgctxt "Warning message shown in chat" +msgid "" +"There were too many different custom emoticons in your last message. Only " +"the first 7 will be sent." +msgstr "" + +#: chat/chat.cpp:1187 +#, kde-format +msgctxt "Warning message shown in chat, %1 is the contact's friendly name" +msgid "" +"%1 has sent you a voice clip, but KMess does not support voice clips yet." +msgstr "" + +#: chat/chat.cpp:1201 +#, kde-format +msgctxt "Warning message shown in chat, %1 is the contact's friendly name" +msgid "" +"%1 has sent you an action message, but KMess does not support action " +"messages yet." +msgstr "" + +#: chat/chat.cpp:1212 +msgctxt "Warning message shown in chat" +msgid "One or more contacts do not support the handwriting message." +msgstr "" + +#: chat/chat.cpp:1226 +#, kde-format +msgctxt "Warning message shown in chat, %1 is the contact's friendly name" +msgid "" +"%1 has sent you a Live Messenger feature that KMess does not support yet." +msgstr "" + +#: chat/chat.cpp:1252 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the contact's friendly name" +msgid "" +"You received a wink from %1, but displaying winks has been disabled. You can " +"re-enable it in the account settings." +msgstr "" + +#: chat/chat.cpp:1262 +#, kde-format +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but displaying winks has been " +"disabled. You can re-enable it in the account settings." +msgstr "" + +#: chat/chat.cpp:1292 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the contact's friendly name" +msgid "%1 has sent you a wink!" +msgstr "%1 enviouche un chisco!" + +#: chat/chat.cpp:1299 +#, kde-format +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "%1 has sent you a wink: "%2"!" +msgstr "" + +#: chat/chat.cpp:1321 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the contact's friendly name" +msgid "" +"You received a wink from %1, but it could not be displayed. Make sure you " +"have the "cabextract" program installed." +msgstr "" + +#: chat/chat.cpp:1330 +#, kde-format +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Make sure you have the "cabextract" program installed." +msgstr "" + +#: chat/chat.cpp:1342 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the contact's friendly name" +msgid "" +"You received a wink from %1, but it could not be displayed. Extracting the " +"wink package with "cabextract" has failed." +msgstr "" + +#: chat/chat.cpp:1351 +#, kde-format +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Extracting the wink package with "cabextract" has failed." +msgstr "" + +#: chat/chat.cpp:1363 +#, kde-format +msgctxt "Message shown in the chat window, %1 is the contact's friendly name" +msgid "" +"You received a wink from %1, but it could not be displayed. The data could " +"not be read." +msgstr "" + +#: chat/chat.cpp:1372 +#, kde-format +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" + +#: chat/chat.cpp:1414 +#, kde-format +msgid "" +"%1 has gone offline. Any messages you send will be delivered the next time " +"he or she logs in." +msgstr "" + +#: chat/chat.cpp:1419 +#, kde-format +msgid "%1 has gone offline." +msgstr "%1 desconectouse." + +#: chat/chat.cpp:1429 +#, kde-format +msgid "%1 has changed his or her status to "%2"." +msgstr "" + +#: chat/chat.cpp:1460 +#, kde-format +msgid "%1 has sent you a nudge!" +msgstr "%1 chamou a súa atención!" + +#: chat/chat.cpp:1493 +msgctxt "" +"Phrase to be inserted in place of a contact name, when a message can't be " +"delivered to any of the recipients" +msgid "all contacts" +msgstr "todos os contactos" + +#: chat/chat.cpp:1506 +#, kde-format +msgctxt "Error message shown in chat, %1 is the contact's friendly name" +msgid "Failed to send the nudge to %1." +msgstr "Fallou a chamada a atención a %1." + +#: chat/chat.cpp:1511 +#, kde-format +msgctxt "Error message shown in chat, %1 is the contact's friendly name" +msgid "Failed to send the wink to %1." +msgstr "Fallou o envío de chisco a %1." + +#: chat/chat.cpp:1521 +#, kde-format +msgctxt "Error message shown in chat, %1 is the contact's friendly name" +msgid "Failed to send the handwritten message to %1." +msgstr "Fallou o envío da mensaxe escrita a man a %1" + +#: chat/chat.cpp:1536 +#, kde-format +msgctxt "" +"Error message shown in chat, %1 is the sent message, %2 is the contact's " +"friendly name" +msgid "Failed to send the message to %2:
    %1" +msgstr "Fallou o envío da mensaxe a %2:
    %1" + +#: chat/chat.cpp:1619 +#, kde-format +msgid "" +"The file "%1" could not be found on your computer, and the " +"download failed." +msgstr "" + +#: chat/chat.cpp:1656 +#, kde-format +msgctxt "Message shown in chat window, %1 is the contact's friendly name" +msgid "You have sent a nudge to %1!" +msgstr "Chamastes a atención de %1" + +#: chat/chat.cpp:1662 +msgid "You have sent a nudge!" +msgstr "Chamastes a atención!" + +#: chat/chat.cpp:1728 +#, kde-format +msgid "" +"%1 is currently offline. Any messages you send will be delivered the next " +"time he or she logs in." +msgstr "" + +#: chat/chatmaster.cpp:1316 +#, kde-format +msgctxt "Error message shown in chat, %1 is the name of the contact" +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"This version of KMess was built without ISF support." +msgstr "" + +#: chat/chatmaster.cpp:1338 +#, kde-format +msgctxt "Error message shown in chat, %1 is the name of the contact" +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" + +#: chat/chatmaster.cpp:1467 +#, kde-format +msgid "%1 is sending a wink: "%2"" +msgstr "" + +#: chat/chatmessagestyle.cpp:383 +#, kde-format +msgid "%1 says:" +msgstr "%1 di:" + +#: chat/chatmessageview.cpp:345 +#, kde-format +msgctxt "" +"Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" +msgid "Chat with %1
    Started on: %2" +msgstr "" + +#: chat/chatmessageview.cpp:392 +#, fuzzy, kde-format +msgctxt "" +"Header of a single chat saved as plain text chat log: %1 is the chat date " +"and time" +msgid "Chat started on: %1" +msgstr "A conversa comezou en: %2" + +#: chat/chatmessageview.cpp:432 +#, kde-format +msgctxt "Header of a chat file saved in plain text: %1 is the contact" +msgid "Saved KMess chats with %1" +msgstr "Gardadas conversas de KMess con %1" + +#: chat/chatmessageview.cpp:1095 utils/richtextparser.cpp:658 +#, kde-format +msgid "Add this emoticon: %1" +msgstr "Engadir esta emoticona: %1" + +#: chat/chatmessageview.cpp:1141 +msgid "&Copy Text" +msgstr "&Copiar texto" + +#: chat/chatmessageview.cpp:1142 +msgid "Select &All" +msgstr "Seleccion&ar todo" + +#: chat/chatmessageview.cpp:1143 +msgid "Find &Text..." +msgstr "Atopa o &texto..." + +#: chat/chatstatusbar.cpp:49 +msgctxt "@action:button" +msgid "Reconnect" +msgstr "Volver a conectar" + +#: chat/chatview.cpp:395 +#, kde-format +msgid "" +"Could not save chat log in directory '%1'.\n" +"Make sure you have permission to write in the folder where logs are being " +"saved." +msgstr "" + +#: chat/chatview.cpp:548 +msgctxt "Chat log saving dialog, file type filter" +msgid "" +"*.html *.htm|Web Page (*.html)\n" +"*.txt|Plain Text Document (*.txt)\n" +"*.xml|XML Document (*.xml)" +msgstr "" + +#: chat/chatview.cpp:567 +#, kde-format +msgid "" +"The file '%1' already exists.\n" +"Do you want to overwrite it?" +msgstr "" + +#: chat/chatview.cpp:568 network/applications/filetransfer.cpp:261 +#: network/applications/filetransferp2p.cpp:347 +msgid "Overwrite File" +msgstr "Sobrescribir o ficheiro?" + +#: chat/chatview.cpp:569 network/applications/filetransfer.cpp:261 +#: network/applications/filetransferp2p.cpp:347 +msgid "Over&write" +msgstr "Sobrescribir" + +#: chat/chatview.cpp:934 +msgid "Add this &Emoticon..." +msgstr "Engadir esta emoticona..." + +#: chat/chatview.cpp:937 +msgid "Hide this &Emoticon" +msgstr "Oculta a &emoticona" + +#: chat/chatview.cpp:943 +msgid "Send &Email" +msgstr "Enviar un correo &electrónico" + +#: chat/chatview.cpp:947 +msgid "Add &Contact" +msgstr "Engadir un &contacto..." + +#: chat/chatview.cpp:951 +msgid "Copy E&mail Address" +msgstr "Copiar o e&nderezo de correo" + +#: chat/chatview.cpp:957 +msgid "Visit &Link" +msgstr "Visita a &ligazón" + +#: chat/chatview.cpp:961 +msgid "Copy &Address" +msgstr "Copi&ar enderezo" + +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 +msgid "C&lear Chat" +msgstr "&Limpa a conversa" + +#: chat/chatview.cpp:975 +msgid "Save Chat to &File..." +msgstr "Garda a conversa no &ficheiro..." + +#: chat/chatwindow.cpp:124 +msgid "Contacts" +msgstr "Contactos" + +#: chat/chatwindow.cpp:130 settings/accountsettingsdialog.cpp:90 +#: settings/accountsettingsdialog.cpp:91 +msgid "Emoticons" +msgstr "Emoticonas" + +#: chat/chatwindow.cpp:137 +msgid "My Emoticons" +msgstr "As miñas emoticonas" + +#: chat/chatwindow.cpp:376 +msgid "" +"There are multiple tabs open in this chat window. Do you want to close " +"the current tab only, or all tabs?

    Note: You can close all " +"tabs at once by pressing Alt+F4." +msgstr "" + +#: chat/chatwindow.cpp:380 +msgctxt "Dialog box caption: closing a chatwindow with a single tab" +msgid "Closing a Chat Tab" +msgstr "Pechando un separador de conversa" + +#: chat/chatwindow.cpp:381 +msgid "Close All Tabs" +msgstr "Pechar todos os separadores" + +#: chat/chatwindow.cpp:382 +msgid "Close Current Tab" +msgstr "Pechar este separador" + +#: chat/chatwindow.cpp:458 +msgid "&Invite..." +msgstr "&Invitar" + +#: chat/chatwindow.cpp:459 +msgid "Send a &File..." +msgstr "Enviar &ficheiro..." + +#: chat/chatwindow.cpp:460 +msgid "Send a &Nudge!" +msgstr "Chamar a &atención!" + +#: chat/chatwindow.cpp:461 +msgid "Save Chat..." +msgstr "Gardar a conversa..." + +#: chat/chatwindow.cpp:462 +msgid "Close &All Tabs" +msgstr "Pech&ar todos os separadores" + +#: chat/chatwindow.cpp:467 +msgid "Change &Font" +msgstr "Cambiar tipo de &letra" + +#: chat/chatwindow.cpp:468 +msgid "Change Font &Color" +msgstr "Cambiar a &cor do tipo de letra" + +#: chat/chatwindow.cpp:475 +msgid "Show &Emoticons" +msgstr "Amosar as &emoticonas" + +#: chat/chatwindow.cpp:476 +msgid "Show S&tatus Messages" +msgstr "Amosar as mensaxes de es&tado" + +#: chat/chatwindow.cpp:482 +msgid "&Panels" +msgstr "&Paneis" + +#: chat/chatwindow.cpp:485 +msgid "Use &Spell Checking" +msgstr "" + +#: chat/chatwindow.cpp:489 +msgid "Nudge" +msgstr "Chamar a atención" + +#: chat/chatwindow.cpp:490 +msgid "Send a &File" +msgstr "Enviar un &ficheiro" + +#: chat/chatwindow.cpp:493 chat/chatwindow.cpp:494 +msgid "P&revious Tab" +msgstr "Separador &anterior" + +#: chat/chatwindow.cpp:495 chat/chatwindow.cpp:496 +msgid "Ne&xt Tab" +msgstr "&Seguinte separador" + +#: chat/chatwindow.cpp:511 +msgid "Enable or disable the contacts panel" +msgstr "Activar ou desactivar o panel de contactos" + +#: chat/chatwindow.cpp:512 chat/chatwindow.cpp:513 +msgctxt "Toolbar button" +msgid "Contacts" +msgstr "Contactos" + +#: chat/chatwindow.cpp:517 +msgid "Enable or disable the standard emoticons panel" +msgstr "Activar ou desactivar o panel emoticonas estándar" + +#: chat/chatwindow.cpp:518 chat/chatwindow.cpp:519 +msgctxt "Toolbar button" +msgid "Emoticons" +msgstr "Emoticonas" + +#: chat/chatwindow.cpp:523 +msgid "Enable or disable the custom emoticons panel" +msgstr "Activa ou desactiva o panel de emoticonas personalizadas" + +#: chat/chatwindow.cpp:524 chat/chatwindow.cpp:525 +msgctxt "Toolbar button" +msgid "My Emoticons" +msgstr "As miñas emoticonas" + +#: chat/chatwindow.cpp:537 +msgid "&Font" +msgstr "Tipo de &letra" + +#: chat/chatwindow.cpp:538 +msgid "Font &Color" +msgstr "&Cor da letra" + +#: chat/chatwindow.cpp:539 +msgid "C&lear Chat Window" +msgstr "&Limpar a xanela da conversa" + +#: chat/chatwindow.cpp:1149 +msgid "" +"You used an incorrect syntax for the /status command. The correct " +"syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." +"
    You can also use shortcuts like /online or /phone." +msgstr "" + +#: chat/chatwindow.cpp:1152 +msgctxt "Dialog box caption for wrong command syntax warning" +msgid "Incorrect /status Syntax" +msgstr "Sintaxe incorrecta /status" + +#: chat/chatwindow.cpp:1215 +msgid "You cannot use the /block command in a group chat." +msgstr "" + +#: chat/chatwindow.cpp:1217 +msgctxt "Caption when trying to block someone in a group chat" +msgid "Cannot use /block command" +msgstr "Non se pode usar a orde /block" + +#: chat/chatwindow.cpp:1228 +msgid "You cannot use the /unblock command in a group chat." +msgstr "" + +#: chat/chatwindow.cpp:1230 +msgctxt "Caption when trying to unblock someone in a group chat" +msgid "Cannot use /unblock command!" +msgstr "Non se pode usar a orde /unblock!" + +#: chat/chatwindow.cpp:1260 +#, kde-format +msgid "" +"Unknown command %1. If you did not want this message to be a " +"command, prepend your message with another /." +msgstr "" + +#: chat/chatwindow.cpp:1263 +msgctxt "Caption when an unknown command was requested" +msgid "Unknown Command" +msgstr "Orde descoñecida" + +#: chat/chatwindow.cpp:1539 +msgctxt "Error message shown in chat" +msgid "Failed to send the handwritten message: the contacts do not support it." +msgstr "" + +#: chat/chatwindow.cpp:1577 +#, fuzzy +msgctxt "Error message shown in chat" +msgid "" +"Failed to send the handwritten message: an error has occurred while creating " +"it." +msgstr "Fallou o envío da mensaxe escrita a man a %1" + +#: chat/chatwindow.cpp:1858 +msgctxt "Chat window caption, without contact name" +msgid "Chat" +msgstr "Conversa" + +#: chat/chatwindow.cpp:1862 +#, kde-format +msgctxt "Chat window caption, with contact name" +msgid "%1 - Chat" +msgstr "%1 - Conversa" + +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 +#, kde-format +msgctxt "Question dialog box message" +msgid "" +"Are you sure you want to hide the menu bar? You will be able to show " +"it again by using this keyboard shortcut: %1" +msgstr "" + +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 +msgctxt "Dialog box caption: hiding the menu bar" +msgid "Hiding the Menu" +msgstr "Ocultando o menú" + +#: chat/chatwindow.cpp:1972 +msgid "Drawing brush" +msgstr "" + +#. i18n: file: chat/chatwindow.ui:364 +#. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) +#: chat/chatwindow.cpp:1978 rc.cpp:41 +msgid "Erase brush" +msgstr "" + +#: chat/chatwindow.cpp:2171 +#, kde-format +msgid "%1 is typing..." +msgstr "%1 está escribindo..." + +#: chat/chatwindow.cpp:2181 +#, kde-format +msgid "%1 and %2 are typing..." +msgstr "%1 e %2 están escribindo..." + +#: chat/chatwindow.cpp:2185 +#, fuzzy, kde-format +msgid "%1, %2 and %3 others are typing..." +msgstr "%1, %2 e %3 están escribindo..." + +#: chat/chatwindow.cpp:2672 +#, kde-format +msgctxt "Tool tip for chat tabs" +msgid "" +"

    Chat Info

    Contacts:
    • %1
    Chat started on:
    %2
    Connected with " +"account:
    %3
    " +msgstr "" +"

    Información da conversa

    Contactos:
    • %1
    A conversa comezou en:
    " +"%2
    Conectado coa conta:
    %3
    " + +#. i18n: file: chat/chatwindow.ui:212 +#. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) +#: chat/chatwindow.cpp:2808 rc.cpp:11 +msgid "Handwriting mode" +msgstr "Modo de escritura a man" + +#: chat/chatwindow.cpp:2817 +msgctxt "Label text" +msgid "" +"Handwriting is disabled: some of the contacts do not support receiving " +"handwritten messages." +msgstr "" + +#: chat/chatwindow.cpp:2823 +msgctxt "Label text" +msgid "" +"Handwriting is disabled: this contact does not support receiving handwritten " +"messages." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:276 +#. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) +#: chat/chatwindow.cpp:2831 rc.cpp:29 +msgid "Winks" +msgstr "Chisco" + +#: chat/chatwindow.cpp:2840 +msgctxt "Label text" +msgid "" +"Winks are disabled: some of the contacts do not support receiving winks." +msgstr "" + +#: chat/chatwindow.cpp:2846 +#, fuzzy +msgctxt "Label text" +msgid "Winks are disabled: this contact does not support receiving winks." +msgstr "Chiscos desactivados: KMess non pode enviar chiscos a este contacto." + +#: chat/contactframe.cpp:354 +msgid "&Start Private Chat" +msgstr "&Comezar conversa privada" + +#: chat/contactframe.cpp:355 kmessview.cpp:706 +msgid "&Send Email" +msgstr "&Enviar un correo electrónico" + +#: chat/contactframe.cpp:356 kmessview.cpp:707 +msgid "&View Profile" +msgstr "&Ver o perfil" + +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 +msgid "&Properties" +msgstr "&Propriedades" + +#: chat/contactframe.cpp:360 kmessview.cpp:711 +msgid "&Add Contact" +msgstr "Eng&adir contacto..." + +#: chat/contactframe.cpp:361 kmessview.cpp:712 +msgid "A&llow Contact" +msgstr "&Permitir contacto" + +#: chat/contactframe.cpp:362 kmessview.cpp:715 +msgid "&Delete Contact" +msgstr "&Eliminar contacto" + +#: chat/contactframe.cpp:364 kmessview.cpp:713 +msgid "&Block Contact" +msgstr "&Bloquear contacto" + +#: chat/contactframe.cpp:365 kmessview.cpp:714 +msgid "&Unblock Contact" +msgstr "&Desbloquear contacto" + +#: chat/contactframe.cpp:367 kmessview.cpp:718 +msgid "&Friendly Name" +msgstr "Nome &amigábel" + +#: chat/contactframe.cpp:368 kmessview.cpp:719 +msgid "&Personal Message" +msgstr "&Mensaxe persoal" + +#: chat/contactframe.cpp:369 kmessview.cpp:720 +msgid "&Email Address" +msgstr "&Enderezo de correo electrónico:" + +#: chat/contactframe.cpp:370 kmessview.cpp:721 +msgid "Song &Name" +msgstr "Nome da &canción" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:24 +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: chat/contactframe.cpp:372 rc.cpp:138 +msgid "&Information" +msgstr "&Información" + +#: chat/contactframe.cpp:373 +msgid "Display Pictures" +msgstr "Amosar imaxes" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:387 +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: chat/contactframe.cpp:374 rc.cpp:174 +msgid "&Notes" +msgstr "&Notas" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:397 +#. i18n: ectx: attribute (title), widget (QWidget, tab_4) +#: chat/contactframe.cpp:375 rc.cpp:177 +msgid "&Emoticons" +msgstr "&emoticonas" + +#: chat/contactframe.cpp:404 kmessview.cpp:756 +msgid "&Copy" +msgstr "&Copiar" + +#: chat/contactframe.cpp:812 +msgid "Blocked" +msgstr "Bloqueado" + +#: chat/contactframe.cpp:824 +#, kde-format +msgctxt "" +"Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " +"like 'Online'" +msgid "The contact is %1" +msgstr "O contacto é %1 " + +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 +msgid "Downloading of display picture failed" +msgstr "" + +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 +msgid "KMess" +msgstr "KMess" + +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 +msgid "" +"An error occurred while trying to change the display picture.\n" +"Make sure that you have selected an existing image file." +msgstr "" + +#: chat/emoticonswidget.cpp:290 +msgctxt "Informative label on the chat's emoticons bar" +msgid "" +"

    You have not added any custom emoticons yet.

    To add " +"new emoticons, click here!

    " +msgstr "" + +#: chat/emoticonswidget.cpp:439 +msgid "Add to Chat" +msgstr "Engadir á conversa" + +#: chat/emoticonswidget.cpp:440 +msgid "Add New" +msgstr "Engadir novo" + +#: chat/emoticonswidget.cpp:441 +msgid "Edit" +msgstr "Editar" + +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 +msgid "Remove" +msgstr "Quitar" + +#: chat/winkswidget.cpp:94 +msgctxt "Informative label on the chat's winks bar" +msgid "" +"

    You do not have any winks yet.

    To add new ones, have " +"your contacts send you some!

    " +msgstr "" + +#: contact/contactbase.cpp:290 +msgid "Windows Mobile" +msgstr "Windows Mobile" + +#: contact/contactbase.cpp:294 +msgid "Web Messenger" +msgstr "Mensaxeiro web" + +#: contact/contactbase.cpp:298 +msgid "Office Communicator" +msgstr "Comunicador de oficina" + +#: contact/contactbase.cpp:302 +msgid "Messenger Bot" +msgstr "Robot mensaxeiro" + +#: contact/contactbase.cpp:306 +msgid "Windows Media Center" +msgstr "Windows Media Center" + +#: contact/contactbase.cpp:313 contact/contactbase.cpp:318 +#, kde-format +msgid "MSN Messenger %1 compatible" +msgstr "MSN Messenger %1 compatíbel" + +#: contact/contactbase.cpp:335 +#, kde-format +msgid "Windows Live Messenger %1" +msgstr "Windows Live Messenger %1" + +#: contact/contactbase.cpp:340 +msgid "Windows Live Messenger" +msgstr "Windows Live Messenger" + +#: contact/contactbase.cpp:347 +#, kde-format +msgid "Windows Live Messenger %1 compatible" +msgstr "Windows Live Messenger %1 compatíbel" + +#: contact/contactbase.cpp:354 +msgid "Windows Live Messenger compatible" +msgstr "Windows Live Messenger compátibel" + +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 +msgid "Online" +msgstr "Conectado" + +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 +msgid "Busy" +msgstr "Ocupado" + +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 +msgid "Away" +msgstr "Ausente" + +#: contact/msnstatus.cpp:196 +msgid "Away with Auto-Reply" +msgstr "Ausente con autoresposta" + +#: contact/msnstatus.cpp:197 +msgid "Idle" +msgstr "Inactivo" + +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 +msgid "Be Right Back" +msgstr "Volvo axiña" + +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 +msgid "On the Phone" +msgstr "Ao teléfono" + +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 +msgid "Out to Lunch" +msgstr "Saín a xantar" + +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 +msgid "Invisible" +msgstr "Invisíbel" + +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 +msgid "Offline" +msgstr "Desconectado" + +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 +msgid "&My Status" +msgstr "&O meu estado" + +#: contact/msnstatus.cpp:252 +msgctxt "Menu action name" +msgid "Disconnect" +msgstr "Desconexión" + +#: dialogs/addcontactdialog.cpp:49 +msgid "Add a Contact" +msgstr "Engadir un contacto" + +#: dialogs/addemoticondialog.cpp:61 dialogs/addemoticondialog.cpp:304 +msgid "Add New Emoticon" +msgstr "Engadir unha nova emoticona" + +#: dialogs/addemoticondialog.cpp:131 +msgid "Edit Emoticon" +msgstr "Editar a emoticona" + +#: dialogs/addemoticondialog.cpp:189 +msgid "Please, select a valid picture file" +msgstr "Elixe unha imaxe válida" + +#: dialogs/addemoticondialog.cpp:199 +msgid "Please, enter a text to associate with this emoticon" +msgstr "Insira o texto para asociar con esta emoticona " + +#: dialogs/addemoticondialog.cpp:203 +msgid "" +"Shortcuts must not:
    • be longer than 7 characters,
    • start with " +"\"/\" (they would interfere with irc-like commands),
    • contain square " +"brackets with text within (like [b] or [color], which can be text formatting " +"options)
    " +msgstr "" + +#: dialogs/addemoticondialog.cpp:303 +#, kde-format +msgid "The emoticon \"%1\" already exists. Do you want to replace it?" +msgstr "" + +#: dialogs/awaymessagedialog.cpp:37 +msgid "Automatic Away Message" +msgstr "Mensaxe automática de ausente" + +#: dialogs/chathistorydialog.cpp:69 +msgctxt "Dialog window title" +msgid "Chat History" +msgstr "Historial da conversa" + +#: dialogs/chathistorydialog.cpp:305 +#, kde-format +msgctxt "Dialog box text" +msgid "" +"There has been an error while opening your logs. This is commonly a " +"permission problem, check if you have read/write access to directory " +""%1". Otherwise, your logs may be corrupted." +msgstr "" + +#: dialogs/chathistorydialog.cpp:310 +msgctxt "Dialog box title" +msgid "Could not open chat history" +msgstr "Non puido abrir o historial da conversa" + +#: dialogs/chathistorydialog.cpp:665 +msgctxt "Combo box default item" +msgid "Loading..." +msgstr "Cargando..." + +#: dialogs/chathistorydialog.cpp:687 +msgctxt "Combo box default item" +msgid "No logged chats" +msgstr "Conversas non rexistradas" + +#: dialogs/contactaddeduserdialog.cpp:55 +msgid "You have been added by someone" +msgstr "Fostes engadido por alguén" + +#: dialogs/contactaddeduserdialog.cpp:60 +#, kde-format +msgid "" +"%1\n" +"has added you to his or her contact list." +msgstr "" + +#: dialogs/contactaddeduserdialog.cpp:65 +#, kde-format +msgid "" +"%1 (%2)\n" +"has added you to his or her contact list." +msgstr "" + +#: dialogs/contactpropertiesdialog.cpp:282 +#, kde-format +msgid "Contact Properties for %1" +msgstr "Propiedades do contacto para %1" + +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 +#: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 +msgid "Connected" +msgstr "Conectado" + +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 +msgid "Not seen yet" +msgstr "Aínda non visto" + +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 +msgid "No messages yet" +msgstr "Aínda non hai mensaxes" + +#: dialogs/contactpropertiesdialog.cpp:423 +#, kde-format +msgctxt "Contact props dialog info" +msgid "Last seen: %1" +msgstr "Visto por última vez: %1" + +#: dialogs/contactpropertiesdialog.cpp:424 +#, kde-format +msgctxt "Contact props dialog info" +msgid "Last message: %1" +msgstr "Última mensaxe: %1" + +#: dialogs/contactpropertiesdialog.cpp:425 +#, kde-format +msgctxt "Contact props dialog info" +msgid "Email address: %1" +msgstr "Enderezo de correo electrónico: %1" + +#: dialogs/contactpropertiesdialog.cpp:426 +#, kde-format +msgctxt "Contact props dialog info" +msgid "Client: %1" +msgstr "Cliente: %1" + +#: dialogs/contactpropertiesdialog.cpp:666 +msgctxt "Dialog box text" +msgid "Are you sure you want to use the display picture of this contact?" +msgstr "" + +#: dialogs/contactpropertiesdialog.cpp:668 +msgid "Copy Contact Picture" +msgstr "Copiar a imaxe de contacto" + +#: dialogs/contactpropertiesdialog.cpp:721 +msgid "The selected filetype is not supported by Phonon." +msgstr "O tipo de ficheiro seleccionado non é compatíbel con Phonon." + +#: dialogs/contactpropertiesdialog.cpp:721 +msgid "Unsupported filetype" +msgstr "Tipo de ficheiro non compatíbel" + +#: dialogs/invitedialog.cpp:41 +msgctxt "Caption of a dialog box" +msgid "Invite Contacts" +msgstr "Invitar contactos" + +#: dialogs/listexportdialog.cpp:83 +#, kde-format +msgid "Export Contact List for %1" +msgstr "Exportar lista de contactos para %1" + +#: dialogs/listexportdialog.cpp:102 +msgid "Nothing to export" +msgstr "Non hai nada para exportar" + +#: dialogs/listexportdialog.cpp:158 +msgid "File exists" +msgstr "O ficheiro existe" + +#: dialogs/listexportdialog.cpp:158 +#, kde-format +msgid "The file %1 already exists, do you want to overwrite?" +msgstr "" + +#: dialogs/listexportdialog.cpp:270 +msgid "Export Finished" +msgstr "Exportación rematada" + +#: dialogs/listexportdialog.cpp:270 +msgid "The export of the contact list is finished" +msgstr "A exportación do lista de contactos rematou" + +#. i18n: file: dialogs/networkwindow.ui:13 +#. i18n: ectx: property (windowTitle), widget (QWidget, NetworkWindow) +#: dialogs/networkwindow.cpp:57 dialogs/networkwindow.cpp:1281 +#: dialogs/networkwindow.cpp:1308 rc.cpp:237 +msgid "Network Window" +msgstr "Xanela de rede" + +#: dialogs/networkwindow.cpp:78 +msgid "S&ave Tab" +msgstr "G&ardar o separador" + +#: dialogs/networkwindow.cpp:79 +msgid "C&lear Tab" +msgstr "L&impar o separador" + +#: dialogs/networkwindow.cpp:80 +msgid "C&lose All Tabs" +msgstr "P&echar todos os separadores" + +#: dialogs/networkwindow.cpp:1088 +msgid "" +"No connections are present.\n" +"Cannot open the Network Window." +msgstr "" + +#: dialogs/networkwindow.cpp:1132 +msgid "" +"Could not save the Network Window log. Make sure you have permission to " +"write in the folder where it is being saved." +msgstr "" + +#: dialogs/networkwindow.cpp:1179 +msgid "Cannot close the main connection tab." +msgstr "Non se pode pechar o separador principal da conexión" + +#: dialogs/networkwindow.cpp:1275 +msgid "" +"Sending commands to the server is a risky operation.
    If you do not know " +"how to exactly do it, you could be lucky and just get disconnected, or " +"you may incur in more serious consequences.
    You have been warned!" +"
    Do you want to continue sending this message?" +msgstr "" + +#: dialogs/networkwindow.cpp:1305 +msgid "" +"The payload you are trying to send does not end with the required newline " +"('\\r\\n')!
    Do you want KMess to add it for you?" +msgstr "" + +#: dialogs/networkwindow.cpp:1381 +msgid "Cannot send commands to this kind of connection!" +msgstr "Non se poden enviar ordes a este tipo de conexión!" + +#: dialogs/transferentry.cpp:132 network/applications/filetransfer.cpp:127 +#: network/applications/filetransfer.cpp:658 +#: network/applications/filetransferp2p.cpp:99 +#: network/applications/filetransferp2p.cpp:766 +#: network/extra/msnftpconnection.cpp:121 +#: network/extra/msnftpconnection.cpp:127 +msgid "Cancelled" +msgstr "Cancelado" + +#: dialogs/transferentry.cpp:180 +msgid "Failed!" +msgstr "Fallou!" + +#: dialogs/transferentry.cpp:224 +msgid "Completed" +msgstr "Completado" + +#: dialogs/transferentry.cpp:270 network/applications/filetransfer.cpp:635 +#: network/applications/filetransferp2p.cpp:741 +#, kde-format +msgid "%1 MB" +msgstr "%1 MB" + +#: dialogs/transferentry.cpp:275 network/applications/filetransfer.cpp:640 +#: network/applications/filetransferp2p.cpp:746 +#, kde-format +msgid "%1 kB" +msgstr "%1 kb" + +#: dialogs/transferentry.cpp:279 network/applications/filetransfer.cpp:644 +#: network/applications/filetransferp2p.cpp:750 +#, kde-format +msgid "%1 bytes" +msgstr "%1 bytes" + +#: dialogs/transferentry.cpp:348 +#, kde-format +msgid "%1 of %2 received." +msgstr "Recibido %1 de %2." + +#: dialogs/transferentry.cpp:352 +#, kde-format +msgid "%1 of %2 sent." +msgstr "Enviado %1 dde %2." + +#: dialogs/transferentry.cpp:386 +msgid "infinite" +msgstr "Infinito" + +#. i18n: file: settings/miscellaneouspage.ui:285 +#. i18n: ectx: attribute (title), widget (QWidget, tab_3) +#: dialogs/transferwindow.cpp:54 rc.cpp:894 +msgid "File Transfers" +msgstr "Transferencias de ficheiros" + +#: dialogs/userpicturesdialog.cpp:43 +msgid "&Use" +msgstr "&Usar" + +#: dialogs/userpicturesdialog.cpp:44 settings/accountsettingsdialog.cpp:60 +msgid "&Delete" +msgstr "&Eliminar" + +#: dialogs/userpicturesdialog.cpp:46 +msgid "Choose or Remove Your Display Picture" +msgstr "Cambia ou elimina a túa imaxe amosada" + +#: dialogs/userpicturesdialog.cpp:128 +msgid "Are you sure you want to delete this display picture?" +msgstr "Queres eliminar está imaxe amosada?" + +#: dialogs/userpicturesdialog.cpp:129 +msgctxt "Dialog box title" +msgid "Delete Display Picture" +msgstr "Elimina a imaxe amosada" + +#: emoticontheme.cpp:627 +#, kde-format +msgid "" +"Could not save the emoticon theme. Make sure you have permission to write to " +"the theme folder '%1'." +msgstr "" + +#: emoticontheme.cpp:823 +msgid "Smile" +msgstr "Sorriso" + +#: emoticontheme.cpp:824 +msgid "Wink" +msgstr "Chisco" + +#: emoticontheme.cpp:825 +msgid "Tongue out" +msgstr "Sacar a lingua" + +#: emoticontheme.cpp:826 +msgid "Big smile" +msgstr "Gran sorriso " + +#: emoticontheme.cpp:827 +msgid "Sad" +msgstr "Triste" + +#: emoticontheme.cpp:828 +msgid "Crying" +msgstr "Chorando" + +#: emoticontheme.cpp:829 +msgid "Angry" +msgstr "Anoxado" + +#: emoticontheme.cpp:830 +msgid "Confused" +msgstr "Confundido" + +#: emoticontheme.cpp:831 +msgid "Embarrassed" +msgstr "Avergoñado" + +#: emoticontheme.cpp:832 +msgid "Disappointed" +msgstr "Decepcionado" + +#: emoticontheme.cpp:833 +msgid "Hot" +msgstr "Quente" + +#: emoticontheme.cpp:834 +msgid "Baring teeth" +msgstr "Amosando os dentes" + +#: emoticontheme.cpp:835 +msgid "Nerd" +msgstr "Xenio" + +#: emoticontheme.cpp:836 +msgid "Sick" +msgstr "Enfermo" + +#: emoticontheme.cpp:837 +msgid "Surprised" +msgstr "Sorprendido" + +#: emoticontheme.cpp:838 +msgid "Party" +msgstr "Festa" + +#: emoticontheme.cpp:839 +msgid "Sleepy" +msgstr "Durmido" + +#: emoticontheme.cpp:840 +msgid "Thinking" +msgstr "Pensando" + +#: emoticontheme.cpp:841 +msgid "Don't tell anyone" +msgstr "Non llo digas a ninguén" + +#: emoticontheme.cpp:842 +msgid "Secret telling" +msgstr "Contando un segredo" + +#: emoticontheme.cpp:843 +msgid "Eye-rolling" +msgstr "Veña oh!" + +#: emoticontheme.cpp:844 +msgid "Sarcastic" +msgstr "Sarcastico" + +#: emoticontheme.cpp:845 +msgid "I don't know" +msgstr "Non sei" + +#: emoticontheme.cpp:846 +msgid "Be right back" +msgstr "Volvo axiña" + +#: emoticontheme.cpp:847 +msgid "Angel" +msgstr "Anxo" + +#: emoticontheme.cpp:848 +msgid "Left hug" +msgstr "Abrazo á esquerda" + +#: emoticontheme.cpp:849 +msgid "Boy" +msgstr "Mozo" + +#: emoticontheme.cpp:850 +msgid "Red heart" +msgstr "Corazón" + +#: emoticontheme.cpp:851 +msgid "Red rose" +msgstr "Rosa" + +#: emoticontheme.cpp:852 +msgid "Thumbs up" +msgstr "Ben" + +#: emoticontheme.cpp:853 +msgid "Dog face" +msgstr "Cara de can" + +#: emoticontheme.cpp:854 +msgid "Sun" +msgstr "Sol" + +#: emoticontheme.cpp:855 +msgid "Devil" +msgstr "Demo" + +#: emoticontheme.cpp:856 +msgid "Right hug" +msgstr "Abrazo á dereita" + +#: emoticontheme.cpp:857 +msgid "Girl" +msgstr "Moza" + +#: emoticontheme.cpp:858 +msgid "Broken heart" +msgstr "Corazón roto" + +#: emoticontheme.cpp:859 +msgid "Wilted rose" +msgstr "Rosa murcha" + +#: emoticontheme.cpp:860 +msgid "Thumbs down" +msgstr "Mal" + +#: emoticontheme.cpp:861 +msgid "Cat face" +msgstr "Cara de gato" + +#: emoticontheme.cpp:862 +msgid "Sleeping half-moon" +msgstr "Media lua" + +#: emoticontheme.cpp:863 +msgid "Red lips" +msgstr "Beizos vermellos" + +#: emoticontheme.cpp:864 +msgid "Clapping" +msgstr "Aplaudindo" + +#: emoticontheme.cpp:865 +msgid "Crossed fingers" +msgstr "Dedo cruzados" + +#: emoticontheme.cpp:866 +msgid "Auto" +msgstr "Automático" + +#: emoticontheme.cpp:867 +msgid "Airplane" +msgstr "Avión" + +#: emoticontheme.cpp:868 +msgid "Turtle" +msgstr "Tartaruga" + +#: emoticontheme.cpp:869 +msgid "Snail" +msgstr "Caracol" + +#: emoticontheme.cpp:870 +msgid "Sheep" +msgstr "Ovella" + +#: emoticontheme.cpp:871 +msgid "Goat" +msgstr "Cabuxa" + +#: emoticontheme.cpp:872 +msgid "Vampire bat" +msgstr "Morcego" + +#: emoticontheme.cpp:873 +msgid "Pizza" +msgstr "Pizza" + +#: emoticontheme.cpp:874 +msgid "Beer mug" +msgstr "Cervexa" + +#: emoticontheme.cpp:875 +msgid "Martini glass" +msgstr "Copa de martini" + +#: emoticontheme.cpp:876 +msgid "Coffee cup" +msgstr "Cunca de café" + +#: emoticontheme.cpp:877 +msgid "Birthday cake" +msgstr "Torta de aniversario" + +#: emoticontheme.cpp:878 +msgid "Plate" +msgstr "Prato" + +#: emoticontheme.cpp:879 +msgid "Bowl" +msgstr "Cunca" + +#: emoticontheme.cpp:880 +msgid "Star" +msgstr "Estrela" + +#: emoticontheme.cpp:881 +msgid "Rainbow" +msgstr "Arco da vella" + +#: emoticontheme.cpp:882 +msgid "Stormy cloud" +msgstr "Nube treboenta" + +#: emoticontheme.cpp:883 +msgid "Lightning" +msgstr "Raios" + +#: emoticontheme.cpp:884 +msgid "Umbrella" +msgstr "Paraugas" + +#: emoticontheme.cpp:885 +msgid "Island with a palm tree" +msgstr "Illa cunha palmeira" + +#: emoticontheme.cpp:886 +msgid "Telephone receiver" +msgstr "Teléfono" + +#: emoticontheme.cpp:887 +msgid "Mobile Phone" +msgstr "Teléfono móbil" + +#: emoticontheme.cpp:888 +msgid "Email" +msgstr "Correo electrónico" + +#: emoticontheme.cpp:889 +msgid "Clock" +msgstr "Reloxo" + +#: emoticontheme.cpp:890 +msgid "Camera" +msgstr "Cámara" + +#: emoticontheme.cpp:891 +msgid "Filmstrip" +msgstr "Teléfono móbil" + +#: emoticontheme.cpp:892 +msgid "Note" +msgstr "Nota" + +#: emoticontheme.cpp:893 +msgid "Handcuffs" +msgstr "Esposas" + +#: emoticontheme.cpp:894 +msgid "Money" +msgstr "Diñeiro" + +#: emoticontheme.cpp:895 +msgid "Light bulb" +msgstr "Lámpada" + +#: emoticontheme.cpp:896 +msgid "Cigarette" +msgstr "Cigarro" + +#: emoticontheme.cpp:897 +msgid "Football ball" +msgstr "Balón de fútbol" + +#: emoticontheme.cpp:898 +msgid "Gift with a bow" +msgstr "Regalo con lazo" + +#: emoticontheme.cpp:899 +msgid "X-Box" +msgstr "X-Box" + +#: emoticontheme.cpp:900 +msgid "Computer" +msgstr "Computador" + +#: emoticontheme.cpp:901 +msgid "KMess icon" +msgstr "Icona de KMess" + +#: initialview.cpp:261 +msgctxt "Status message on login screen" +msgid "Cannot reconnect: account not found" +msgstr "Non se pode volve a conectar: conta non atopada" + +#: initialview.cpp:274 +msgctxt "Status message on login screen" +msgid "Cannot reconnect: this account has no saved password" +msgstr "" +"Non se pode volver a conectar: esta conta non ten un contrasinal gardado" + +#: initialview.cpp:309 initialview.cpp:417 +#, kde-format +msgctxt "Status message on login screen" +msgid "" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" +msgstr "" +"Esperando que se volva a conectar algunha conexión a Internet...
    Volver a conectar agora!" + +#: initialview.cpp:422 +msgctxt "Status message on login screen" +msgid "Internet connection not available" +msgstr "Non está dispoñíbel a conexión a Internet" + +#: initialview.cpp:443 +#, kde-format +msgctxt "Status message on login screen" +msgid "" +"Waiting %1 second before reconnection...
    Reconnect now!" +msgid_plural "" +"Waiting %1 seconds before reconnection...
    Reconnect now!" +msgstr[0] "" +"Esperando %1 segundo antes de volver a conectar...
    Volver " +"a conectar agora!" +msgstr[1] "" +"Esperando %1 segundos antes de volver a conectar...
    Volver " +"a conectar agora!" + +#: initialview.cpp:662 +msgctxt "Button label" +msgid "&Connect" +msgstr "&Conectar" + +#: initialview.cpp:667 +msgctxt "Button label" +msgid "&Cancel" +msgstr "&Cancelar" + +#: initialview.cpp:727 +msgctxt "Status message on login screen" +msgid "Please enter both your email address and password" +msgstr "Insire o teu enderezo de correo electrónico e o contrasinal " + +#: initialview.cpp:746 +msgctxt "Status message on login screen" +msgid "Please enter a valid email address" +msgstr "Insire un enderezo de correo electrónico correcto" + +#: kmess.cpp:217 +#, kde-format +msgid "The contact %1 is already in your contact list." +msgstr "" + +#: kmess.cpp:217 +msgid "Contact Information" +msgstr "Información de contacto" + +#: kmess.cpp:247 +msgid "New Group" +msgstr "Grupo novo" + +#: kmess.cpp:250 +msgctxt "Dialog box title" +msgid "Add a Group" +msgstr "Engadir grupo" + +#: kmess.cpp:251 +msgid "Enter a name for the new group:" +msgstr "Insire un nome para o novo grupo:" + +#: kmess.cpp:580 +#, kde-format +msgid "" +"Are you sure you want to remove the contact %1 from your contact " +"list?" +msgstr "" + +#: kmess.cpp:582 +msgid "Remove Contact" +msgstr "Quitar contacto" + +#: kmess.cpp:584 +msgid "Remove and Block" +msgstr "Quitar e bloquear" + +#: kmess.cpp:630 +#, kde-format +msgctxt "dialog text" +msgid "" +"The group %1 is not empty! First remove all contacts from it, then " +"try again!" +msgstr "" + +#: kmess.cpp:632 kmess.cpp:639 +msgctxt "dialog title" +msgid "Group Removal" +msgstr "Quitar grupo" + +#: kmess.cpp:637 +#, kde-format +msgctxt "dialog text" +msgid "" +"Are you sure you want to remove the group %1 from your contact " +"list?" +msgstr "" + +#: kmess.cpp:640 +msgctxt "dialog button" +msgid "Remove" +msgstr "Quitar" + +#: kmess.cpp:669 +msgid "This is a special group, which cannot be changed." +msgstr "" + +#: kmess.cpp:680 +msgid "Rename Group" +msgstr "Renomear grupo" + +#: kmess.cpp:681 +msgid "Enter a new name for this group:" +msgstr "Inserir un nome novo para este grupo:" + +#: kmess.cpp:758 +#, kde-format +msgctxt "dialog text" +msgid "" +"

    Cannot login automatically with account %1:
    you must first " +"save the account password!

    " +msgstr "" + +#: kmess.cpp:761 +msgctxt "dialog title" +msgid "Autologin Failed" +msgstr "Fallou a autoconexión " + +#: kmess.cpp:1077 +msgid "Connection could be down..." +msgstr "A conexión podería estar caída..." + +#: kmess.cpp:1147 +#, fuzzy +msgctxt "Status bar message" +msgid "Disconnected" +msgstr "Desconexión" + +#: kmess.cpp:1482 +#, kde-format +msgctxt "" +"Paragraph to be added to the text of a message dialog box, but only when KDE " +"gives a list of folders where to search for an application file" +msgid "

    KMess has searched for it in the following folders:
    %1

    " +msgstr "" + +#: kmess.cpp:1494 +#, kde-format +msgctxt "" +"Text for a message dialog box; %1 is an explanation about the list of " +"folders where the file was searched for, which is only shown if any folders " +"are found" +msgid "" +"

    KMess will not be able to play sounds nor show notifications.

    The required file 'kmess.notifyrc' could not be found in any " +"application folder.

    %1

    Please verify your installation.

    " +msgstr "" + +#: kmess.cpp:1500 +msgctxt "Message box title" +msgid "Error With Notifications" +msgstr "Erro con notificacións" + +#: kmess.cpp:1778 +#, kde-format +msgctxt "" +"Main window caption: switched order to easily distinguish it from chats" +msgid "KMess - %1" +msgstr "KMess - %1" + +#. i18n: file: initialview.ui:348 +#. i18n: ectx: property (text), widget (QPushButton, connectButton_) +#: kmessinterface.cpp:165 rc.cpp:326 +msgid "&Connect" +msgstr "&Conectar" + +#: kmessinterface.cpp:166 +msgid "&Disconnect" +msgstr "&Desconexión" + +#: kmessinterface.cpp:167 +msgid "Show My &Profile" +msgstr "Amosar o meu &perfil" + +#: kmessinterface.cpp:172 +msgid "Show &Allowed Contacts" +msgstr "Amosar os cont&actos permitidos" + +#: kmessinterface.cpp:173 +msgid "Show &Offline Contacts" +msgstr "Amosar os contactos &desconectados" + +#: kmessinterface.cpp:174 +msgid "Show &Removed Contacts" +msgstr "Amosa&r os contactos quitados" + +#: kmessinterface.cpp:175 +msgid "Show &History Box" +msgstr "Amosar o &historial" + +#: kmessinterface.cpp:176 +msgid "&Show Search Bar" +msgstr "Amo&sar a barra de busca" + +#: kmessinterface.cpp:177 +msgid "Show &Empty Groups" +msgstr "Amosar os grupos bal&eiros" + +#: kmessinterface.cpp:178 +msgid "&Display Pictures Size" +msgstr "Amosar o tamaño &das imaxes" + +#: kmessinterface.cpp:179 +msgid "&Sort Contacts by" +msgstr "Ordenar contacto&s por" + +#: kmessinterface.cpp:180 +msgid "Show &Transfer Window..." +msgstr "Amosar a xanela de &transferencia..." + +#: kmessinterface.cpp:185 +msgid "New &Contact..." +msgstr "&Contacto novo..." + +#: kmessinterface.cpp:186 +msgid "New &Group..." +msgstr "&Grupo novo..." + +#: kmessinterface.cpp:187 +msgid "&Export Contact List..." +msgstr "&Exportar a lista de contactos..." + +#: kmessinterface.cpp:188 kmessview.cpp:708 +msgid "Show Chat &History..." +msgstr "Amosar o &historial da conversa" + +#: kmessinterface.cpp:189 +msgid "New &Account..." +msgstr "Conta nova..." + +#: kmessinterface.cpp:190 +msgid "Configure Account..." +msgstr "Configurar conta..." + +#: kmessinterface.cpp:191 +msgid "Configure &KMess..." +msgstr "Configurar &KMess..." + +#: kmessinterface.cpp:192 +msgid "Show Selection &Menu" +msgstr "Amosar o &menú de selección" + +#: kmessinterface.cpp:195 +msgid "Do Not Display" +msgstr "Non amosar" + +#: kmessinterface.cpp:196 +msgid "Small" +msgstr "Pequeno" + +#: kmessinterface.cpp:197 +msgid "Medium" +msgstr "Medio" + +#: kmessinterface.cpp:198 +msgid "Large" +msgstr "Grande" + +#: kmessinterface.cpp:202 +msgid "Group" +msgstr "Grupo" + +#: kmessinterface.cpp:203 +msgid "Online/Offline" +msgstr "Conectado/desconectado" + +#: kmessinterface.cpp:204 +msgid "Mixed" +msgstr "Mezclado" + +#: kmessinterface.cpp:294 +msgid "Show &Network Window..." +msgstr "Amosar a xa&nela de rede..." + +#: kmessview.cpp:341 +#, kde-format +msgid "[%1] Logged in with %2" +msgstr "[%1] rexistrado con %2" + +#: kmessview.cpp:391 +#, fuzzy, kde-format +msgid "[%1] %2 goes online" +msgstr "%1 desconectouse." + +#: kmessview.cpp:396 +#, fuzzy, kde-format +msgid "[%1] %2 goes offline" +msgstr "%1 desconectouse." + +#: kmessview.cpp:705 +msgid "Cha&t" +msgstr "" + +#: kmessview.cpp:716 +msgid "&Remove From Group" +msgstr "" + +#: kmessview.cpp:749 +msgid "&Copy to Group" +msgstr "" + +#: kmessview.cpp:750 +msgid "&Move to Group" +msgstr "" + +#: kmessview.cpp:801 +msgid "Move Group &Down" +msgstr "" + +#: kmessview.cpp:802 +msgid "Move Group &Up" +msgstr "" + +#: kmessview.cpp:803 +msgid "Re&move Group" +msgstr "" + +#: kmessview.cpp:804 +msgid "Re&name Group" +msgstr "" + +#: kmessview.cpp:1273 +msgctxt "Contact email label in list tooltip" +msgid "Email address" +msgstr "Enderezo de correo" + +#: kmessview.cpp:1280 +msgctxt "Contact Live Messenger client label in list tooltip" +msgid "Client" +msgstr "Cliente" + +#: kmessview.cpp:1292 +msgid "Yes" +msgstr "Si" + +#: kmessview.cpp:1296 +msgid "No" +msgstr "Non" + +#: kmessview.cpp:1299 +msgctxt "Contact blocked status label in list tooltip" +msgid "Blocked" +msgstr "Bloqueado" + +#: kmessview.cpp:1321 +msgctxt "Contact last presence label in list tooltip" +msgid "Last seen" +msgstr "Visto por última vez" + +#: kmessview.cpp:1338 +msgctxt "Contact last message label in list tooltip" +msgid "Last message" +msgstr "" + +#: kmessview.cpp:1348 +#, kde-format +msgctxt "Group name in group tooltip" +msgid "Group %1" +msgstr "Grupo %1" + +#: kmessview.cpp:1356 +#, kde-format +msgctxt "Contact counters in normal group tooltip, first part" +msgid "%1 contact, " +msgid_plural "%1 contacts, " +msgstr[0] "%1 Contacto," +msgstr[1] "%1 Contactos," + +#: kmessview.cpp:1359 +#, kde-format +msgctxt "Contact counters in normal group tooltip, second part" +msgid "%1 online" +msgid_plural "%1 online" +msgstr[0] "%1 conectado" +msgstr[1] "%1 conectados" + +#: kmessview.cpp:1365 +#, kde-format +msgctxt "Contacts count in special group tooltip" +msgid "%1 contact" +msgid_plural "%1 contacts" +msgstr[0] "%1 contacto" +msgstr[1] "%1 contactos" + +#: kmessview.cpp:1786 +msgctxt "Default friendly name tooltip" +msgid "Click here to change your friendly name" +msgstr "" + +#: kmessview.cpp:1846 +msgctxt "Default personal message shown in the contact list" +msgid "[i]Click to set a personal message[/i]" +msgstr "" + +#: kmessview.cpp:1847 +msgctxt "Default personal message tooltip" +msgid "" +"Click here to insert a message to show to your contacts: they will see it " +"along with your friendly name" +msgstr "" + +#: kmessview.cpp:2027 +msgid "No chat logs could be found for this contact." +msgstr "" + +#: kmessview.cpp:2028 kmessview.cpp:2034 +msgid "No chat history found" +msgstr "Non se atopou o historial da conversa" + +#: kmessview.cpp:2033 +msgid "" +"No chat logs could be found for this contact. Note that new chats are not " +"logged; if you want your chats to be logged, you can enable it in your " +"account settings." +msgstr "" + +#: kmessview.cpp:2235 +#, kde-format +msgid "%1 new email message" +msgid_plural "%1 new email messages" +msgstr[0] "%1 mensaxe nova de correo electrónico" +msgstr[1] "%1 mensaxes novas de correo electrónico" + +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "" + +#: kmessviewdelegate.cpp:290 +#, kde-format +msgctxt "" +"Group name in the contact list with online/total contacts of that group" +msgid "%1 (%2/%3)" +msgstr "" + +#: kmessviewdelegate.cpp:298 +#, fuzzy, kde-format +msgctxt "Group name in the contact list with total contacts of that group" +msgid "%1 (%2)" +msgstr "%1 e %2" + +#: main.cpp:45 +msgid "A Live Messenger client for KDE" +msgstr "Un cliente de Live Messenger para KDE" + +#: main.cpp:47 +#, fuzzy +msgid "" +"(c) 2002-2010, Mike K. Bennett\n" +"(c) 2005-2010, Diederik van der Boor\n" +"(c) 2007-2010, Valerio Pilo\n" +"(c) 2008-2010, Antonio Nastasi\n" +"(c) 2008-2010, Ruben Vandamme\n" +"(c) 2009-2010, Sjors Gielen\n" +"(c) 2009-2010, Adam Goossens\n" +msgstr "" +"(c) 2002-2009, Mike K. Bennett\n" +"(c) 2005-2009, Diederik van der Boor\n" +"(c) 2007-2009, Valerio Pilo\n" +"(c) 2008-2009, Antonio Nastasi\n" +"(c) 2008-2009, Ruben Vandamme\n" +"(c) 2009, Sjors Gielen\n" + +#: main.cpp:63 +msgid "Developer and project founder" +msgstr "Desenvolvedor e fundador do proxecto" + +#: main.cpp:63 +msgid "Mike K. Bennett" +msgstr "Mike K. Bennett" + +#: main.cpp:64 +msgid "Developer" +msgstr "Desenvolvedor" + +#: main.cpp:64 +msgid "Michael Curtis" +msgstr "Michael Curtis" + +#: main.cpp:65 main.cpp:74 +msgid "Jan Tönjes" +msgstr "Jan Tönjes" + +#: main.cpp:65 +#, fuzzy +msgid "Project support" +msgstr "Apoio do proxecto" + +#: main.cpp:66 main.cpp:67 main.cpp:68 main.cpp:69 main.cpp:70 main.cpp:71 +msgid "Current developer" +msgstr "Desenvolvedor actúal" + +#: main.cpp:66 main.cpp:106 +msgid "Diederik van der Boor" +msgstr "Diederik van der Boor" + +#: main.cpp:67 main.cpp:129 +msgid "Valerio Pilo" +msgstr "Valerio Pilo" + +#: main.cpp:68 +msgid "Antonio Nastasi" +msgstr "Antonio Nastasi" + +#: main.cpp:69 +msgid "Ruben Vandamme" +msgstr "Ruben Vandamme" + +#: main.cpp:70 main.cpp:169 +msgid "Sjors Gielen" +msgstr "Sjors Gielen" + +#: main.cpp:71 main.cpp:168 +msgid "Adam Goossens" +msgstr "Adam Goossens" + +#: main.cpp:74 +msgid "" +"German translation, testing, documentation, web master, project management, " +"etc..." +msgstr "" + +#: main.cpp:75 +msgid "Dane Harnett" +msgstr "Dane Harnett" + +#: main.cpp:75 +msgid "Web design" +msgstr "Deseño web" + +#: main.cpp:76 +msgid "David Vignoni" +msgstr "David Vignoni" + +#: main.cpp:76 +msgid "Main and yellow/blue/violet emoticon sets, Italian translation" +msgstr "" + +#: main.cpp:77 +msgid "Cartoon emoticons" +msgstr "Emoticonas animadas" + +#: main.cpp:77 +msgid "Julien Joubin" +msgstr "Julien Joubin" + +#: main.cpp:78 +msgid "Christian Müller" +msgstr "Christian Müller" + +#: main.cpp:78 +msgid "Default sound theme" +msgstr "Tema de son predeterminado" + +#: main.cpp:79 +msgid "KMess icon in Oxygen style" +msgstr "Icona de KMess no estilo Oxygen" + +#: main.cpp:79 +msgid "Michael Anderton" +msgstr "Michael Anderton" + +#: main.cpp:83 main.cpp:112 +msgid "Panagiotis Papadopoulos" +msgstr "Panagiotis Papadopoulos" + +#: main.cpp:83 +msgid "Translations Maintainer" +msgstr "Mantedor de traducións" + +#: main.cpp:85 +msgid "Arabic translation, internationalization of file saving fix." +msgstr "" +"Tradución ao árabe, internacionalización do arranxo ao gardar ficheiros" + +#: main.cpp:85 +msgid "Mohamed Aser" +msgstr "Mohamed Aser" + +#: main.cpp:86 +msgid "More Arabic translation" +msgstr "Máis tradución ao árabe" + +#: main.cpp:86 +msgid "Youssef Chahibi" +msgstr "Youssef Chahibi" + +#: main.cpp:88 +msgid "Brazilian Portuguese translation" +msgstr "Tradución ao portugués do Brasil" + +#: main.cpp:88 +msgid "Mauricio Rother" +msgstr "Mauricio Rother" + +#: main.cpp:89 +msgid "Leonel Freire" +msgstr "Leonel Freire" + +#: main.cpp:89 main.cpp:90 main.cpp:91 +msgid "More Brazilian Portuguese translation" +msgstr "Máis tradución ao portugués do Brasil" + +#: main.cpp:90 +msgid "Sergio Rafael Lemke" +msgstr "Sergio Rafael Lemke" + +#: main.cpp:91 +#, fuzzy +msgid "Morris Arozi Moraes" +msgstr "Maurício Arozi Moraes" + +#: main.cpp:93 +msgid "Catalan translation" +msgstr "Tradución ao catalán" + +#: main.cpp:93 +msgid "Jaume Cornadó" +msgstr "Jaume Cornadó" + +#: main.cpp:94 +msgid "Adrià Arrufat" +msgstr "Adrià Arrufat" + +#: main.cpp:94 +msgid "More Catalan translation" +msgstr "Máis tradución ao catalán" + +#: main.cpp:96 +msgid "Lin Haoxiang" +msgstr "Lin Haoxiang" + +#: main.cpp:96 +msgid "Simplified Chinese translation, file send bug fix, proxy connect code" +msgstr "" +"tradución ao chinés simple, arranxo do erro ao enviar un ficheiro, código de " +"conectar o proxy" + +#: main.cpp:97 main.cpp:164 +msgid "Liu Sizhuang" +msgstr "Liu Sizhuang" + +#: main.cpp:97 main.cpp:98 +msgid "More Simplified Chinese translation" +msgstr "Máis tradución ao chinés simple" + +#: main.cpp:98 +msgid "Cheng Yang" +msgstr "Cheng Yang" + +#: main.cpp:99 +msgid "Traditional Chinese translation" +msgstr "Tradución ao chinés tradicional" + +#: main.cpp:99 +msgid "Yen-chou Chen" +msgstr "Yen-chou Chen" + +#: main.cpp:100 +msgid "More Traditional Chinese translation" +msgstr "Máis tradución ao chinés tradicional" + +#: main.cpp:100 +msgid "Tryneeds-Chinese" +msgstr "Tryneeds chinés" + +#: main.cpp:102 +msgid "Danish translation" +msgstr "Tradución ao Danés" + +#: main.cpp:102 +msgid "Lars Sommer" +msgstr "Lars Sommer" + +#: main.cpp:103 +msgid "More Danish translation" +msgstr "Máis tradución ao danés" + +#: main.cpp:103 +msgid "Pascal d'Hermilly" +msgstr "Pascal d'Hermilly" + +#: main.cpp:105 +msgid "Arend van Beelen Jr." +msgstr "Arend van Beelen Jr." + +#: main.cpp:105 +msgid "Dutch translation" +msgstr "Tradución ao holandés" + +#: main.cpp:106 main.cpp:107 main.cpp:108 main.cpp:109 main.cpp:110 +msgid "More Dutch translation" +msgstr "Máis tradución ao holandes" + +#: main.cpp:107 +msgid "Jaap Woldringh" +msgstr "Jaap Woldringh" + +#: main.cpp:108 +msgid "Elve" +msgstr "Elve" + +#: main.cpp:109 +msgid "Sander Pientka" +msgstr "Sander Pientka" + +#: main.cpp:110 +msgid "Heimen Stoffels" +msgstr "Heimen Stoffels" + +#: main.cpp:112 +msgid "More German translation, Greek translation" +msgstr "Máis tradución ao alemán, tradución ao grego" + +#: main.cpp:113 +msgid "Dimitrios Glentadakis" +msgstr "Dimitrios Glentadakis" + +#: main.cpp:113 +msgid "More Greek translation" +msgstr "Máis tradución ao grego" + +#: main.cpp:115 +msgid "Estonian translation" +msgstr "Tradución ao estoniano" + +#: main.cpp:115 +msgid "Jyri Toomessoo" +msgstr "Jyri Toomessoo" + +#: main.cpp:116 +msgid "Finnish translation" +msgstr "Tradución ao Finés" + +#: main.cpp:116 +msgid "Markus Vuori" +msgstr "Markus Vuori" + +#: main.cpp:117 +msgid "Joonas Niilola" +msgstr "Joonas Niilola" + +#: main.cpp:117 main.cpp:118 main.cpp:119 +msgid "More Finnish translation" +msgstr "Máis tradución ao finés" + +#: main.cpp:118 +msgid "Jussi Timperi" +msgstr "Jussi Timperi" + +#: main.cpp:119 +msgid "Antony Hussi" +msgstr "Antony Hussi" + +#: main.cpp:121 +msgid "Choplair" +msgstr "Choplair" + +#: main.cpp:121 +msgid "French translation" +msgstr "Tradución ao francés" + +#: main.cpp:122 +msgid "More French translation, MSN6 emoticon definitions" +msgstr "Máis tradución ao franceś" + +#: main.cpp:122 +msgid "Vincent Fretin" +msgstr "Vincent Fretin" + +#: main.cpp:123 +msgid "Andrea Blankenstijn" +msgstr "Andrea Blankenstijn" + +#: main.cpp:123 main.cpp:124 main.cpp:125 +msgid "More French translation" +msgstr "Máis tradución ao francés" + +#: main.cpp:124 +msgid "Barthe Guillaume" +msgstr "Barthe Guillaume" + +#: main.cpp:125 +msgid "Scias" +msgstr "Scias" + +#: main.cpp:127 +msgid "Hungarian translation" +msgstr "Tradución ao húngaro" + +#: main.cpp:127 +msgid "Páder Rezső" +msgstr "Páder Rezső" + +#: main.cpp:128 +msgid "More Hungarian translation" +msgstr "Máis tradución ao húngaro" + +#: main.cpp:128 +msgid "Pauli Henrik" +msgstr "Pauli Henrik" + +#: main.cpp:129 main.cpp:130 +msgid "More Italian translation" +msgstr "Máis tradución ao italiano" + +#: main.cpp:130 +msgid "Vincenzo Reale" +msgstr "Vincenzo Reale" + +#: main.cpp:131 +msgid "Andrea Decorte" +msgstr "Andrea Decorte" + +#: main.cpp:131 +#, fuzzy +msgid "" +"More Italian translation, Group selection in 'contact added user' dialog" +msgstr "" +"Máis tradución ao italiano, Selección de grupo no dialogo 'o contacto " +"engadiu ao usuario' " + +#: main.cpp:133 +msgid "Daniel E. Moctezuma" +msgstr "Daniel E. Moctezuma" + +#: main.cpp:133 +msgid "Japanese translation" +msgstr "Tradución ao xaponés" + +#: main.cpp:134 +msgid "Korean translation" +msgstr "Tradución ao coreano" + +#: main.cpp:134 +msgid "Park Dong Cheon" +msgstr "Park Dong Cheon" + +#: main.cpp:135 +msgid "Norsk Bokmål translation" +msgstr "Tradución ao noruegués" + +#: main.cpp:135 +msgid "Øyvind Sæther" +msgstr "Øyvind Sæther" + +#: main.cpp:137 +msgid "Serbian translation" +msgstr "Tradución ao serbio" + +#: main.cpp:137 +msgid "Zoran Milovanović" +msgstr "Zoran Milovanović" + +#: main.cpp:139 +msgid "Rastislav Krupanský" +msgstr "Rastislav Krupanský" + +#: main.cpp:139 +msgid "Slovak translation" +msgstr "Tradución ao eslovaco" + +#: main.cpp:140 +msgid "Matjaž Kaše" +msgstr "Matjaž Kaše" + +#: main.cpp:140 +msgid "Slovenian translation" +msgstr "Tradución ao esloveno" + +#: main.cpp:142 +msgid "Johanna Gersch" +msgstr "Johanna Gersch" + +#: main.cpp:142 +msgid "Spanish translation" +msgstr "Tradución ao castelán" + +#: main.cpp:143 +msgid "J.C.A. Javi" +msgstr "J.C.A. Javi" + +#: main.cpp:143 main.cpp:144 main.cpp:145 main.cpp:146 main.cpp:147 +#: main.cpp:148 main.cpp:149 main.cpp:150 +msgid "More Spanish translation" +msgstr "Máis tradución ao castelán" + +#: main.cpp:144 +msgid "Alejandro Araiza Alvarado" +msgstr "Alejandro Araiza Alvarado" + +#: main.cpp:145 +msgid "Jaume Corbí" +msgstr "Jaume Corbí" + +#: main.cpp:146 +msgid "Christian Kaiser" +msgstr "Christian Kaiser" + +#: main.cpp:147 +msgid "Juan Pablo González Tognarelli" +msgstr "Juan Pablo González Tognarelli" + +#: main.cpp:148 +msgid "Alexis Daniel Medina Medina" +msgstr "Alexis Daniel Medina Medina" + +#: main.cpp:149 +msgid "Manuel Ramírez" +msgstr "Manuel Ramírez" + +#: main.cpp:150 +msgid "Mauricio Muñoz Lucero" +msgstr "Mauricio Muñoz Lucero" + +#: main.cpp:152 +msgid "Christian Lundgren" +msgstr "Christian Lundgren" + +#: main.cpp:152 +msgid "Swedish translation" +msgstr "Tradución ao sueco" + +#: main.cpp:153 +msgid "Mattias Newzella" +msgstr "Mattias Newzella" + +#: main.cpp:153 +msgid "More Swedish translation" +msgstr "Máis tradución ao sueco" + +#: main.cpp:155 +msgid "Rachan Hongpairote" +msgstr "Rachan Hongpairote" + +#: main.cpp:155 +msgid "Thai translation" +msgstr "Tradución ao tailandés" + +#: main.cpp:156 +msgid "Gorkem Cetin" +msgstr "Gorkem Cetin" + +#: main.cpp:156 +msgid "Turkish translation" +msgstr "Tradución ao turco" + +#: main.cpp:157 +msgid "Barbaros Ulutas" +msgstr "Barbaros Ulutas" + +#: main.cpp:157 main.cpp:158 +msgid "More Turkish translation" +msgstr "Máis tradución ao turco" + +#: main.cpp:158 +msgid "Uğur Çetin" +msgstr "Uğur Çetin" + +#: main.cpp:161 +msgid "MSNP12 support, various patches" +msgstr "Compatibilidade MSNP12, varios parches" + +#: main.cpp:161 +msgid "Richard Conway" +msgstr "Richard Conway" + +#: main.cpp:162 +msgid "Guido Solinas" +msgstr "Guido Solinas" + +#: main.cpp:162 +msgid "Pictures in contact list code, contact client info, chat font zoom" +msgstr "" +"Código das imaxes na lista de contactos, información do cliente de contacto, " +"ampliación do tipo de letra conversa" + +#: main.cpp:163 +msgid "File transfer thumbnails" +msgstr "Miniaturas na transferencia de ficheiros" + +#: main.cpp:163 +msgid "Pedro Ferreira" +msgstr "Pedro Ferreira" + +#: main.cpp:164 +msgid "P4-Context field support" +msgstr "" + +#: main.cpp:165 +msgid "Scott Morgan" +msgstr "Scott Morgan" + +#: main.cpp:165 +msgid "Xinerama fixes" +msgstr "" + +#: main.cpp:166 +msgid "Laurence Anderson" +msgstr "Laurence Anderson" + +#: main.cpp:166 +msgid "Original file receive code" +msgstr "" + +#: main.cpp:167 +msgid "KWallet support" +msgstr "Apoio de KWallet" + +#: main.cpp:167 +msgid "Matteo Nardi" +msgstr "Matteo Nardi" + +#: main.cpp:168 +msgid "" +"Notifications blocking option, winks disabling option, last message date " +"feature" +msgstr "" + +#: main.cpp:169 +msgid "IRC-like commands in the chat window" +msgstr "" + +#: main.cpp:170 +msgid "Chat history dialog" +msgstr "Dialogo do historial de conversa" + +#: main.cpp:170 +msgid "Dario Freddi" +msgstr "Dario Freddi" + +#: main.cpp:173 +msgid "Alexandre Peixoto Ferreira" +msgstr "Alexandre Peixoto Ferreira" + +#: main.cpp:173 +msgid "Various internationalization fixes" +msgstr "" + +#: main.cpp:174 +msgid "Choe Hwanjin" +msgstr "Choe Hwanjin" + +#: main.cpp:174 +msgid "Various internationalization fixes." +msgstr "" + +#: main.cpp:176 +msgid "Damien Sandras" +msgstr "Damien Sandras" + +#: main.cpp:176 +msgid "GnomeMeeting developer" +msgstr "" + +#: main.cpp:177 +msgid "Guy with a bag over his head" +msgstr "" + +#: main.cpp:177 +msgid "Tobias Tönjes" +msgstr "Tobias Tönjes" + +#: main.cpp:178 +msgid "Camille Begue" +msgstr "Camille Begue" + +#: main.cpp:178 +msgid "" +"Chat History functionality when disconnected, autologin checkbox on login " +"screen" +msgstr "" + +#: main.cpp:179 +msgid "David López" +msgstr "" + +#: main.cpp:179 +msgid "Nudge button in chat" +msgstr "" + +#: main.cpp:180 +msgid "Pieterjan Camerlynck" +msgstr "" + +#: main.cpp:180 +msgid "Roaming Service support" +msgstr "" + +#: main.cpp:181 +msgid "Anastasios Bourazanis" +msgstr "" + +#: main.cpp:181 +msgid "" +"Emoticon preview in settings page,clickable contact properties dialog text" +msgstr "" + +#: main.cpp:182 +msgid "Internationalization fixes, drag'n'drop of images into display pictures" +msgstr "" + +#: main.cpp:182 +#, fuzzy +msgid "Marco Mentasti" +msgstr "Sarcastico" + +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 +msgid "Inspiration and assorted code" +msgstr "" + +#: main.cpp:186 +msgid "KMerlin (kmerlin.olsd.de)" +msgstr "KMerlin (kmerlin.olsd.de)" + +#: main.cpp:187 +msgid "Kopete (kopete.kde.org)" +msgstr "Kopete (kopete.kde.org)" + +#: main.cpp:187 +msgid "Old popup balloons code, initial p2p code, MSN challenge handler" +msgstr "" + +#: main.cpp:188 +msgid "Idle timer code" +msgstr "" + +#: main.cpp:188 +msgid "KScreensaver" +msgstr "KScreensaver" + +#: main.cpp:189 +msgid "BasKet" +msgstr "BasKet" + +#: main.cpp:189 +msgid "Close-to-tray icon screenshot code" +msgstr "" + +#: main.cpp:190 +msgid "Amarok" +msgstr "Amarok" + +#: main.cpp:190 +msgid "" +"Custom crash handler implementation, System tray icon overlay implementation" +msgstr "" + +#: main.cpp:191 +msgid "" +"KNotify not giving focus bug fix and KWin focus stealing prevention " +"workaround" +msgstr "" + +#: main.cpp:191 +msgid "Quassel" +msgstr "Quassel" + +#: main.cpp:194 +msgid "" +"You are welcome to send bugfixes and patches to the KMess help forum!\n" +"If you feel your name is missing here, please contact us too!" +msgstr "" + +#: main.cpp:194 +msgid "Your name here?" +msgstr "Está o seu nome aquí?" + +#: main.cpp:197 rc.cpp:1 +msgctxt "NAME OF TRANSLATORS" +msgid "Your names" +msgstr "Indalecio Freiría Santos" + +#: main.cpp:198 +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your email addresses" +msgstr "ifreiria@gmail.com" + +#: main.cpp:204 +msgid "Do not show the contact list window initially" +msgstr "" + +#: main.cpp:205 +msgid "Autologin with the given email address" +msgstr "" + +#: main.cpp:210 +msgid "Run a debug test (developer build only)" +msgstr "" + +#: main.cpp:212 +msgid "" +"Connect to the specified server instead of the official Live server.\n" +"Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." +msgstr "" + +#: model/contactlist.cpp:1824 +msgid "Individuals" +msgstr "Individuais" + +#: model/contactlist.cpp:1827 +msgid "Allowed" +msgstr "Permitido" + +#: model/contactlist.cpp:1828 +msgid "Removed" +msgstr "Eliminouse" + +#: network/applications/application.cpp:294 +msgid "The contact cancelled the session." +msgstr "O contacto cancelo a sesión." + +#: network/applications/application.cpp:306 +msgid "The contact rejected the invitation." +msgstr "O contacto rexeitou a invitación." + +#: network/applications/application.cpp:378 +msgid "You have cancelled the session." +msgstr "Cancelaches a sesión." + +#: network/applications/application.cpp:390 +msgid "You have rejected the invitation." +msgstr "Rexeitaches a invitación." + +#: network/applications/application.cpp:540 +#, kde-format +msgid "Do you want to accept or cancel?" +msgstr "" + +#: network/applications/application.cpp:581 +#, kde-format +msgid "Click to cancel." +msgstr "" + +#: network/applications/filetransfer.cpp:167 +#: network/applications/filetransferp2p.cpp:233 +#, kde-format +msgid "The contact wants to send you a file: "%1" (%2)." +msgstr "" + +#: network/applications/filetransfer.cpp:260 +#: network/applications/filetransferp2p.cpp:346 +#, kde-format +msgid "" +"The file "%1" already exists.\n" +"Do you want to overwrite it?" +msgstr "" + +#: network/applications/filetransfer.cpp:290 +#: network/applications/filetransferp2p.cpp:376 +#, kde-format +msgid "" +"The transfer of the file "%1" failed. Could not save the file." +msgstr "" + +#: network/applications/filetransfer.cpp:295 +#, kde-format +msgid "" +"The transfer of the file "%1" failed. Could not open the " +"destination file." +msgstr "" + +#: network/applications/filetransfer.cpp:319 +msgid "Transfer accepted." +msgstr "Transferencia aceptada." + +#: network/applications/filetransfer.cpp:399 +#: network/applications/p2papplication.cpp:2373 +#: network/applications/p2papplication.cpp:2394 +#, kde-format +msgid "Connecting to %1, port %2" +msgstr "Conectando con %1, porto %2" + +#: network/applications/filetransfer.cpp:421 +#: network/applications/filetransferp2p.cpp:548 +#, kde-format +msgid "The contact has cancelled the transfer of the file "%1"." +msgstr "" + +#: network/applications/filetransfer.cpp:432 +#: network/applications/filetransferp2p.cpp:559 +#, kde-format +msgid "You have cancelled the transfer of the file "%1"." +msgstr "" + +#: network/applications/filetransfer.cpp:443 +#: network/applications/filetransferp2p.cpp:570 +#, kde-format +msgid "You have rejected the transfer of the file "%1"." +msgstr "Rexeitaches a transferencia do ficheiro "%1"." + +#: network/applications/filetransfer.cpp:490 +msgid "Connection established" +msgstr "conexión establecida" + +#: network/applications/filetransfer.cpp:581 +#: network/applications/filetransferp2p.cpp:674 +#, kde-format +msgid "Successfully sent the file "%1"." +msgstr "" + +#: network/applications/filetransfer.cpp:585 +#: network/applications/filetransferp2p.cpp:678 +#, kde-format +msgid "Successfully received the file "%1"." +msgstr "" + +#: network/applications/filetransfer.cpp:742 +#: network/applications/filetransferp2p.cpp:811 +#, kde-format +msgid "" +"The transfer of the file "%1" failed. The file does not exist." +msgstr "" + +#: network/applications/filetransfer.cpp:747 +#: network/applications/filetransferp2p.cpp:816 +#, kde-format +msgid "" +"The transfer of the file "%1" failed. The file could not be read." +msgstr "" + +#: network/applications/filetransfer.cpp:774 +#: network/applications/filetransferp2p.cpp:850 +#, kde-format +msgid "Sending file "%1" (%2)." +msgstr "" + +#: network/applications/filetransfer.cpp:799 +#: network/applications/filetransferp2p.cpp:888 +#, kde-format +msgid "The contact has accepted the transfer of the file "%1"." +msgstr "" + +#: network/applications/filetransfer.cpp:817 +#: network/applications/filetransferp2p.cpp:393 +#: network/applications/p2papplication.cpp:3217 +msgid "Negotiating options to connect" +msgstr "" + +#: network/applications/filetransferp2p.cpp:129 +#: network/applications/filetransferp2p.cpp:143 +#: network/applications/filetransferp2p.cpp:160 +#: network/extra/msnftpconnection.cpp:132 +msgid "The file transfer invitation was cancelled. Bad data was received." +msgstr "" + +#: network/applications/filetransferp2p.cpp:404 +#, kde-format +msgid "You have accepted the transfer of the file "%1"." +msgstr "" + +#: network/applications/filetransferp2p.cpp:614 +msgid "File could not be written" +msgstr "Non se pode escribir no ficheiro" + +#: network/applications/inktransferp2p.cpp:108 +#, kde-format +msgctxt "Error message shown in chat, %1 is the contact's friendly name" +msgid "" +"%1 has tried to send you an handwritten message, but it could not be " +"received." +msgstr "" + +#: network/applications/inktransferp2p.cpp:114 +#, kde-format +msgctxt "Error message shown in chat, %1 is the contact's friendly name" +msgid "The handwritten message to %1 could not be delivered." +msgstr "" + +#: network/applications/mimeapplication.cpp:154 +msgid "The invitation was rejected. It is not supported by the other client." +msgstr "" + +#: network/applications/mimeapplication.cpp:164 +msgid "The invitation was aborted. An internal error occured." +msgstr "" + +#: network/applications/mimeapplication.cpp:170 +msgid "The invitation was aborted. Timeout while waiting for user to accept." +msgstr "" +"Abortouse a invitación. Esgotouse o tempo de espera esperando pola " +"aceptación do usuario." + +#: network/applications/mimeapplication.cpp:175 +msgid "The invitation was aborted. Timeout while waiting for file data." +msgstr "" +"Abortouse a invitación. Esgotouse o tempo de espera esperando polo ficheiro " +"de datos." + +#: network/applications/mimeapplication.cpp:180 +msgid "The invitation was aborted. The switchboard closed the chat connection." +msgstr "" + +#: network/applications/mimeapplication.cpp:186 +msgid "The invitation was aborted." +msgstr "Abortouse a invitación." + +#: network/applications/p2papplication.cpp:215 +msgid "The contact has invited you to an activity not yet supported by KMess." +msgstr "" + +#: network/applications/p2papplication.cpp:520 +#: network/applications/p2papplication.cpp:687 +#: network/applications/p2papplication.cpp:1242 +#: network/applications/p2papplication.cpp:1637 +#: network/applications/p2papplication.cpp:1763 +#: network/applications/p2papplication.cpp:1887 +#: network/applications/p2papplicationbase.cpp:706 +msgid "" +"The invitation was cancelled. The contact sent bad data, or KMess does not " +"support it." +msgstr "" + +#: network/applications/p2papplication.cpp:1085 +msgid "The transfer failed. Data preparation failed." +msgstr "" + +#: network/applications/p2papplication.cpp:1192 +msgid "The invitation was cancelled. Message was not directed to us." +msgstr "" + +#: network/applications/p2papplication.cpp:1744 +#: network/applications/p2papplicationbase.cpp:855 +#: network/applications/p2papplicationbase.cpp:935 +msgid "" +"The transfer failed. The contact sent bad data, or KMess does not support it." +msgstr "" + +#: network/applications/p2papplication.cpp:1810 +#: network/applications/p2papplication.cpp:1828 +#: network/applications/p2papplication.cpp:1860 +msgid "The contact rejected the invitation. An internal error occurred." +msgstr "" + +#: network/applications/p2papplication.cpp:2101 +#: network/extra/msnftpconnection.cpp:389 +#, kde-format +msgid "Awaiting connection at %1, port %2" +msgstr "Esperando pola conexión en %1, porto %2" + +#: network/applications/p2papplication.cpp:2144 +#: network/applications/p2papplication.cpp:3378 +msgid "Reverting to indirect file transfer (this could be slow)." +msgstr "" + +#: network/applications/p2papplication.cpp:3169 +msgid "Waiting for connection" +msgstr "Esperando pola conexión" + +#: network/applications/p2papplication.cpp:3423 +msgid "" +"The invitation was cancelled. A timeout occurred waiting for the contact to " +"accept." +msgstr "" +"Cancelouse a invitación. Esgotouse o tempo de espera esperando pola " +"aceptación do contacto." + +#: network/applications/p2papplication.cpp:3432 +msgid "" +"The invitation was cancelled. A timeout occurred waiting for a connection to " +"succeed or fail." +msgstr "" +"Cancelouse a invitación. Esgotouse o tempo de espera mentres se esperaba " +"unha conexión correcta ou errónea." + +#: network/applications/p2papplication.cpp:3499 +#: network/applications/p2papplication.cpp:3583 +msgid "The invitation was cancelled. A timeout occurred waiting for data." +msgstr "" +"Cancelouse a invitación. Esgotouse o tempo de espera esperando polos datos." + +#: network/applications/p2papplicationbase.cpp:622 +#: network/applications/p2papplicationbase.cpp:1045 +msgid "The contact rejected the invitation. An internal error occured." +msgstr "" + +#: network/applications/p2papplicationbase.cpp:629 +msgid "The transfer failed." +msgstr "" + +#: network/applications/p2papplicationbase.cpp:1030 +msgid "The transfer failed. Timeout while waiting for user to accept." +msgstr "" +"Fallou a transferencia. Esgotouse o tempo de espera esperando pola " +"aceptación do usuario." + +#: network/applications/p2papplicationbase.cpp:1049 +msgid "The transfer failed. An internal error occured." +msgstr "" + +#: network/applications/p2papplicationbase.cpp:1210 +msgid "The transfer failed. Could not open data source." +msgstr "" + +#: network/applications/unknownapplication.cpp:53 +#, kde-format +msgid "The contact is inviting you for '%1', but this is not implemented yet." +msgstr "" + +#: network/applications/unknownapplication.cpp:59 +msgid "webcam" +msgstr "" + +#: network/applications/unknownapplication.cpp:63 +#, fuzzy +msgid "meeting" +msgstr "Reunión" + +#: network/applications/unknownapplication.cpp:67 +msgid "remote desktop" +msgstr "" + +#: network/applications/unknownapplication.cpp:71 +msgid "" +"You are invited to start a voice conversation but support for this was not " +"installed" +msgstr "" + +#: network/extra/msnftpconnection.cpp:120 +#, kde-format +msgid "You have cancelled the transfer of file "%1"." +msgstr "" + +#: network/extra/msnftpconnection.cpp:126 +#, kde-format +msgid "The contact has cancelled the transfer of file "%1"." +msgstr "" + +#: network/extra/msnftpconnection.cpp:133 +msgid "Failed" +msgstr "Fallou" + +#: network/extra/msnftpconnection.cpp:204 +#, kde-format +msgid "Sending file %1" +msgstr "" + +#: network/extra/msnftpconnection.cpp:398 +#, kde-format +msgid "The transfer of %1 failed. Could not open a local port." +msgstr "" + +#: network/extra/msnftpconnection.cpp:399 +msgid "Could not open a local port." +msgstr "" + +#: network/extra/msnftpconnection.cpp:456 +msgid "Initiating file transfer" +msgstr "" + +#: network/extra/msnftpconnection.cpp:469 +#, kde-format +msgid "The transfer of %1 failed. A connection could not be made." +msgstr "" + +#: network/extra/msnftpconnection.cpp:470 +msgid "Unable to make a connection." +msgstr "" + +#: network/extra/msnftpconnection.cpp:574 +#, kde-format +msgid "Receiving file %1" +msgstr "" + +#: network/msnconnection.cpp:378 +msgid "Invalid command syntax" +msgstr "" + +#: network/msnconnection.cpp:382 +msgid "Invalid command parameter" +msgstr "" + +#: network/msnconnection.cpp:385 +msgid "The email address you have tried to add is not a Live Messenger account" +msgstr "" + +#: network/msnconnection.cpp:390 +msgid "Domain name missing" +msgstr "" + +#: network/msnconnection.cpp:394 +msgid "Already logged in" +msgstr "" + +#: network/msnconnection.cpp:397 +msgid "The given account name is invalid" +msgstr "" + +#: network/msnconnection.cpp:401 +msgid "" +"This account name is invalid, or your Passport account has not been " +"confirmed yet" +msgstr "" + +#: network/msnconnection.cpp:404 +msgid "Your contact list is full" +msgstr "" + +#: network/msnconnection.cpp:409 +msgid "Invalid SBP parameter" +msgstr "" + +#: network/msnconnection.cpp:412 +msgid "This contact is already on your list" +msgstr "" + +#: network/msnconnection.cpp:416 +msgid "This contact is not on your list" +msgstr "" + +#: network/msnconnection.cpp:420 +#, fuzzy +msgid "This contact is not online" +msgstr "O contacto é %1 " + +#: network/msnconnection.cpp:425 +msgid "Already in this mode" +msgstr "" + +#: network/msnconnection.cpp:429 +msgctxt "MSN error" +msgid "This contact cannot be added to both allow and block list" +msgstr "" + +#: network/msnconnection.cpp:433 +msgid "" +"The group name is already present in your contact list. Please use a " +"different name" +msgstr "" + +#: network/msnconnection.cpp:437 +msgid "" +"Your contact list has too many groups; you are allowed to only have at most " +"30" +msgstr "" + +#: network/msnconnection.cpp:441 +msgid "This group cannot be changed" +msgstr "" + +#: network/msnconnection.cpp:446 +#, fuzzy +msgid "Contact is not added to this group" +msgstr "Inserir un nome novo para este grupo:" + +#: network/msnconnection.cpp:450 +msgid "This group is not empty" +msgstr "" + +#: network/msnconnection.cpp:454 +msgid "The group name is too long; it cannot be longer than 61 characters" +msgstr "" + +#: network/msnconnection.cpp:459 +msgid "Attempted to change group \"0\"" +msgstr "" + +#: network/msnconnection.cpp:459 +#, kde-format +msgid "There was an internal error in KMess: %1" +msgstr "" + +#: network/msnconnection.cpp:463 +#, fuzzy +msgid "Invalid Group" +msgstr "Renomear grupo" + +#: network/msnconnection.cpp:467 +msgid "Empty domain" +msgstr "" + +#: network/msnconnection.cpp:471 +msgid "Wrong ADL command format" +msgstr "" + +#: network/msnconnection.cpp:474 +msgid "Switchboard server failed" +msgstr "" + +#: network/msnconnection.cpp:477 +msgid "Transfer to switchboard server failed" +msgstr "" + +#: network/msnconnection.cpp:481 +msgid "Direct connection (MSNSLP) error, connection failed" +msgstr "" + +#: network/msnconnection.cpp:485 +msgid "Required field missing" +msgstr "" + +#: network/msnconnection.cpp:489 +#, fuzzy +msgid "Not logged in" +msgstr "Conversas non rexistradas" + +#: network/msnconnection.cpp:493 +#, fuzzy +msgctxt "" +"MSN error, due to e.g. trying the beta service without an allowed account" +msgid "This account was denied access to the Live Messenger service" +msgstr "" +"A conversa foi deshabilitada debido a que xa non estas conectado ao servidor " +"de Live Messenger." + +#: network/msnconnection.cpp:498 +msgid "Command is disabled" +msgstr "" + +#: network/msnconnection.cpp:501 +#, fuzzy +msgid "Your account is banned" +msgstr "Información da túa conta" + +#: network/msnconnection.cpp:505 +msgid "Challenge response failed" +msgstr "" + +#: network/msnconnection.cpp:510 +msgid "Bad command data" +msgstr "" + +#: network/msnconnection.cpp:514 +msgid "You are opening chat sessions too fast" +msgstr "" + +#: network/msnconnection.cpp:518 +#, fuzzy +msgid "You have too many open chat sessions" +msgstr "Cancelaches a sesión." + +#: network/msnconnection.cpp:525 +msgid "Unexpected command sequence" +msgstr "" + +#: network/msnconnection.cpp:529 +#, fuzzy +msgid "Bad friend name" +msgstr "Nome &amigábel" + +#: network/msnconnection.cpp:535 +msgid "Bad CVR data" +msgstr "" + +#: network/msnconnection.cpp:541 +msgid "The server reports KMess is flooding it with too much data" +msgstr "" + +#: network/msnconnection.cpp:548 +msgid "Authentication ticket was incorrect" +msgstr "" + +#: network/msnconnection.cpp:551 +msgid "You cannot start a chat with someone while you are invisible" +msgstr "" + +#: network/msnconnection.cpp:555 +msgid "Not accepting new contacts" +msgstr "" + +#: network/msnconnection.cpp:559 +msgid "" +"You have a Kids Passport account, you need parental consent to chat online" +msgstr "" + +#: network/msnconnection.cpp:562 +msgid "Your Passport account needs to be verified first" +msgstr "" + +#: network/msnconnection.cpp:566 +msgid "Bad USR ticket" +msgstr "" + +#: network/msnconnection.cpp:576 +msgid "Error accessing contact list, try again later" +msgstr "" + +#: network/msnconnection.cpp:585 +msgid "" +"The Live Messenger service is temporarily unavailable. There was an internal " +"server error" +msgstr "" + +#: network/msnconnection.cpp:596 +#, fuzzy +msgid "" +"The Live Messenger service is temporarily unavailable. The server is too busy" +msgstr "O servizo web Live Messenger está experimentando problemas." + +#: network/msnconnection.cpp:600 +msgid "Peer notification server down" +msgstr "" + +#: network/msnconnection.cpp:604 +msgid "The server is going down" +msgstr "" + +#: network/msnconnection.cpp:608 +msgid "The server is going down soon" +msgstr "" + +#: network/msnconnection.cpp:613 +#, fuzzy +msgctxt "Error received from the MSN servers" +msgid "Unknown error" +msgstr "Nome descoñecido" + +#: network/msnconnection.cpp:617 +msgid "Session is overloaded" +msgstr "" + +#: network/msnconnection.cpp:624 +#, fuzzy +msgid "The server is not available" +msgstr "Non está dispoñíbel a conexión a Internet" + +#: network/msnconnection.cpp:628 +#, fuzzy +msgid "Authentication failed" +msgstr "A autenticar" + +#: network/msnconnection.cpp:635 +#, kde-format +msgid "" +"Unknown error code received from the server: %1
    Technical details: %2" +msgstr "" + +#: network/msnconnection.cpp:657 +#, kde-format +msgctxt "Error dialog box title with error number" +msgid "MSN Error %1" +msgstr "" + +#: network/msnconnection.cpp:962 +msgid "Trying the HTTP fallback..." +msgstr "" + +#: network/msnnotificationconnection.cpp:1464 +#, fuzzy +msgid "Authenticating..." +msgstr "A autenticar" + +#: network/msnnotificationconnection.cpp:1488 +#, fuzzy +msgid "Authenticated" +msgstr "A autenticar" + +#: network/msnnotificationconnection.cpp:1947 +#, fuzzy +msgid "Connecting..." +msgstr "A conectar..." + +#: network/msnnotificationconnection.cpp:2092 +#, kde-format +msgid "Unknown command received from the server: %1" +msgstr "" + +#: network/msnnotificationconnection.cpp:2252 +#, fuzzy, kde-format +msgctxt "Time left before server maintenance" +msgid "%1 minute" +msgid_plural "%1 minutes" +msgstr[0] "minutos" +msgstr[1] "minutos" + +#: network/msnnotificationconnection.cpp:2255 +#, kde-format +msgid "Server closes for maintenance in %1!" +msgstr "" + +#: network/msnnotificationconnection.cpp:2260 +#, kde-format +msgctxt "Server maintenance dialog box text" +msgid "The Live Messenger server will be going down in %1 for maintenance." +msgstr "" + +#: network/msnnotificationconnection.cpp:2461 +#, kde-format +msgid "KMess could not process Offline-IM messages.
    Details: %1" +msgstr "" + +#: network/msnnotificationconnection.cpp:2462 +msgid "SOAP client is no longer valid." +msgstr "" + +#: network/msnnotificationconnection.cpp:2740 +msgid "Authentication time limit exceeded" +msgstr "" + +#: network/msnnotificationconnection.cpp:2922 +#, fuzzy +msgid "Waiting for contact list..." +msgstr "Recuperando a lista de contactos..." + +#: network/msnnotificationconnection.cpp:2968 +#, kde-format +msgctxt "Connection warning: dialog box with message" +msgid "

    Warning: %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:2969 +msgctxt "Error dialog box title" +msgid "MSN Warning" +msgstr "" + +#: network/msnnotificationconnection.cpp:3041 +#, kde-format +msgid "
    Internal error reason: %1" +msgstr "" + +#: network/msnnotificationconnection.cpp:3102 +msgctxt "Connection error: dialog box" +msgid "" +"

    Authentication has failed, please verify your account email and password." +"

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3104 +msgctxt "Error dialog box title" +msgid "MSN Error" +msgstr "" + +#: network/msnnotificationconnection.cpp:3115 +#, fuzzy, kde-format +msgctxt "Connection error: passive notification message" +msgid "

    The account %1 has been connected from another location.

    " +msgstr "Conectado dende outro lugar." + +#: network/msnnotificationconnection.cpp:3118 +#, kde-format +msgctxt "Connection error: detailed message" +msgid "" +"

    You have been disconnected: you have connected with the account %1 " +"from another Messenger client, or from another location.

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3130 +msgctxt "Connection error: passive notification message" +msgid "" +"

    Unable to connect to the Live Messenger service.
    Maybe you need to " +"authenticate before you can access the network?

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3133 +#, kde-format +msgctxt "Connection error: detailed message" +msgid "" +"

    KMess could not connect to the Live Messenger servers.
    There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.
    It is also possible that an authentication " +"to a web page or proxy may be required to access the network.

    Click here to visit the Messenger service status page.

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3146 +msgid "" +"

    Unable to resolve the authentication on the client
    Maybe you do not " +"have installed qca2 and/or qca2-plugin-ossl?

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3148 +msgid "" +"

    KMess could not connect to the Live Messenger servers.
    You probably " +"need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " +"possible that the MSN network is unavailable at the moment.

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3163 +#, fuzzy +msgctxt "Connection error: passive notification message" +msgid "

    Unable to connect to the Live Messenger service.

    " +msgstr "KMess podería non conectarse aos servidores Live." + +#: network/msnnotificationconnection.cpp:3165 +#, kde-format +msgctxt "Connection error: detailed message" +msgid "" +"

    KMess could not connect to the Live Messenger servers.
    There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.

    Click here to visit the " +"Messenger service status page.

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3176 +#, kde-format +msgctxt "" +"Connection error (Server-reported user error): passive notification message" +msgid "

    Error: %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3178 +#, kde-format +msgctxt "Connection error (Server-reported user error): detailed message" +msgid "

    The Live Messenger server has reported an error:

    %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3189 +#, kde-format +msgctxt "" +"Connection error (Server-reported server error): passive notification message" +msgid "

    Messenger Service Error: %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3191 +#, kde-format +msgctxt "Connection error (Server-reported server error): detailed message" +msgid "

    The Live Messenger server has reported an error:

    %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3199 +#, kde-format +msgctxt "" +"Connection error (Server-reported client error): passive notification message" +msgid "

    KMess Error: %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3201 +#, kde-format +msgctxt "Connection error (Server-reported client error): detailed message" +msgid "

    KMess has encountered an internal error:

    %1

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3212 +#, fuzzy +msgctxt "Connection error: passive notification message" +msgid "

    Network connection lost.

    " +msgstr "Perdeuse a conexión coa rede." + +#: network/msnnotificationconnection.cpp:3214 +msgctxt "Connection error: detailed message" +msgid "

    Connection to the Live Messenger server has been lost.

    " +msgstr "" + +#: network/msnnotificationconnection.cpp:3270 +#, kde-format +msgctxt "Developer details placed on the network error dialog box" +msgid "" +"

    Developer info:
    Error number: %1
    Error string: %2

    " +msgstr "" + +#: network/msnsocketbase.cpp:135 +msgctxt "Dialog box message" +msgid "Enter your username and password to access the network proxy." +msgstr "" +"Insira o seu nome de usuario e o contrasinal para acceder ao proxy da rede." + +#: network/msnsockethttp.cpp:691 +#, kde-format +msgctxt "Error message shown with HTTP connection" +msgid "%1 (Internal error code: %2)" +msgstr "" + +#: network/msnsockethttp.cpp:701 +#, kde-format +msgctxt "Error message shown with HTTP connection" +msgid "" +"%1 (Internal error code: %2)
    Response: %3 %4
    Redirection " +"target: %5" +msgstr "" + +#: network/msnsockettcp.cpp:366 +#, fuzzy +msgid "Connection time limit exceeded" +msgstr "conexión establecida" + +#: network/msnsockettcp.cpp:380 +#, kde-format +msgid "1 ping lost" +msgid_plural "%1 pings lost" +msgstr[0] "" +msgstr[1] "" + +#: network/msnsockettcp.cpp:395 +msgid "The connection to the server was lost" +msgstr "" + +#: network/soap/addressbookservice.cpp:793 +#, kde-format +msgctxt "Warning message" +msgid "The specified email address, \"%1\", is not a valid email address!" +msgstr "" + +#: network/soap/addressbookservice.cpp:803 +#, kde-format +msgctxt "Error message" +msgid "" +"The specified email address, \"%1\", does not belong to a Live Messenger " +"account!" +msgstr "" + +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 +#, kde-format +msgctxt "Error message (system-generated description)" +msgid "Invalid web service request (%1)" +msgstr "" + +#: network/soap/httpsoapconnection.cpp:434 +#, kde-format +msgctxt "Error message (system-generated description)" +msgid "The web service is not accessible (%1)" +msgstr "" + +#: network/soap/httpsoapconnection.cpp:518 +msgctxt "Error message" +msgid "Too many redirections by web service" +msgstr "" + +#: network/soap/httpsoapconnection.cpp:562 +#, fuzzy +msgctxt "Warning message" +msgid "The Offline Messages web service is currently not available" +msgstr "" +"O servizo web de mensaxes sen conexión non está dispoñíbel actualmente." + +#: network/soap/httpsoapconnection.cpp:568 +#, fuzzy +msgctxt "Warning message" +msgid "The Live Messenger web service is experiencing problems" +msgstr "O servizo web Live Messenger está experimentando problemas." + +#: network/soap/httpsoapconnection.cpp:582 +#, kde-format +msgctxt "Error message with description (system-generated description)" +msgid "Invalid web service response %1 (%2)" +msgstr "" + +#: network/soap/httpsoapconnection.cpp:621 +msgctxt "Error message" +msgid "No response from web service" +msgstr "" + +#: network/soap/passportloginservice.cpp:208 +#, kde-format +msgctxt "Error message (sytem-generated description)" +msgid "Unexpected response from server (%1)" +msgstr "" + +#: notification/chatnotification.cpp:172 +#, kde-format +msgid "In %1's chat:
    %2" +msgstr "" + +#: notification/chatnotification.cpp:176 +#, kde-format +msgid "%1 says:
    '%2'" +msgstr "%1 dí:
    '%2'" + +#: notification/chatnotification.cpp:180 +#, kde-format +msgid "%1 has sent you an offline message:
    '%2'" +msgstr "" + +#: notification/chatnotification.cpp:185 +#, kde-format +msgid "%1's chat requests attention!" +msgstr "" + +#: notification/chatnotification.cpp:190 +#, fuzzy, kde-format +msgid "%1:
    %2" +msgstr "%1 dí:
    '%2'" + +#: notification/chatnotification.cpp:197 +#, kde-format +msgid "%1 has sent you a handwritten message!" +msgstr "" + +#: notification/chatnotification.cpp:201 +#, kde-format +msgid "%1 has sent you a nudge!" +msgstr "" + +#: notification/chatnotification.cpp:205 +#, kde-format +msgid "%1 has sent you a wink!" +msgstr "" + +#: notification/chatnotification.cpp:211 +#, kde-format +msgid "%1 is sending you a file!" +msgstr "" + +#: notification/chatnotification.cpp:212 +#, kde-format +msgid "%1 has sent you an invitation!" +msgstr "" + +#: notification/chatnotification.cpp:219 +#, kde-format +msgid "%1 has canceled the file transfer!" +msgstr "" + +#: notification/chatnotification.cpp:220 +#, kde-format +msgid "%1's activity has been canceled!" +msgstr "" + +#: notification/chatnotification.cpp:227 +#, kde-format +msgid "%1 has accepted the file transfer!" +msgstr "" + +#: notification/chatnotification.cpp:228 +#, kde-format +msgid "%1 has accepted your invitation!" +msgstr "" + +#: notification/chatnotification.cpp:235 +#, kde-format +msgid "The file transfer with %1 is done!" +msgstr "" + +#: notification/chatnotification.cpp:236 +#, kde-format +msgid "%1's activity has ended!" +msgstr "" + +#: notification/chatnotification.cpp:243 +#, kde-format +msgid "The file transfer with %1 has failed!" +msgstr "" + +#: notification/chatnotification.cpp:244 +#, kde-format +msgid "%1's activity has ended with an error!" +msgstr "" + +#: notification/contactstatusnotification.cpp:91 +#, kde-format +msgid "%1
    is now online" +msgstr "%1
    está conectado agora" + +#: notification/contactstatusnotification.cpp:92 +#, kde-format +msgid "%1
    has gone away" +msgstr "%1
    foise" + +#: notification/contactstatusnotification.cpp:93 +#, kde-format +msgid "%1
    will be right back" +msgstr "" + +#: notification/contactstatusnotification.cpp:94 +#, kde-format +msgid "%1
    is now busy" +msgstr "%1
    está ocupado" + +#: notification/contactstatusnotification.cpp:95 +#, kde-format +msgid "%1
    has become invisible" +msgstr "%1
    fíxose invisíbel" + +#: notification/contactstatusnotification.cpp:96 +#, kde-format +msgid "%1
    has gone idle" +msgstr "%1
    pasou a inactivo" + +#: notification/contactstatusnotification.cpp:97 +#, kde-format +msgid "%1
    has logged out" +msgstr "%1
    desconectouse" + +#: notification/contactstatusnotification.cpp:98 +#, kde-format +msgid "%1
    is on the phone" +msgstr "%1
    está ao teléfono" + +#: notification/contactstatusnotification.cpp:99 +#, kde-format +msgid "%1
    is out for lunch" +msgstr "%1
    saíu a xantar" + +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 mensaxe nova de correo electrónico" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +msgid "A contact messaged you" +msgstr "" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "O contacto é %1 " + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "O contacto é %1 " + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "Icona de KMess" + +#: notification/newemailnotification.cpp:92 +#, kde-format +msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" +msgid "New email:
    '%1'
    by '%2'" +msgstr "Novo correo electrónico:
    '%1'
    para '%2'" + +#: notification/newsystemtraywidget.cpp:94 +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Acoplar na bandexa do sistema" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Conectando con %1, porto %2" + +#: notification/newsystemtraywidget.cpp:209 +#, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Conectado" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "Perdeuse a conexión coa rede." + +#: notification/notificationmanager.cpp:120 +msgctxt "Button text for KDE notification boxes" +msgid "Start Chatting" +msgstr "Comezar a conversar" + +#: notification/notificationmanager.cpp:124 +msgctxt "Button text for KDE notification boxes" +msgid "Leave a Message" +msgstr "Deixar unha mensaxe" + +#: notification/notificationmanager.cpp:128 +msgctxt "Button text for KDE notification boxes" +msgid "View Message" +msgstr "Ver a mensaxe" + +#: notification/notificationmanager.cpp:132 +msgctxt "Button text for KDE notification boxes" +msgid "Details" +msgstr "Detalles" + +#: notification/notificationmanager.cpp:136 +msgctxt "Button text for KDE notification boxes" +msgid "Read Email" +msgstr "Ler correo electrónico" + +#: notification/notificationmanager.cpp:140 +msgctxt "Button text for KDE notification boxes" +msgid "Hide" +msgstr "Ocultar" + +#: notification/systemtraywidget.cpp:85 +msgid "" +"Closing the main window will keep KMess running in the system tray. Use " +"'Quit' from the 'Connect' menu to quit the application." +msgstr "" + +#: notification/systemtraywidget.cpp:248 +#, fuzzy, kde-format +msgctxt "Tray icon tooltip showing the KMess version" +msgid "KMess %1" +msgstr "KMess - %1" + +#: notification/systemtraywidget.cpp:254 +#, kde-format +msgctxt "Tray icon tooltip, HTML version" +msgid "
    %1 (%2)%3" +msgstr "" + +#: notification/systemtraywidget.cpp:258 +#, kde-format +msgctxt "Tray icon email count, HTML version" +msgid "
    %1 emails" +msgstr "" + +#: notification/systemtraywidget.cpp:263 +#, kde-format +msgctxt "Tray icon tooltip, text version" +msgid " - %1 (%2)%3" +msgstr "" + +#: notification/systemtraywidget.cpp:267 +#, kde-format +msgctxt "Tray icon email count, text version" +msgid " - %1 emails" +msgstr "" + +#: settings/accountpage.cpp:83 +msgid "Browse..." +msgstr "Explorar..." + +#: settings/accountpage.cpp:84 +msgid "Browse and Crop Picture..." +msgstr "" + +#: settings/accountpage.cpp:85 +msgid "Set Previous Image..." +msgstr "" + +#. i18n: file: settings/accountpage.ui:133 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: settings/accountpage.cpp:466 rc.cpp:389 +msgid "Display Picture" +msgstr "" + +#: settings/accountsettingsdialog.cpp:62 settings/globalsettingsdialog.cpp:69 +#: settings/globalsettingsdialog.cpp:70 +msgid "Settings" +msgstr "Configuración" + +#: settings/accountsettingsdialog.cpp:79 +msgid "Account" +msgstr "Conta" + +#: settings/accountsettingsdialog.cpp:80 +msgid "My Account" +msgstr "A miña conta" + +#: settings/accountsettingsdialog.cpp:85 settings/accountsettingsdialog.cpp:86 +msgid "Contact List" +msgstr "Lista de contactos" + +#: settings/accountsettingsdialog.cpp:96 settings/accountsettingsdialog.cpp:97 +msgid "Chatting" +msgstr "Conversación" + +#: settings/accountsettingsdialog.cpp:102 +#: settings/accountsettingsdialog.cpp:103 +msgid "Chat Logging" +msgstr "" + +#: settings/accountsettingsdialog.cpp:155 +msgctxt "Button tooltip text" +msgid "" +"Click here to delete this account from the list of registered accounts.\n" +"You cannot delete the currently connected account nor a guest account, which " +"will be deleted when you disconnect." +msgstr "" + +#: settings/accountsettingsdialog.cpp:207 +#, kde-format +msgid "" +"The email address you have entered is not valid, and cannot be used as an " +"account: '%1'" +msgstr "" + +#: settings/accountsettingsdialog.cpp:215 +#, kde-format +msgid "The email address you have entered is already in use: '%1'" +msgstr "" + +#: settings/accountsettingsdialog.cpp:221 +msgid "Please enter a friendly name for this account." +msgstr "" + +#: settings/accountsettingsdialog.cpp:313 +msgid "Are you sure you want to delete this account?" +msgstr "Está seguro de que quere eliminar esta conta?" + +#: settings/accountsmanagerpage.cpp:160 +#, kde-format +msgid "" +"Are you sure you want to delete the account '%1' ?
    All settings of " +"this account will be lost." +msgstr "" + +#: settings/chatstylepage.cpp:371 +msgid "Hi, how are you doing? :)" +msgstr "Ola, que estás facendo?" + +#: settings/chatstylepage.cpp:372 +msgid "Stacy" +msgstr "" + +#: settings/chatstylepage.cpp:373 +msgid "Great!" +msgstr "" + +#: settings/chatstylepage.cpp:375 +msgid "I /just/ got back from my vacation in Italy!" +msgstr "" + +#: settings/emoticonspage.cpp:198 +#, kde-format +msgid "Are you sure you want to delete the emoticon \"%1\" ?" +msgstr "" + +#: settings/emoticonspage.cpp:199 +msgctxt "Dialog box title" +msgid "Delete Emoticon" +msgstr "" + +#: settings/globalsettingsdialog.cpp:47 +msgid "KMess Settings" +msgstr "" + +#: settings/globalsettingsdialog.cpp:61 settings/globalsettingsdialog.cpp:62 +msgid "Accounts" +msgstr "Contas" + +#: settings/globalsettingsdialog.cpp:65 settings/globalsettingsdialog.cpp:67 +msgid "Notifications" +msgstr "Notificacións" + +#: settings/miscellaneouspage.cpp:74 +msgid "No selectable web browsers detected." +msgstr "" + +#: settings/miscellaneouspage.cpp:101 +msgid "No selectable email clients detected." +msgstr "" + +#: settings/miscellaneouspage.cpp:286 +msgid "You have to specify a console command to launch a custom web browser!" +msgstr "" + +#: settings/miscellaneouspage.cpp:291 +#, c-format +msgid "" +"The console command you have specified to launch a custom web browser " +"does not contain the '%u' parameter. Without this, opening web sites will " +"not work.
    Do you want KMess to add it for you?" +msgstr "" + +#: settings/miscellaneouspage.cpp:316 +msgid "You have to specify a console command to launch a custom email client!" +msgstr "" + +#: settings/miscellaneouspage.cpp:321 +#, c-format +msgid "" +"The console command you specified to launch a custom email client does " +"not contain the '%u' parameter. Without this, composing emails will not work." +"
    Do you want KMess to add it for you?" +msgstr "" + +#: settings/miscellaneouspage.cpp:344 +msgid "You have to select a directory for the received files!" +msgstr "" + +#: settings/miscellaneouspage.cpp:406 +msgid "Select Directory" +msgstr "Seleccionar directorio" + +#: utils/inlineeditlabel.cpp:147 +#, kde-format +msgid "The text cannot be longer than %1 characters." +msgstr "" + +#: utils/kmess-send/kmesssendplugin.cpp:116 +msgid "Send with KMess" +msgstr "" + +#: utils/kmessconfig.cpp:419 +msgctxt "Passive notification message" +msgid "

    KMess was unable to access its configuration files!

    " +msgstr "" + +#: utils/likeback/likeback.cpp:242 +msgid "&Send a Comment to the Developers" +msgstr "" + +#: utils/likeback/likeback.cpp:251 +#, fuzzy +msgid "Show &Feedback Icons" +msgstr "Amosa&r os contactos quitados" + +#: utils/likeback/likeback.cpp:323 +#, kde-format +msgctxt "Welcome dialog text, header text for test apps" +msgid "Welcome to this testing version of %1." +msgstr "" + +#: utils/likeback/likeback.cpp:328 +#, kde-format +msgctxt "Welcome dialog text, header text for released apps" +msgid "Welcome to %1." +msgstr "" + +#: utils/likeback/likeback.cpp:336 +msgctxt "" +"Welcome dialog text, explanation for both the like and dislike buttons" +msgid "" +"Each time you have a great or frustrating experience, please click on the " +"appropriate face below the window title-bar, briefly describe what you like " +"or dislike and click on 'Send'." +msgstr "" + +#: utils/likeback/likeback.cpp:343 +msgctxt "Welcome dialog text, explanation for the like button alone" +msgid "" +"Each time you have a great experience, please click on the smiling face " +"below the window title-bar, briefly describe what you like and click on " +"'Send'." +msgstr "" + +#: utils/likeback/likeback.cpp:350 +msgctxt "Welcome dialog text, explanation for the dislike button alone" +msgid "" +"Each time you have a frustrating experience, please click on the frowning " +"face below the window title-bar, briefly describe what you dislike and click " +"on 'Send'." +msgstr "" + +#: utils/likeback/likeback.cpp:360 +msgctxt "Welcome dialog text, explanation for the bug button" +msgid "" +"If you experience an improper behavior in the application, just click on the " +"broken-object icon in the top-right corner of the window, describe the " +"behavior and click on 'Send'." +msgstr "" + +#: utils/likeback/likeback.cpp:372 +msgctxt "Welcome dialog text, usage example" +msgid "I like the new artwork. Very refreshing." +msgstr "" + +#: utils/likeback/likeback.cpp:380 +msgctxt "Welcome dialog text, usage example" +msgid "" +"I dislike the welcome page of this assistant. Too time consuming." +msgstr "" + +#: utils/likeback/likeback.cpp:388 +msgctxt "Welcome dialog text, usage example" +msgid "" +"The application shows an improper behaviour when clicking the Add " +"button. Nothing happens." +msgstr "" + +#: utils/likeback/likeback.cpp:396 +msgctxt "Welcome dialog text, usage example" +msgid "I desire a new feature allowing me to send my work by email." +msgstr "" + +#: utils/likeback/likeback.cpp:409 +msgctxt "Welcome dialog text, us=the developers, it=the application" +msgid "To help us improve it, your comments are important." +msgstr "" + +#: utils/likeback/likeback.cpp:412 +msgctxt "Welcome dialog text, header for the examples" +msgid "Example" +msgid_plural "Examples" +msgstr[0] "" +msgstr[1] "" + +#: utils/likeback/likeback.cpp:418 +msgctxt "Welcome dialog title" +msgid "Help Improve the Application" +msgstr "" + +#: utils/likeback/likebackdialog.cpp:28 +msgid "Send a Comment to the Developers" +msgstr "" + +#: utils/likeback/likebackdialog.cpp:140 +#, kde-format +msgctxt "" +"Feedback dialog text, message with one accepted language for the comments" +msgid "" +"Please, write it in %1, or the developers will not be able to read " +"your comment!
    You may want to use an online translation " +"tool to translate your message.
    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:152 +#, kde-format +msgctxt "" +"Feedback dialog text, message with list of accepted languages for the " +"comments" +msgid "" +"Please, write it in %1 or %2, or the developers will not be able to " +"read your comment!
    You may want to use an online " +"translation tool to translate your message.
    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:168 +msgctxt "" +"Feedback dialog text, message to remind to balance the likes and dislikes" +msgid "" +"To make the comments you send more useful in improving this application, try " +"to send the same amount of positive and negative comments.
    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:177 +msgctxt "Feedback dialog text, text to disallow feature requests" +msgid "" +"Please, do not ask for new features: this kind of request will be ignored." +"
    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:183 +#, kde-format +msgctxt "" +"Feedback dialog text, %1=Application name,%2=message with list of accepted " +"languages for the comment,%3=optional text to remind to balance the likes " +"and dislikes,%4=optional text to disallow feature requests." +msgid "" +"

    You can provide the developers a brief description of your opinions about " +"%1.
    %2 %3%4

    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:225 +#, kde-format +msgid "" +"The email address you have entered is not valid, and cannot be used: '%1'" +msgstr "" + +#: utils/likeback/likebackdialog.cpp:299 +msgctxt "Dialog box text" +msgid "" +"

    Your comment has been sent successfully. It will help us improve the " +"application!

    Thanks for your time.

    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:302 +msgctxt "Dialog box title" +msgid "Comment Sent" +msgstr "" + +#: utils/likeback/likebackdialog.cpp:313 +msgctxt "Dialog box text" +msgid "" +"

    There has been an error while trying to send the comment.

    Please, " +"try again later.

    " +msgstr "" + +#: utils/likeback/likebackdialog.cpp:315 +msgctxt "Dialog box title" +msgid "Comment Sending Error" +msgstr "" + +#: rc.cpp:2 +#, fuzzy +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "ifreiria@gmail.com" + +#. i18n: file: chat/chatwindow.ui:190 +#. i18n: ectx: property (toolTip), widget (QToolButton, textButton_) +#: rc.cpp:5 +msgid "Standard text mode" +msgstr "Modo de texto estándar" + +#. i18n: file: chat/chatwindow.ui:193 +#. i18n: ectx: property (whatsThis), widget (QToolButton, textButton_) +#: rc.cpp:8 +msgid "Click this button to switch to the standard text mode." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:215 +#. i18n: ectx: property (whatsThis), widget (QToolButton, inkButton_) +#: rc.cpp:14 +msgid "" +"Click this button to switch to the handwriting mode, so you can write or " +"paint a handwritten message." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:238 +#. i18n: ectx: property (toolTip), widget (QToolButton, standardEmoticonButton_) +#: rc.cpp:17 +msgid "Standard emoticons" +msgstr "Emoiticonas estándares" + +#. i18n: file: chat/chatwindow.ui:241 +#. i18n: ectx: property (whatsThis), widget (QToolButton, standardEmoticonButton_) +#: rc.cpp:20 +msgid "" +"Click this button to show all default Live Messenger emoticons, so you can " +"easily insert them in your messages." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:257 +#. i18n: ectx: property (toolTip), widget (QToolButton, customEmoticonButton_) +#: rc.cpp:23 +msgid "Custom emoticons" +msgstr "Emoticonas personalizadas" + +#. i18n: file: chat/chatwindow.ui:260 +#. i18n: ectx: property (whatsThis), widget (QToolButton, customEmoticonButton_) +#: rc.cpp:26 +msgid "" +"Click this button to show all custom emoticons, so you can easily insert " +"them in your messages." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:279 +#. i18n: ectx: property (whatsThis), widget (QToolButton, winksButton_) +#: rc.cpp:32 +msgid "Click this button to view the available winks." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:332 +#. i18n: ectx: property (toolTip), widget (QSlider, inkPenSize_) +#: rc.cpp:35 +msgid "Pen size" +msgstr "" + +#. i18n: file: chat/chatwindow.ui:354 +#. i18n: ectx: property (toolTip), widget (QToolButton, inkColorButton_) +#: rc.cpp:38 +msgid "Pen color" +msgstr "" + +#. i18n: file: chat/chatwindow.ui:377 +#. i18n: ectx: property (toolTip), widget (QToolButton, inkClearButton_) +#: rc.cpp:44 +msgid "Clear area" +msgstr "" + +#. i18n: file: chat/chatwindow.ui:409 +#. i18n: ectx: property (toolTip), widget (QToolButton, fontButton_) +#: rc.cpp:47 +#, fuzzy +msgid "Font" +msgstr "Tipo de &letra" + +#. i18n: file: chat/chatwindow.ui:412 +#. i18n: ectx: property (whatsThis), widget (QToolButton, fontButton_) +#: rc.cpp:50 +msgid "Click this button to change the font of your messages." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:425 +#. i18n: ectx: property (toolTip), widget (QToolButton, fontColorButton_) +#: rc.cpp:53 +msgid "Text color" +msgstr "" + +#. i18n: file: chat/chatwindow.ui:428 +#. i18n: ectx: property (whatsThis), widget (QToolButton, fontColorButton_) +#: rc.cpp:56 +msgid "Click this button to change the text color of your messages." +msgstr "" + +#. i18n: file: chat/chatwindow.ui:466 +#. i18n: ectx: property (text), widget (QPushButton, newLineButton_) +#: rc.cpp:59 +msgid "Ne&w Line" +msgstr "No&va liña" + +#. i18n: file: chat/chatwindow.ui:488 +#. i18n: ectx: property (text), widget (QPushButton, sendButton_) +#: rc.cpp:65 +msgid "S&end" +msgstr "&Enviar" + +#. i18n: file: chat/chatwindowui.rc:5 +#. i18n: ectx: Menu (file) +#: rc.cpp:71 +msgctxt "@title:menu" +msgid "&Chat" +msgstr "&Conversar" + +#. i18n: file: chat/chatwindowui.rc:34 +#. i18n: ectx: ToolBar (mainToolBar) +#: rc.cpp:74 +msgctxt "@title:menu" +msgid "Main Toolbar" +msgstr "Barra de ferramentas principal" + +#. i18n: file: chat/contactframe.ui:156 +#. i18n: ectx: property (toolTip), widget (QLabel, contactPixmapLabel_) +#: rc.cpp:77 +msgid "Click here to display the menu for this contact" +msgstr "" + +#. i18n: file: chat/contactswidget.ui:110 +#. i18n: ectx: property (toolTip), widget (QLabel, userPixmapLabel_) +#: rc.cpp:80 +msgid "Click here to open your account settings" +msgstr "" + +#. i18n: file: dialogs/addcontactdialog.ui:33 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:83 +msgid "Initial groups" +msgstr "" + +#. i18n: file: dialogs/addcontactdialog.ui:47 +#. i18n: ectx: property (whatsThis), widget (QLabel, label) +#: rc.cpp:86 +msgid "" +"Enter here the email address of the person you wish to add to your contact " +"list" +msgstr "" + +#. i18n: file: dialogs/addcontactdialog.ui:50 +#. i18n: ectx: property (text), widget (QLabel, label) +#. i18n: file: initialview.ui:160 +#. i18n: ectx: property (text), widget (QLabel, TextLabel2) +#: rc.cpp:89 rc.cpp:284 +msgid "Email address:" +msgstr "Enderezo de correo electrónico:" + +#. i18n: file: dialogs/addemoticondialog.ui:97 +#. i18n: ectx: property (text), widget (QLabel, textLabel1) +#: rc.cpp:92 +msgid "Enter a shortcut for the emoticon:" +msgstr "" + +#. i18n: file: dialogs/addemoticondialog.ui:114 +#. i18n: ectx: property (text), widget (QLabel, textLabel2) +#: rc.cpp:95 +msgid "Select an image file:" +msgstr "Seleccionar un ficheiro de imaxe:" + +#. i18n: file: dialogs/awaymessagedialog.ui:19 +#. i18n: ectx: property (whatsThis), widget (QLabel, label) +#: rc.cpp:101 +msgid "" +"Enter a message to be automatically sent to people who try to message you." +msgstr "" + +#. i18n: file: dialogs/awaymessagedialog.ui:22 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:104 +msgid "&Specify an automatic away message:" +msgstr "" + +#. i18n: file: dialogs/chathistorydialog.ui:33 +#. i18n: ectx: property (clickMessage), widget (KLineEdit, searchEdit_) +#: rc.cpp:107 +msgid "Search through contacts..." +msgstr "" + +#. i18n: file: dialogs/chathistorydialog.ui:73 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:110 +msgid "Chat Log Filter" +msgstr "" + +#. i18n: file: dialogs/chathistorydialog.ui:87 +#. i18n: ectx: property (text), widget (QRadioButton, conversationRadio_) +#: rc.cpp:113 +msgid "Filter by &chat" +msgstr "" + +#. i18n: file: dialogs/chathistorydialog.ui:152 +#. i18n: ectx: property (text), widget (QRadioButton, dateRadio_) +#: rc.cpp:117 +msgid "Filter by &date" +msgstr "" + +#. i18n: file: dialogs/chathistorydialog.ui:167 +#. i18n: ectx: property (text), widget (QCheckBox, fromBox_) +#: rc.cpp:120 +msgid "from" +msgstr "de" + +#. i18n: file: dialogs/chathistorydialog.ui:184 +#. i18n: ectx: property (text), widget (QCheckBox, toBox_) +#: rc.cpp:123 +msgid "to" +msgstr "a" + +#. i18n: file: dialogs/contactaddeduserdialog.ui:52 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:126 +msgid "What would you like to do?" +msgstr "Que lle gustaría facer?" + +#. i18n: file: dialogs/contactaddeduserdialog.ui:58 +#. i18n: ectx: property (text), widget (QRadioButton, addContactOption_) +#: rc.cpp:129 +msgid "&Add this person to the following groups of your contact list:" +msgstr "" + +#. i18n: file: dialogs/contactaddeduserdialog.ui:114 +#. i18n: ectx: property (text), widget (QRadioButton, allowContactOption_) +#: rc.cpp:132 +msgid "&Do not add this person, but allow him or her to see your status" +msgstr "" + +#. i18n: file: dialogs/contactaddeduserdialog.ui:121 +#. i18n: ectx: property (text), widget (QRadioButton, blockContactOption_) +#: rc.cpp:135 +msgid "&Block this person from contacting you and seeing your status" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:48 +#. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) +#: rc.cpp:141 +msgid "Click or Drag&Drop to change the image for this contact" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:72 +#. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) +#: rc.cpp:144 +msgid "Click this button to restore the display picture of this contact" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:75 +#. i18n: ectx: property (text), widget (QPushButton, restoreButton_) +#: rc.cpp:147 +msgid "&Restore" +msgstr "&Restaurar" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:224 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:150 +msgid "&Groups:" +msgstr "&Grupos:" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:262 +#. i18n: ectx: property (text), widget (QCheckBox, alternativeNameCheckBox_) +#: rc.cpp:153 +msgid "Use an &alternative name for this contact" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:272 +#. i18n: ectx: property (text), widget (QCheckBox, disableNotificationsCheckBox_) +#: rc.cpp:156 +msgid "Disable notifications for this contact" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:281 +#. i18n: ectx: property (text), widget (QLabel, soundSelectLabel_) +#: rc.cpp:159 +msgid "&Sound:" +msgstr "&Son:" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:318 +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: rc.cpp:162 +msgid "&Display Pictures" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:367 +#. i18n: ectx: property (toolTip), widget (QPushButton, useButton_) +#: rc.cpp:165 +msgid "Click here to use the selected picture as your display picture" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:370 +#. i18n: ectx: property (text), widget (QPushButton, useButton_) +#: rc.cpp:168 +msgid "Use As Display Picture" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:377 +#. i18n: ectx: property (text), widget (QPushButton, clearCacheButton_) +#: rc.cpp:171 +msgid "&Clear Cache" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:403 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:180 +msgid "" +"You can choose to hide any emoticon received from this contact. Just " +"right-click on a received emoticon and choose \"Hide this Emoticon\". With " +"this page, you can restore the hidden emoticons." +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:477 +#. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) +#: rc.cpp:183 +msgid "Click here to restore the selected emoticon" +msgstr "" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:480 +#. i18n: ectx: property (text), widget (QPushButton, removeEmoticonButton_) +#: rc.cpp:186 +msgid "Resto&re" +msgstr "" + +#. i18n: file: dialogs/invitedialog.ui:19 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:192 +msgid "Available Contacts" +msgstr "Contactos dispoñíbeis:" + +#. i18n: file: dialogs/invitedialog.ui:70 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:195 +msgid "Invite a person not on your contact list:" +msgstr "" + +#. i18n: file: dialogs/invitedialog.ui:82 +#. i18n: ectx: property (toolTip), widget (QLineEdit, otherEdit_) +#: rc.cpp:198 +msgid "Enter the email address of a person to invite" +msgstr "" + +#. i18n: file: dialogs/invitedialog.ui:101 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: rc.cpp:201 +msgid "Invited Contacts" +msgstr "" + +#. i18n: file: dialogs/listexportdialog.ui:18 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:210 +msgid "Items to export:" +msgstr "" + +#. i18n: file: dialogs/listexportdialog.ui:31 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:213 +msgid "Format" +msgstr "Formato" + +#. i18n: file: dialogs/listexportdialog.ui:37 +#. i18n: ectx: property (text), widget (QRadioButton, csvButton_) +#: rc.cpp:216 +msgid "CSV" +msgstr "" + +#. i18n: file: dialogs/listexportdialog.ui:44 +#. i18n: ectx: property (text), widget (QRadioButton, xmlButton_) +#: rc.cpp:219 +msgid "XML" +msgstr "XML" + +#. i18n: file: dialogs/listexportdialog.ui:71 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:222 +msgid "Contacts:" +msgstr "Contactos:" + +#. i18n: file: dialogs/listexportdialog.ui:83 +#. i18n: ectx: property (text), widget (QPushButton, selectAllButton_) +#: rc.cpp:225 +msgid "Select All" +msgstr "Seleccionar todo" + +#. i18n: file: dialogs/listexportdialog.ui:90 +#. i18n: ectx: property (text), widget (QPushButton, deselectAllButton_) +#: rc.cpp:228 +msgid "Deselect All" +msgstr "Deseleccionar todo" + +#. i18n: file: dialogs/listexportdialog.ui:116 +#. i18n: ectx: property (text), widget (QPushButton, exportButton_) +#: rc.cpp:231 +msgid "Export..." +msgstr "Exportar..." + +#. i18n: file: dialogs/listexportdialog.ui:123 +#. i18n: ectx: property (text), widget (QPushButton, closeButton_) +#: rc.cpp:234 +msgid "Close" +msgstr "Pechar" + +#. i18n: file: dialogs/networkwindow.ui:25 +#. i18n: ectx: property (title), widget (QGroupBox, commandSendingGroup_) +#: rc.cpp:240 +msgid "Command to Current Tab" +msgstr "" + +#. i18n: file: dialogs/networkwindow.ui:37 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:243 +msgid "Command:" +msgstr "Orde:" + +#. i18n: file: dialogs/networkwindow.ui:53 +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: rc.cpp:246 +msgid "Type:" +msgstr "Tipo:" + +#. i18n: file: dialogs/networkwindow.ui:60 +#. i18n: ectx: property (text), widget (QRadioButton, sendStandardCmdRadio_) +#: rc.cpp:249 +msgid "Standard" +msgstr "Estándar" + +#. i18n: file: dialogs/networkwindow.ui:67 +#. i18n: ectx: property (text), widget (QRadioButton, sendMimeCmdRadio_) +#: rc.cpp:252 +msgid "MIME" +msgstr "MIME" + +#. i18n: file: dialogs/networkwindow.ui:93 +#. i18n: ectx: property (text), widget (QPushButton, sendCommandButton_) +#: rc.cpp:255 +msgid "Send" +msgstr "Enviar" + +#. i18n: file: dialogs/networkwindow.ui:132 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:258 +msgid "Command payload (can be empty):" +msgstr "" + +#. i18n: file: dialogs/transferentry.ui:196 +#. i18n: ectx: property (text), widget (KUrlLabel, openLabel_) +#: rc.cpp:263 +msgid "Open" +msgstr "Abrir" + +#. i18n: file: dialogs/transferentry.ui:215 +#. i18n: ectx: property (text), widget (KUrlLabel, cancelLabel_) +#: rc.cpp:266 +msgid "Cancel" +msgstr "Cancelar" + +#. i18n: file: dialogs/transferwindow.ui:77 +#. i18n: ectx: property (text), widget (QPushButton, downloadButton_) +#: rc.cpp:269 +msgid "&Download" +msgstr "&Descargar" + +#. i18n: file: dialogs/transferwindow.ui:96 +#. i18n: ectx: property (text), widget (QPushButton, uploadButton_) +#: rc.cpp:272 +msgid "&Upload" +msgstr "&Enviar" + +#. i18n: file: dialogs/transferwindow.ui:122 +#. i18n: ectx: property (text), widget (QPushButton, cleanupButton_) +#: rc.cpp:275 +msgid "C&lean Up" +msgstr "" + +#. i18n: file: dialogs/transferwindow.ui:129 +#. i18n: ectx: property (text), widget (QPushButton, closeButton_) +#: rc.cpp:278 +msgid "&Close" +msgstr "Pe&char" + +#. i18n: file: initialview.ui:97 +#. i18n: ectx: property (toolTip), widget (QLabel, pictureLabel_) +#: rc.cpp:281 +msgid "" +"Click here to display the options for the currently selected account, " +"or scroll using the mouse wheel to switch between the saved accounts" +msgstr "" + +#. i18n: file: initialview.ui:179 +#. i18n: ectx: property (toolTip), widget (KComboBox, handleCombobox_) +#: rc.cpp:287 +msgid "" +"Enter here the email address of your registered Passport or Live account" +msgstr "" + +#. i18n: file: initialview.ui:195 +#. i18n: ectx: property (text), widget (QLabel, TextLabel3) +#: rc.cpp:290 +msgid "Password:" +msgstr "Contrasinal:" + +#. i18n: file: initialview.ui:208 +#. i18n: ectx: property (toolTip), widget (QLineEdit, passwordEdit_) +#: rc.cpp:293 +msgid "Enter here your account's password" +msgstr "Inserir aquí o contrasinal da túa conta" + +#. i18n: file: initialview.ui:224 +#. i18n: ectx: property (text), widget (QLabel, initialStatusLabel_) +#: rc.cpp:296 +msgid "Status at login:" +msgstr "Estado da sesión:" + +#. i18n: file: initialview.ui:243 +#. i18n: ectx: property (toolTip), widget (QComboBox, initialStatus_) +#: rc.cpp:299 +msgid "Choose a status to set when successfully connected." +msgstr "Elixe un estado para configurar cando te conectas correctamente" + +#. i18n: file: initialview.ui:269 +#. i18n: ectx: property (toolTip), widget (QCheckBox, rememberAccountCheckBox_) +#: rc.cpp:302 +msgid "If enabled, KMess will save your account" +msgstr "Se está activado, KMess gardará a súa conta" + +#. i18n: file: initialview.ui:272 +#. i18n: ectx: property (text), widget (QCheckBox, rememberAccountCheckBox_) +#: rc.cpp:305 +msgid "Remem&ber account" +msgstr "Le&mbrar a conta" + +#. i18n: file: initialview.ui:285 +#. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) +#: rc.cpp:311 +msgid "" +"If you choose to remember an account within KMess, you can also save its " +"password" +msgstr "" +"Se elixes a opción lembrar unha conta en KMess, tamén podes gardar o " +"contrasinal" + +#. i18n: file: initialview.ui:288 +#. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) +#: rc.cpp:314 +msgid "R&emember password" +msgstr "L&embrar o contrasinal" + +#. i18n: file: initialview.ui:301 +#. i18n: ectx: property (text), widget (QCheckBox, rememberAutoLoginCheckBox_) +#: rc.cpp:320 +msgid "Log in automatically" +msgstr "Conectar automaticamente" + +#. i18n: file: initialview.ui:345 +#. i18n: ectx: property (toolTip), widget (QPushButton, connectButton_) +#: rc.cpp:323 +msgid "" +"Click this button to start using KMess, or to cancel a connection attempt" +msgstr "" + +#. i18n: file: initialview.ui:444 +#. i18n: ectx: property (text), widget (KUrlLabel, newAccountLabel_) +#: rc.cpp:329 +msgid "New Account" +msgstr "Conta nova" + +#. i18n: file: initialview.ui:447 +#. i18n: ectx: property (url), widget (KUrlLabel, newAccountLabel_) +#: rc.cpp:332 +#, fuzzy +msgid "https://accountservices.passport.net/reg.srf" +msgstr "Ir a accountservices.passport.net" + +#. i18n: file: initialview.ui:450 +#. i18n: ectx: property (tipText), widget (KUrlLabel, newAccountLabel_) +#: rc.cpp:335 +msgid "" +"Click here to register a new Live account, which you can use to " +"connect to MSN.
    You can also use your existing email address" +msgstr "" + +#. i18n: file: initialview.ui:479 +#. i18n: ectx: property (text), widget (KUrlLabel, forgottenPasswordLabel_) +#: rc.cpp:338 +msgid "Password forgotten?" +msgstr "Esqueciches o contrasinal?" + +#. i18n: file: initialview.ui:482 +#. i18n: ectx: property (url), widget (KUrlLabel, forgottenPasswordLabel_) +#: rc.cpp:341 +msgid "https://login.live.com/resetpw.srf" +msgstr "" + +#. i18n: file: initialview.ui:485 +#. i18n: ectx: property (tipText), widget (KUrlLabel, forgottenPasswordLabel_) +#: rc.cpp:344 +msgid "" +"Click here to go to the Live web site, to reset your account's " +"password" +msgstr "" + +#. i18n: file: kmessinterfaceui.rc:5 +#. i18n: ectx: Menu (file) +#: rc.cpp:347 +msgctxt "@title:menu" +msgid "&Connect" +msgstr "&Conectar" + +#. i18n: file: kmessinterfaceui.rc:16 +#. i18n: ectx: Menu (view) +#: rc.cpp:350 +msgctxt "@title:menu" +msgid "&View" +msgstr "&Ver" + +#. i18n: file: kmessinterfaceui.rc:34 +#. i18n: ectx: Menu (settings) +#: rc.cpp:353 +msgctxt "@title:menu" +msgid "&Actions" +msgstr "&Accións" + +#. i18n: file: settings/accountpage.ui:21 +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: rc.cpp:356 +msgid "Account &Info" +msgstr "&Información da conta" + +#. i18n: file: settings/accountpage.ui:35 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_) +#: rc.cpp:359 +msgid "Your Account Information" +msgstr "Información da túa conta" + +#. i18n: file: settings/accountpage.ui:41 +#. i18n: ectx: property (whatsThis), widget (QLabel, friendlyNameLabel_) +#: rc.cpp:362 +msgid "Enter a name other contacts should see when you are connected." +msgstr "" + +#. i18n: file: settings/accountpage.ui:44 +#. i18n: ectx: property (text), widget (QLabel, friendlyNameLabel_) +#: rc.cpp:365 +msgid "&Friendly name:" +msgstr "" + +#. i18n: file: settings/accountpage.ui:60 +#. i18n: ectx: property (whatsThis), widget (QLabel, handleLabel_4) +#: rc.cpp:368 +msgid "" +"Enter the email address of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" + +#. i18n: file: settings/accountpage.ui:63 +#. i18n: ectx: property (text), widget (QLabel, handleLabel_4) +#: rc.cpp:371 +msgid "&Email address:" +msgstr "Enderezo de correo electrónico:" + +#. i18n: file: settings/accountpage.ui:79 +#. i18n: ectx: property (whatsThis), widget (QLabel, passwordLabel_) +#: rc.cpp:374 +msgid "" +"Enter the password of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" + +#. i18n: file: settings/accountpage.ui:82 +#. i18n: ectx: property (text), widget (QLabel, passwordLabel_) +#: rc.cpp:377 +msgid "&Password:" +msgstr "&Contrasinal:" + +#. i18n: file: settings/accountpage.ui:111 +#. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) +#: rc.cpp:380 +msgid "Click here to have your password saved by KMess" +msgstr "" + +#. i18n: file: settings/accountpage.ui:114 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberPasswordCheckBox_) +#: rc.cpp:383 +msgid "" +"If you enable this option, KMess will save your account's password. This way " +"you will not have to enter your password on every start up, in order to log " +"in. Please keep in mind, that other persons that have access to this " +"computer may easily log in to your account, if this option is enabled." +msgstr "" + +#. i18n: file: settings/accountpage.ui:117 +#. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) +#: rc.cpp:386 +msgid "&Remember password" +msgstr "&Lembrar contrasinal" + +#. i18n: file: settings/accountpage.ui:233 +#. i18n: ectx: property (text), widget (KPushButton, browseButton_) +#: rc.cpp:392 +msgid "C&hange..." +msgstr "&Cambiar..." + +#. i18n: file: settings/accountpage.ui:258 +#. i18n: ectx: property (toolTip), widget (QCheckBox, noPictureCheckbox_) +#: rc.cpp:398 +msgid "Enable this option, if you do not want to use a display picture." +msgstr "" + +#. i18n: file: settings/accountpage.ui:261 +#. i18n: ectx: property (text), widget (QCheckBox, noPictureCheckbox_) +#: rc.cpp:401 +msgid "&Do not use" +msgstr "Non &usar" + +#. i18n: file: settings/accountpage.ui:291 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberCheckbox_) +#: rc.cpp:407 +msgid "" +"The option \"Remember account\" was left unchecked while logging in, " +"so your settings will not be saved by default. Enable this option if you " +"want to save your account settings permanently on this system.\n" +"\n" +"It is recommended to enable this option, unless you are using KMess as guest " +"or you are using a public system (e.g. Internet cafe)." +msgstr "" +"A opción \"Lembrar a conta\" non se marcou na conexión, polo que a túa " +"configuración non se gardara de forma predeterminada. Activa esta opción se " +"queres gardar a configuración da túa conta de forma permanente no sistema.\n" +"\n" +"Recomendase habilitar esta opción, a non ser que esteas usando KMess como " +"invitado ou nun sistema público (por exemplo nun cíber café)." + +#. i18n: file: settings/accountpage.ui:294 +#. i18n: ectx: property (text), widget (QCheckBox, rememberCheckbox_) +#: rc.cpp:412 +msgid "Re&member the settings of this account" +msgstr "Le&mbrar a configuración desta conta" + +#. i18n: file: settings/accountpage.ui:304 +#. i18n: ectx: property (toolTip), widget (QCheckBox, autologinCheckBox_) +#: rc.cpp:415 +#, fuzzy +msgid "If enabled, KMess automatically logs in with this account." +msgstr "Se está activado, KMess gardará a súa conta" + +#. i18n: file: settings/accountpage.ui:307 +#. i18n: ectx: property (text), widget (QCheckBox, autologinCheckBox_) +#: rc.cpp:418 +#, fuzzy +msgid "Log in &with this account automatically" +msgstr "Conectar automaticamente" + +#. i18n: file: settings/accountpage.ui:319 +#. i18n: ectx: property (text), widget (QLabel, textLabel1_) +#: rc.cpp:424 +msgid "Login &as" +msgstr "Conectado &como" + +#. i18n: file: settings/accountpage.ui:332 +#. i18n: ectx: property (whatsThis), widget (QComboBox, initialStatus_) +#: rc.cpp:427 +msgid "Here you can select which status KMess should set, after logging in." +msgstr "" + +#. i18n: file: settings/accountpage.ui:375 +#. i18n: ectx: property (whatsThis), widget (QLabel, verifyLabel_) +#: rc.cpp:430 +msgid "" +"You need to connect to the Passport site to confirm that your email address " +"exists." +msgstr "" + +#. i18n: file: settings/accountpage.ui:378 +#. i18n: ectx: property (text), widget (QLabel, verifyLabel_) +#: rc.cpp:433 +msgid "" +"You cannot change your friendly name because your Passport email address is " +"not verified." +msgstr "" + +#. i18n: file: settings/accountpage.ui:418 +#. i18n: ectx: property (text), widget (KUrlLabel, verifyButton_) +#: rc.cpp:436 +msgid "Request verification email" +msgstr "Solicitase a verificación do correo electrónico" + +#. i18n: file: settings/accountpage.ui:427 +#. i18n: ectx: property (tipText), widget (KUrlLabel, verifyButton_) +#: rc.cpp:439 +msgid "Go to accountservices.passport.net" +msgstr "Ir a accountservices.passport.net" + +#. i18n: file: settings/accountpage.ui:446 +#. i18n: ectx: property (whatsThis), widget (QLabel, registerLabel_) +#: rc.cpp:442 +msgid "" +"You need a Passport account to connect to the Live Messenger network. " +"You can register your current email address at register.passport.com or use " +"a Live Mail account to connect." +msgstr "" + +#. i18n: file: settings/accountpage.ui:449 +#. i18n: ectx: property (text), widget (QLabel, registerLabel_) +#: rc.cpp:445 +msgid "" +"To connect to the Live Messenger service, you will need to register an email " +"address as Passport account." +msgstr "" + +#. i18n: file: settings/accountpage.ui:489 +#. i18n: ectx: property (text), widget (KUrlLabel, registerButton_) +#: rc.cpp:448 +msgid "Register new account" +msgstr "Rexistra una conta nova" + +#. i18n: file: settings/accountpage.ui:498 +#. i18n: ectx: property (tipText), widget (KUrlLabel, registerButton_) +#: rc.cpp:451 +msgid "Go to register.passport.com" +msgstr "Ir a register.passport.com" + +#. i18n: file: settings/accountpage.ui:516 +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: rc.cpp:454 +msgid "&Status Options" +msgstr "Opcións de E&stado" + +#. i18n: file: settings/accountpage.ui:522 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, useIdleTimerCheckBox_) +#: rc.cpp:457 +msgid "" +"If enabled, your status will be changed automatically to \"Idle\" when you " +"are not using the computer for a few minutes. If this option is not " +"available, KMess was built without support for this feature." +msgstr "" + +#. i18n: file: settings/accountpage.ui:525 +#. i18n: ectx: property (text), widget (QCheckBox, useIdleTimerCheckBox_) +#: rc.cpp:460 +msgid "Change status to \"&Idle\" when inactive" +msgstr "" + +#. i18n: file: settings/accountpage.ui:556 +#. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel1_) +#. i18n: file: settings/accountpage.ui:575 +#. i18n: ectx: property (whatsThis), widget (QSpinBox, idleTimeSpinBox_) +#. i18n: file: settings/accountpage.ui:582 +#. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel2_) +#: rc.cpp:466 rc.cpp:472 rc.cpp:475 +msgid "" +"Controls the number of minutes before KMess changes the status to \"Idle\"." +msgstr "" + +#. i18n: file: settings/accountpage.ui:559 +#. i18n: ectx: property (text), widget (QLabel, idleLabel1_) +#: rc.cpp:469 +msgid "Become idle after" +msgstr "Pasar a inactivo despois" + +#. i18n: file: settings/accountpage.ui:585 +#. i18n: ectx: property (text), widget (QLabel, idleLabel2_) +#: rc.cpp:478 +msgid "minutes" +msgstr "minutos" + +#. i18n: file: settings/accountpage.ui:618 +#. i18n: ectx: property (toolTip), widget (QLabel, needXScreensaverLabel_) +#: rc.cpp:481 +msgid "" +"This happens because KMess was built without support for the " +"\"XScreenSaver\" Xorg extension, which is used to detect user activity. " +"Refer to your package manager for more details." +msgstr "" + +#. i18n: file: settings/accountpage.ui:621 +#. i18n: ectx: property (text), widget (QLabel, needXScreensaverLabel_) +#: rc.cpp:484 +msgid "Cannot enable auto idle: KMess was built without inactivity detection." +msgstr "" + +#. i18n: file: settings/accountpage.ui:647 +#. i18n: ectx: property (toolTip), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) +#: rc.cpp:487 +msgid "" +"If enabled, you will not receive any notifications when your status is set " +"to \"Busy\"." +msgstr "" + +#. i18n: file: settings/accountpage.ui:650 +#. i18n: ectx: property (text), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) +#: rc.cpp:490 +msgid "&Disable notifications when your status is set to \"Busy\"" +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:26 +#. i18n: ectx: property (text), widget (QLabel, textLabel1) +#: rc.cpp:493 +msgid "Saved accounts:" +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:76 +#. i18n: ectx: property (toolTip), widget (QPushButton, addAccountButton_) +#: rc.cpp:496 +msgid "" +"Click here to create a new KMess account for an email already associated to " +"a Live account" +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:79 +#. i18n: ectx: property (text), widget (QPushButton, addAccountButton_) +#: rc.cpp:499 +msgid "&Add Account..." +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:92 +#. i18n: ectx: property (toolTip), widget (QPushButton, configureAccountButton_) +#: rc.cpp:505 +msgid "Select an account and click here to modify it" +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:95 +#. i18n: ectx: property (text), widget (QPushButton, configureAccountButton_) +#: rc.cpp:508 +msgid "&Edit" +msgstr "&Editar" + +#. i18n: file: settings/accountsmanagerpage.ui:108 +#. i18n: ectx: property (toolTip), widget (QPushButton, removeAccountButton_) +#: rc.cpp:514 +msgid "Select an account and click here to remove it" +msgstr "" + +#. i18n: file: settings/accountsmanagerpage.ui:111 +#. i18n: ectx: property (text), widget (QPushButton, removeAccountButton_) +#: rc.cpp:517 +msgid "&Remove" +msgstr "Elimina&r" + +#. i18n: file: settings/chatloggingpage.ui:17 +#. i18n: ectx: property (toolTip), widget (QCheckBox, logChatsCheckBox_) +#: rc.cpp:523 +msgid "Enable this option to have your chats saved for later viewing" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:23 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, logChatsCheckBox_) +#: rc.cpp:526 +msgid "" +"

    If you enable chat logging, every chat you have will be saved in a " +"certain place (which can be specified below).

    \n" +"

    The chat logs will allow you to find something in your old discussions, " +"like a link, or you may use them to remember what you did say in a certain " +"occasion to someone.

    \n" +"

    They may also pose some privacy issues though, because unauthorized " +"people who use your account may read your chat logs.

    \n" +"

    Be sure to keep this option disabled on publicly accessible computers!" +"

    " +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:26 +#. i18n: ectx: property (text), widget (QCheckBox, logChatsCheckBox_) +#: rc.cpp:532 +msgid "Enable chat logging" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:36 +#. i18n: ectx: property (toolTip), widget (QGroupBox, saveChatsToFileCheckBox_) +#: rc.cpp:535 +msgid "" +"If enabled, KMess additionaly saves your chat logs as HTML or plain text " +"files" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:39 +#. i18n: ectx: property (title), widget (QGroupBox, saveChatsToFileCheckBox_) +#: rc.cpp:538 +msgid "Additionally save chat logs to file" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:51 +#. i18n: ectx: property (toolTip), widget (QLabel, label_2) +#: rc.cpp:541 +msgid "With this option, you can choose how KMess will save your chats" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:54 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:544 +msgid "Save chat logs as:" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:86 +#. i18n: ectx: property (whatsThis), widget (QComboBox, fileFormatComboBox_) +#: rc.cpp:547 +msgid "" +"\n" +"

    The file format you choose here is important.

    \n" +"

    Chat logs saved in the HTML format can be easily read in any web browser, " +"but if they are opened on another computer, display pictures and emoticons " +"cannot not be displayed.

    \n" +"

    Chat logs saved as plain text, on the other side, can be perfectly read " +"everywhere, but they will not contain any text formatting, display pictures, " +"or emoticons.

    \n" +"" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:90 +#. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) +#: rc.cpp:554 +msgid "Web Pages (HTML)" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:95 +#. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) +#: rc.cpp:557 +msgid "Plain Text" +msgstr "Texto plano" + +#. i18n: file: settings/chatloggingpage.ui:134 +#. i18n: ectx: property (toolTip), widget (QLabel, label) +#: rc.cpp:560 +msgid "" +"These options allow you to choose how KMess will organize your chat logs " +"within the directory specified below." +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:137 +#. i18n: ectx: property (whatsThis), widget (QLabel, label) +#: rc.cpp:563 +msgid "" +"Depending on which option you choose here, KMess will create some " +"directories to help you keep your chat logs organized. Use the \"What's This?" +"\" feature on a specific option for more details." +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:140 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:566 +msgid "Separate logged chats by:" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:156 +#. i18n: ectx: property (toolTip), widget (QRadioButton, yearRadioButton_) +#: rc.cpp:569 +msgid "Create a directory to organize chats by year" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:163 +#. i18n: ectx: property (whatsThis), widget (QRadioButton, yearRadioButton_) +#: rc.cpp:572 +msgid "" +"

    This option tells KMess to divide your chat logs by year only.\n" +"You will find directories for each year of logged chatting; those will " +"contain all of that year's chat logs, grouped together.

    \n" +"\n" +"

    A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

    \n" +"

    <chat logs directory here>/2008/date-and-contact-name.html

    " +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:166 +#. i18n: ectx: property (text), widget (QRadioButton, yearRadioButton_) +#: rc.cpp:579 +msgid "Year" +msgstr "Ano" + +#. i18n: file: settings/chatloggingpage.ui:182 +#. i18n: ectx: property (toolTip), widget (QRadioButton, monthRadioButton_) +#: rc.cpp:582 +msgid "Create directories to organize chats by year then by month" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:188 +#. i18n: ectx: property (whatsThis), widget (QRadioButton, monthRadioButton_) +#: rc.cpp:585 +msgid "" +"

    This option tells KMess to divide your chat logs by year, then by " +"month.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, you will find all of that month's chat logs grouped together.

    \n" +"

    A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

    \n" +"

    <chat logs directory here>/2008/11/date-and-contact-name.html

    " +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:191 +#. i18n: ectx: property (text), widget (QRadioButton, monthRadioButton_) +#: rc.cpp:591 +msgid "Year then Month" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:204 +#. i18n: ectx: property (toolTip), widget (QRadioButton, dayRadioButton_) +#: rc.cpp:594 +msgid "Create directories to organize chats by year, by month, then by day" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:211 +#. i18n: ectx: property (whatsThis), widget (QRadioButton, dayRadioButton_) +#: rc.cpp:597 +msgid "" +"

    This option tells KMess to divide your chat logs by year, then by " +"month, then again by day.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, the chats will be further divided in a directory for each day.

    \n" +"\n" +"

    A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

    \n" +"

    <chat logs directory here>/2008/11/29/date-and-contact-name.html" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:214 +#. i18n: ectx: property (text), widget (QRadioButton, dayRadioButton_) +#: rc.cpp:604 +msgid "Year, Month then Day" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:224 +#. i18n: ectx: property (toolTip), widget (QRadioButton, singleDirectoryRadioButton_) +#: rc.cpp:607 +msgid "Place all saved chat logs directly in the directory specified below" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:227 +#. i18n: ectx: property (whatsThis), widget (QRadioButton, singleDirectoryRadioButton_) +#: rc.cpp:610 +msgid "" +"This option tells KMess to save all your chat logs in the same folder, " +"without organizing them at all." +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:230 +#. i18n: ectx: property (text), widget (QRadioButton, singleDirectoryRadioButton_) +#: rc.cpp:613 +msgid "Do not organize files" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:273 +#. i18n: ectx: property (toolTip), widget (QToolButton, chatSavePathButton_) +#: rc.cpp:616 +msgid "Click here to choose a directory" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:302 +#. i18n: ectx: property (toolTip), widget (QLabel, chatSavePathLabel_) +#: rc.cpp:622 +msgid "The directory where all your chat logs will be saved" +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:305 +#. i18n: ectx: property (whatsThis), widget (QLabel, chatSavePathLabel_) +#: rc.cpp:625 +msgid "Choose a directory where you would like to save your chat logs." +msgstr "" + +#. i18n: file: settings/chatloggingpage.ui:308 +#. i18n: ectx: property (text), widget (QLabel, chatSavePathLabel_) +#: rc.cpp:628 +msgid "Save chat logs in the following directory:" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:27 +#. i18n: ectx: attribute (title), widget (QWidget, styleTab_) +#: rc.cpp:631 +msgid "St&yle" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:38 +#. i18n: ectx: property (whatsThis), widget (QLabel, textLabel1) +#: rc.cpp:634 +msgid "Allows you to change the theme KMess uses to display all chat messages." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:41 +#. i18n: ectx: property (text), widget (QLabel, textLabel1) +#: rc.cpp:637 +msgid "&Chat style:" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:64 +#. i18n: ectx: property (text), widget (KPushButton, newStylesButton_) +#: rc.cpp:640 +msgid "Get &New Styles..." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:120 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:643 +msgid "Chat Settings" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:128 +#. i18n: ectx: property (toolTip), widget (QCheckBox, useEmoticonsCheckBox_) +#: rc.cpp:646 +msgid "Enables the appearance of emoticons in the chat window." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:131 +#. i18n: ectx: property (text), widget (QCheckBox, useEmoticonsCheckBox_) +#: rc.cpp:649 +msgid "&Show emoticons" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:243 +#. i18n: ectx: property (toolTip), widget (QCheckBox, showWinksCheckBox_) +#: rc.cpp:655 +msgid "Enables the appearance of winks in the chat window." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:246 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, showWinksCheckBox_) +#: rc.cpp:658 +msgid "" +"If enabled, winks you send or receive will be displayed in the chat window. " +"Please note that in order to use this feature, you need to have a working " +"Flash-plugin installed." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:249 +#. i18n: ectx: property (text), widget (QCheckBox, showWinksCheckBox_) +#: rc.cpp:661 +msgid "Show &winks" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:256 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, groupFollowupCheckbox_) +#: rc.cpp:664 +msgid "" +"This option enables the grouping of messages from the same contact. Whenever " +"a contact sends you multiple messages, KMess will group those messages to " +"one single message. The exact appearance depends on the chosen chat style." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:259 +#. i18n: ectx: property (text), widget (QCheckBox, groupFollowupCheckbox_) +#: rc.cpp:667 +msgid "&Group follow-up messages from the same contact" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:285 +#. i18n: ectx: property (toolTip), widget (QCheckBox, showTimeCheckbox_) +#: rc.cpp:673 +msgid "Enables the appearance of a timestamp in each chat message." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:288 +#. i18n: ectx: property (text), widget (QCheckBox, showTimeCheckbox_) +#: rc.cpp:676 +msgid "S&how timestamp" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:319 +#. i18n: ectx: property (text), widget (QCheckBox, showDateCheckbox_) +#: rc.cpp:682 +msgid "Show &date" +msgstr "Amosar a &data" + +#. i18n: file: settings/chatstylepage.ui:349 +#. i18n: ectx: property (text), widget (QCheckBox, showSecondsCheckbox_) +#: rc.cpp:685 +msgid "Show s&econds" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:362 +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: rc.cpp:688 +msgid "&Text" +msgstr "&Texto" + +#. i18n: file: settings/chatstylepage.ui:374 +#. i18n: ectx: property (whatsThis), widget (QLabel, textLabel2) +#: rc.cpp:691 +msgid "This is the font style and color used in your chat messages." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:377 +#. i18n: ectx: property (text), widget (QLabel, textLabel2) +#: rc.cpp:694 +msgid "Your &message font:" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:458 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, useContactFontCheckBox_) +#: rc.cpp:697 +msgid "" +"This option allows you to override the font style and color of your " +"contacts' messages with the chosen font style and color below." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:461 +#. i18n: ectx: property (text), widget (QCheckBox, useContactFontCheckBox_) +#: rc.cpp:700 +msgid "&Force messages from your contacts to use this font:" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:536 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_4) +#: rc.cpp:703 +msgid "Chat Window Formatting" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:542 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, useFontEffectsCheckBox_) +#: rc.cpp:706 +msgid "" +"Enables the use of font effects. Typing *bold*, /italic/, and " +"_underline_ causes those words to appear in a bold, italic or underlined " +"font respectively." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:545 +#. i18n: ectx: property (text), widget (QCheckBox, useFontEffectsCheckBox_) +#: rc.cpp:709 +msgid "Use font &effects in messages, like *bold*, /italic/, and _underline_" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:555 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableChatFormattingCheckBox_) +#. i18n: file: settings/contactlistpage.ui:68 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, enableListFormattingCheckBox_) +#: rc.cpp:715 rc.cpp:782 +msgid "" +"Enables the use of \"Messenger Plus!\" formattings in the chat window. " +"For example, [b]this text[/b] will be replaced with this text." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:558 +#. i18n: ectx: property (text), widget (QCheckBox, enableChatFormattingCheckBox_) +#: rc.cpp:718 +msgid "Enable \"Messenger Plus!\" formatting" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:582 +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: rc.cpp:721 +msgid "&Behavior" +msgstr "&Comportamento" + +#. i18n: file: settings/chatstylepage.ui:589 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, shakeNudgeCheckBox_) +#: rc.cpp:724 +msgid "" +"

    When contacts would like to have your attention they can send you a " +"nudge. By default the chat window shakes when a nudge is received or sent. " +"Disable this option if the shaking effect is too obtrusive.

    \n" +"

    Even if this option is enabled KMess still limits the shaking effect. " +"Contacts may send multiple nudges at once, but KMess only shakes the chat " +"window with the first nudge.

    " +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:592 +#. i18n: ectx: property (text), widget (QCheckBox, shakeNudgeCheckBox_) +#: rc.cpp:728 +msgid "Shake the chat &window when a nudge is received or sent" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:602 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, displayChatUserPictureCheckBox_) +#: rc.cpp:734 +msgid "" +"If this option is enabled, your own display picture will be shown in the " +"contacts panel, along with the pictures of the contacts in that chat." +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:605 +#. i18n: ectx: property (text), widget (QCheckBox, displayChatUserPictureCheckBox_) +#: rc.cpp:737 +msgid "Display your own &display picture in the chat window" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:630 +#. i18n: ectx: property (text), widget (QLabel, textLabel1_2) +#: rc.cpp:740 +msgid "G&roup chats in the same window:" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:650 +#. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) +#: rc.cpp:743 +msgid "Always" +msgstr "Sempre" + +#. i18n: file: settings/chatstylepage.ui:655 +#. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) +#: rc.cpp:746 +msgid "For contacts in the same group" +msgstr "" + +#. i18n: file: settings/chatstylepage.ui:660 +#. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) +#: rc.cpp:749 +msgid "Never" +msgstr "Nunca" + +#. i18n: file: settings/contactlistpage.ui:17 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) +#: rc.cpp:752 +msgid "Display Options" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:23 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, showEmailInfoCheckBox_) +#: rc.cpp:755 +msgid "" +"If enabled, a notification is shown when an email message is received in " +"your inbox. The number of unread email messages is shown above the contact " +"list. This option is only available for Live Mail accounts." +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:26 +#. i18n: ectx: property (text), widget (QCheckBox, showEmailInfoCheckBox_) +#: rc.cpp:758 +msgid "Display a count of &unread mail" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:33 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, nowListeningCheckBox_) +#: rc.cpp:761 +msgid "" +"If enabled, your contacts can see which song you are listening to. This " +"information is retrieved from the currently active media player." +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:36 +#. i18n: ectx: property (text), widget (QCheckBox, nowListeningCheckBox_) +#: rc.cpp:764 +msgid "Show contacts w&hich song I am listening to" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:46 +#. i18n: ectx: property (toolTip), widget (QCheckBox, showBirdCheckBox_) +#: rc.cpp:770 +msgid "" +"If enabled, the KMess logo will be displayed in the background of the " +"contact list." +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:49 +#. i18n: ectx: property (text), widget (QCheckBox, showBirdCheckBox_) +#: rc.cpp:773 +msgid "Show background &image" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:62 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:779 +msgid "List Formatting" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:71 +#. i18n: ectx: property (text), widget (QCheckBox, enableListFormattingCheckBox_) +#: rc.cpp:785 +msgid "Enable \"Messenger &Plus!\" formatting" +msgstr "" + +#. i18n: file: settings/contactlistpage.ui:78 +#. i18n: ectx: property (text), widget (QCheckBox, showContactEmailCheckBox_) +#: rc.cpp:788 +msgid "Show the &email address of contacts instead of their friendly name" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:24 +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: rc.cpp:791 +msgid "&Emoticon Themes" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:36 +#. i18n: ectx: property (text), widget (QLabel, textLabel1) +#: rc.cpp:794 +msgid "Available emoticon themes:" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:73 +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: rc.cpp:797 +msgid "&Custom Emoticons" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:110 +#. i18n: ectx: property (toolTip), widget (QPushButton, addEmoticonButton_) +#: rc.cpp:800 +msgid "Click here to add a new custom emoticon" +msgstr "Preme aquí para engadir unha emoticona personalizada" + +#. i18n: file: settings/emoticonspage.ui:113 +#. i18n: ectx: property (text), widget (QPushButton, addEmoticonButton_) +#: rc.cpp:803 +msgid "Add Ne&w..." +msgstr "Engadir no&vo..." + +#. i18n: file: settings/emoticonspage.ui:142 +#. i18n: ectx: property (toolTip), widget (QPushButton, renameEmoticonButton_) +#: rc.cpp:809 +msgid "Click here to rename the selected emoticon" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:145 +#. i18n: ectx: property (text), widget (QPushButton, renameEmoticonButton_) +#: rc.cpp:812 +msgid "Re&name" +msgstr "Cambiar o &nome" + +#. i18n: file: settings/emoticonspage.ui:158 +#. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) +#: rc.cpp:818 +msgid "Click here to remove the selected emoticon" +msgstr "" + +#. i18n: file: settings/emoticonspage.ui:161 +#. i18n: ectx: property (text), widget (QPushButton, removeEmoticonButton_) +#: rc.cpp:821 +msgid "Remo&ve" +msgstr "Elimina&r" + +#. i18n: file: settings/emoticonspage.ui:173 +#. i18n: ectx: property (text), widget (QLabel, textLabel1_2) +#: rc.cpp:827 +msgid "Available custom emoticons:" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:27 +#. i18n: ectx: attribute (title), widget (QWidget, tab) +#: rc.cpp:830 +msgid "Web Browser" +msgstr "Navegador web" + +#. i18n: file: settings/miscellaneouspage.ui:33 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEBrowserRadio_) +#: rc.cpp:833 +msgid "Choose this option to use the browser used by the rest of KDE." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:36 +#. i18n: ectx: property (text), widget (QRadioButton, useKDEBrowserRadio_) +#: rc.cpp:836 +msgid "&Use the KDE default browser" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:43 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useListedBrowserRadio_) +#. i18n: file: settings/miscellaneouspage.ui:177 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useListedMailClientRadio_) +#: rc.cpp:839 rc.cpp:874 +msgid "Select this option to choose from a list of installed browsers." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:46 +#. i18n: ectx: property (text), widget (QRadioButton, useListedBrowserRadio_) +#: rc.cpp:842 +msgid "&Use an installed browser:" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:80 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomBrowserRadio_) +#. i18n: file: settings/miscellaneouspage.ui:214 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomMailClientRadio_) +#: rc.cpp:845 rc.cpp:880 +msgid "Choose this option to enter the path to your favorite browser." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:83 +#. i18n: ectx: property (text), widget (QRadioButton, useCustomBrowserRadio_) +#. i18n: file: settings/miscellaneouspage.ui:217 +#. i18n: ectx: property (text), widget (QRadioButton, useCustomMailClientRadio_) +#: rc.cpp:848 rc.cpp:883 +msgid "&Specify a custom command:" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:113 +#. i18n: ectx: property (whatsThis), widget (QLineEdit, customBrowserEdit_) +#. i18n: file: settings/miscellaneouspage.ui:247 +#. i18n: ectx: property (whatsThis), widget (QLineEdit, customMailClientEdit_) +#: rc.cpp:852 rc.cpp:887 +#, no-c-format +msgid "" +"Specify the path of a program to use to open links; a '%u' here will be " +"replaced with the links' URL." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:126 +#. i18n: ectx: property (text), widget (QLabel, customBrowserInfo_) +#: rc.cpp:856 +#, no-c-format +msgid "Use '%u' to insert the URL in the command line." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:151 +#. i18n: ectx: attribute (title), widget (QWidget, tab_2) +#: rc.cpp:859 +msgid "Email Client" +msgstr "Cliente de correo electrónico" + +#. i18n: file: settings/miscellaneouspage.ui:157 +#. i18n: ectx: property (whatsThis), widget (QCheckBox, useLiveMailCheckbox_) +#: rc.cpp:862 +msgid "" +"Check this box to use the Live Mail webmail site when you connect with " +"accounts compatible with Live Mail." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:160 +#. i18n: ectx: property (text), widget (QCheckBox, useLiveMailCheckbox_) +#: rc.cpp:865 +msgid "Use &Live Mail if the account supports it" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:167 +#. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEMailClientRadio_) +#: rc.cpp:868 +msgid "Choose this option to use the email client used by the rest of KDE." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:170 +#. i18n: ectx: property (text), widget (QRadioButton, useKDEMailClientRadio_) +#: rc.cpp:871 +msgid "Use the &KDE default email client" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:180 +#. i18n: ectx: property (text), widget (QRadioButton, useListedMailClientRadio_) +#: rc.cpp:877 +msgid "Use an &installed email client:" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:260 +#. i18n: ectx: property (text), widget (QLabel, customMailClientInfo_) +#: rc.cpp:891 +#, no-c-format +msgid "Use '%u' to insert the email address in the command line." +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:294 +#. i18n: ectx: property (text), widget (QCheckBox, useReceivedFilesDir_) +#: rc.cpp:897 +msgid "&Save all received files in one directory:" +msgstr "" + +#. i18n: file: settings/miscellaneouspage.ui:343 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:903 +msgid "&Use ports between" +msgstr "&Use portos entre" + +#. i18n: file: settings/miscellaneouspage.ui:369 +#. i18n: ectx: property (text), widget (QLabel, label_3) +#: rc.cpp:906 +msgid "and" +msgstr "e" + +#. i18n: file: settings/miscellaneouspage.ui:398 +#. i18n: ectx: property (text), widget (QLabel, label_4) +#: rc.cpp:909 +msgid "for file transfers" +msgstr "para transferencias de ficheiros" + +#. i18n: file: utils/inlineeditlabel.ui:14 +#. i18n: ectx: property (windowTitle), widget (QWidget, InlineEditLabel) +#: rc.cpp:912 +msgid "InlineEditLabel" +msgstr "" + +#. i18n: file: utils/likeback/likebackbar.ui:32 +#. i18n: ectx: property (toolTip), widget (QToolButton, m_likeButton) +#: rc.cpp:915 +msgid "Click here to tell the developers about something you liked" +msgstr "" + +#. i18n: file: utils/likeback/likebackbar.ui:36 +#. i18n: ectx: property (whatsThis), widget (QToolButton, m_likeButton) +#. i18n: file: utils/likeback/likebackbar.ui:53 +#. i18n: ectx: property (whatsThis), widget (QToolButton, m_dislikeButton) +#. i18n: file: utils/likeback/likebackbar.ui:70 +#. i18n: ectx: property (whatsThis), widget (QToolButton, m_bugButton) +#. i18n: file: utils/likeback/likebackbar.ui:87 +#. i18n: ectx: property (whatsThis), widget (QToolButton, m_featureButton) +#: rc.cpp:918 rc.cpp:925 rc.cpp:932 rc.cpp:939 +msgid "" +"Click on one of these icons to send your feedback to the developers of " +"this application. You can disable the icons with the \"Show Feedback Icons\" " +"checkbox in the Help menu.\n" +" " +msgstr "" + +#. i18n: file: utils/likeback/likebackbar.ui:49 +#. i18n: ectx: property (toolTip), widget (QToolButton, m_dislikeButton) +#: rc.cpp:922 +msgid "Click here to tell the developers about something you did not like" +msgstr "" + +#. i18n: file: utils/likeback/likebackbar.ui:66 +#. i18n: ectx: property (toolTip), widget (QToolButton, m_bugButton) +#: rc.cpp:929 +msgid "Click here to tell the developers about a problem in the application" +msgstr "" + +#. i18n: file: utils/likeback/likebackbar.ui:83 +#. i18n: ectx: property (toolTip), widget (QToolButton, m_featureButton) +#: rc.cpp:936 +msgid "" +"Click here to tell the developers about new features you would like to have " +"in this application" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:48 +#. i18n: ectx: property (text), widget (QLabel, label_2) +#: rc.cpp:943 +#, fuzzy +msgid "Your comment:" +msgstr "Indalecio Freiría Santos" + +#. i18n: file: utils/likeback/likebackdialog.ui:74 +#. i18n: ectx: property (title), widget (QGroupBox, groupBox) +#: rc.cpp:946 +msgid "Your comment is about:" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:86 +#. i18n: ectx: property (text), widget (QRadioButton, likeRadio_) +#: rc.cpp:949 +msgid "Something you like" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:99 +#. i18n: ectx: property (text), widget (QRadioButton, dislikeRadio_) +#: rc.cpp:952 +msgid "Something you dislike" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:112 +#. i18n: ectx: property (text), widget (QRadioButton, bugRadio_) +#: rc.cpp:955 +msgid "An improper behavior of the application" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:125 +#. i18n: ectx: property (text), widget (QRadioButton, featureRadio_) +#: rc.cpp:958 +msgid "A new feature you desire" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:141 +#. i18n: ectx: property (text), widget (QCheckBox, specifyEmailCheckBox_) +#: rc.cpp:961 +msgid "Specify an email address to be contacted back:" +msgstr "" + +#. i18n: file: utils/likeback/likebackdialog.ui:188 +#. i18n: ectx: property (text), widget (QLabel, label) +#: rc.cpp:964 +msgid "" +"Specifying an email address will allow the developers to ask you for " +"more information on your report, or to tell you when your feature will be " +"implemented.
    \n" +"Your email address will not be used for anything else but this report." +msgstr "" + +#~ msgid "Webcam Chat" +#~ msgstr "Conversa de cámara web" + +#~ msgid "Start a &Meeting" +#~ msgstr "Co&mezar unha reunión" + +#~ msgctxt "Menu/toolbar action for voice conversations (KPhone support)" +#~ msgid "Start or Stop a &Conversation" +#~ msgstr "Comezar ou parar unha &conversa" + +#~ msgctxt "Label text" +#~ msgid "Winks are disabled: KMess cannot send winks to some of the contacts." +#~ msgstr "" +#~ "Chiscos desactivados: KMess non pode enviar chiscos a algúns contactos." + +#~ msgctxt "Dialog window title" +#~ msgid "KMess Script Console" +#~ msgstr "Consola de scripts de KMess" + +#~ msgctxt "Status event message" +#~ msgid "Going online..." +#~ msgstr "Conectando..." + +#~ msgctxt "Status event message" +#~ msgid "Connected!" +#~ msgstr "Conectado" + +#~ msgid "Group adding" +#~ msgstr "Engadindo grupo" + +#~ msgid "The group name already exists" +#~ msgstr "O nome do grupo xa existe" + +#~ msgid "Show &Script Console..." +#~ msgstr "Amosar consola de &scripts" + +#~ msgid "Could not find application style '%1'." +#~ msgstr "Se puido atopar o estilo de aplicativo '%1'." + +#~ msgid "Could not load application style '%1'." +#~ msgstr "Se puido cargar o estilo de aplicativo '%1'." + +#~ msgid "The application style '%1' is broken." +#~ msgstr "O estilo do aplicativo '%1' está roto." + +#~ msgctxt "Default personal message shown in the contact list" +#~ msgid "<Enter your personal message here>" +#~ msgstr "<Insire a túa mensaxe persoal aquí>" + +#~ msgid "Émeric Dupont" +#~ msgstr "Émeric Dupont" + +#~ msgid "Inviting the contact to a meeting." +#~ msgstr "Invitar aos contactos a unha reunión." + +#~ msgid "Miscellaneous" +#~ msgstr "Outras" + +#~ msgid " Hide KMess at startup" +#~ msgstr "Ocultar KMess ao iniciar" diff --git a/po/hu.po b/po/hu.po index 9f6676c..52cfa00 100644 --- a/po/hu.po +++ b/po/hu.po @@ -11,10 +11,11 @@ msgid "" msgstr "" "Project-Id-Version: Kmess\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2009-07-24 21:20+0200\n" "Last-Translator: Ralesk \n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -23,7 +24,7 @@ msgstr "" "X-Poedit-Country: HUNGARY\n" "X-Previous-Translators: rezso \n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Nem vagyok a gépnél" @@ -31,7 +32,7 @@ msgstr "Nem vagyok a gépnél" msgid "Your name" msgstr "Neved" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "mailcimed@hotmail.com" @@ -484,39 +485,39 @@ msgstr "Fájl felülírása" msgid "Over&write" msgstr "&Felülírás" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "&Emotikon hozzáadása…" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "&Emotikon elrejtése…" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "&E-mail küldése" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Partner &felvétele" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "&E-mail cím másolása" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Ugrás a &link címére" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "&Cím másolása" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "&Ablak törlése" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Társalgás mentése &fájlba…" @@ -655,7 +656,7 @@ msgstr "Betűk &színe" msgid "C&lear Chat Window" msgstr "Ablak törlése" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -666,33 +667,33 @@ msgstr "" "
    De használhatod a /online, /phone stb. rövid formákat is." "" -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Hibás /status szintaxis" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" "Nem használhatod a /block parancsot egy csoportos társalgásban." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Nem használható a /block parancs" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Nem használhatod az /unblock parancsot egy csoportos társalgásban." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Nem használható a /unblock parancs" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -701,19 +702,19 @@ msgstr "" "Ismeretlen parancs: %1. Ha nem akarod, hogy ezt az üzenetet " "parancsként értelmezzük, tegyél az elejére még egy / jelet." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Ismeretlen parancs" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "" "Nem sikerült elküldeni a kézírásos üzenetet: a partnerek nem támogatják az " "üzenettípust." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -722,18 +723,18 @@ msgstr "" "Nem sikerült elküldeni a kézírásos üzenetet: hiba történt az üzenet " "készítésekor." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Társalgás" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Társalgás" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -743,37 +744,37 @@ msgstr "" "Biztosan el szeretnéd rejteni a menüt? A %1 kombinációval tudod " "majd újra előhozni." -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Menü elrejtése" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Ecset" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Radír" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 ír…" -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 és %2 ír…" -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, fuzzy, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 és még %3 résztvevő ír…" -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -787,11 +788,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Kézírás-mód" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -800,7 +801,7 @@ msgstr "" "Kézírásos üzemmód letiltva: néhány beszélgetőpartner nem tudná fogadni az " "ilyen üzeneteket." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -811,17 +812,17 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Animációk" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "Winkek letiltva: néhány beszélgetőpartner nem tudja azokat fogadni." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "Winkek letiltva: a beszélgetőpartner nem tudja azokat fogadni." @@ -830,52 +831,52 @@ msgstr "Winkek letiltva: a beszélgetőpartner nem tudja azokat fogadni." msgid "&Start Private Chat" msgstr "&Privát beszélgetés indítása" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&E-mail küldése" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Profil megjelenítése" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Tulajdonságok" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "Partner &felvétele" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Partner &engedélyezése" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "Partner &törlése" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "Partner ti<ása" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Partner tiltásának &feloldása" # FIXME -- ez egy nagyon rossz fordítás ennek -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Baráti név" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Személyes üzenet" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "&E-mail cím" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Szám &címe" @@ -901,15 +902,15 @@ msgstr "&Feljegyzések" msgid "&Emoticons" msgstr "&Emotikonok" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Másolás…" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Letiltott" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -917,17 +918,18 @@ msgctxt "" msgid "The contact is %1" msgstr "A partner %1 állapotú" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "A megjelenítendő kép letöltése nem sikerült" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -956,7 +958,7 @@ msgstr "Új hozzáadása" msgid "Edit" msgstr "Szerkesztés" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Törlés" @@ -1012,52 +1014,52 @@ msgstr "Windows Live Messenger %1 verzióval kompatibilis" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger kompatibilis" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Elérhető" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Elfoglalt" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Távol" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Távol, automatikus válasszal" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inaktív" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Rögtön jövök" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Telefon" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Ebéd" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Láthatatlan" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Kijelentkezve" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Státuszom" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Kijelentkezés" @@ -1163,16 +1165,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "%1 partner adatai" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Kapcsolódva" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Még nem láttuk online" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Nem üzent még sose" @@ -1200,20 +1202,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Kliens: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Biztosan használni szeretnéd ennek a partnernak a megjelenített képét?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Partner képének másolása" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "A kiválasztott fájltípust a Phonon nem támogatja." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Nem támogatott fájltípus" @@ -1726,8 +1728,8 @@ msgstr "Nem lehet újracsatlakozni, mert a fióknak nincs elmentve a jelszava." #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" "Internetkapcsolatra vár…
    Újrakapcsolódás azonnal!" @@ -1793,7 +1795,7 @@ msgstr "Csoport hozzáadása" msgid "Enter a name for the new group:" msgstr "Az új csoport neve:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1801,15 +1803,15 @@ msgid "" msgstr "" "Biztosan el akarod távolítani %1 partnert a partnerlistádról?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Partner törlése" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Törlés és tiltás" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1819,12 +1821,12 @@ msgstr "" "A %1 csoport nem üres. Vedd ki belőle az összes partnert, majd " "próbáld meg újra!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Csoport törlése" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1834,24 +1836,24 @@ msgstr "" "Biztosan el akarod távolítani %1 csoportot a partnerlistádról?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Törlés" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Ez egy speciális csoport, nem módosítható." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Csoport átnevezése" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "A csoport új neve:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1861,21 +1863,21 @@ msgstr "" "

    Nem lehet automatikusan bejelentkezni a %1 fiókkal:
    ehhez el " "kell menteni a fiók jelszavát!

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Automatikus bejelentkezés nem sikerült" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Lehet, hogy nincs kapcsolat..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Kijelentkezve" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1883,7 +1885,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    A KMess a következő könyvtárakban keresett:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1899,12 +1901,12 @@ msgstr "" "ezek közül: %1

    Ellenőrizd a telepítést, és másold a hiányzó fájlt a " "felsorolt könyvtárak egyikébe.

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Hiba az értesítéseknél" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1913,210 +1915,205 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Kapcsolódás" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Kijelentkezés" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "&Profilom megjelenítése" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "&Engedélyezett partnerek megjelenítése" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "&Kijelentkezett partnerek megjelenítése" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "&Törölt partnerek megjelenítése" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "&Korábbi társalgások" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "&Keresőmező megjelenítése" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Üres &csoportok megjelenítése" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Avatarok mérete" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "Partnerek &rendezési módja" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Á&tviteli ablak megjelenítése…" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Új &partner…" -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Új &csoport…" -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "Partnerlista exportálása…" -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "&Korábbi társalgások…" -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Új &fiók…" -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Fiók beállítása…" -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "&KMess beállításai…" -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Kijelölés &menüje" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Ne mutassa" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Kicsi" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Közepes" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Nagy" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Csoport" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Online/Offline" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Vegyes" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "&Hálózatablak megjelenítése…" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Bejelentkezve %2 felhasználóként" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 bejelentkezett" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 kijelentkezett" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "&Társalgás" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Tör&lés a csoportból" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Másolás másik csoportba" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "Á&thelyezés másik csoportba" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Csoport mozgatása &lefelé" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Csoport mozgatása &felfelé" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Csoport &törlése" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Csoport át&nevezése" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Ennek a partnernek nem vagy a kontaktlistáján." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "E-mail cím" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Kliens" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Igen" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Nem" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Letiltott" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Utoljára láttuk" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Utoljára üzent" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "%1 csoport" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2124,7 +2121,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 partner, " msgstr[1] "%1 partner, " -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2132,7 +2129,7 @@ msgid_plural "%1 online" msgstr[0] "%1 elérhető" msgstr[1] "%1 elérhető" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2140,17 +2137,17 @@ msgid_plural "%1 contacts" msgstr[0] "%1 partner" msgstr[1] "%1 partner" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Kattints ide a megjelenített neved megváltoztatásához" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Kattints ide a személyes üzenet megváltoztatásához[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2159,15 +2156,15 @@ msgstr "" "Írd be ide a partnereid számára megjelenítendő üzenetet. Ezt a neved mellett " "fogják látni" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Ezzel a partnerrel nem volt korábbi társalgás." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Nem található korábbi társalgás" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2177,13 +2174,23 @@ msgstr "" "nincsenek elmentve, ha ezt szeretnéd, akkor a fiókod beállításaiban ezen " "változtathatsz." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 új e-mail" msgstr[1] "%1 új e-mail" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Az általam hallgatott &dal kijelzése a partnereknek" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Az általam hallgatott &dal kijelzése a partnereknek" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2856,65 +2863,74 @@ msgstr "" #: main.cpp:182 msgid "Internationalization fixes, drag'n'drop of images into display pictures" -msgstr "Nemzetköziesítés javítása, képek drag'n'dropolása a megjelenített ikonra" +msgstr "" +"Nemzetköziesítés javítása, képek drag'n'dropolása a megjelenített ikonra" #: main.cpp:182 msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Alapötlet és kódrészletek" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "Régi buborékjelző kódja, kezdeti p2p kód, MSN kihíváskezelő" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Tétlenségi időzítő kódja" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Tálcára zárás screenshot kód" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" # FIXME -- öööö, hogy van az magyarul, hogy crash? XD -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "Saját crashkezelő implementáció, tálcaikon overlay implementáció" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "Javítás a KNotify és KWin fókuszálási hibákhoz" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2922,33 +2938,33 @@ msgstr "" "Örömmel várjuk hibajavításaidat és patch-eidet a KMess fórumokban!\n" "Ha úgy érzed, a neved hiányzik innét, vedd fel velünk a kapcsolatot!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "A te neved itt lesz?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Pauli Henrik" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr " " -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Ne mutassa alapból a partnerlistát" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Automatikus bejelentkezés a megadott e-mail címmel" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Debug teszt futtatása (csak fejlesztői változatnál)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3593,26 +3609,26 @@ msgstr "MSN hiba %1" msgid "Trying the HTTP fallback..." msgstr "Megpróbáljuk inkább HTTP-n…" -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Azonosítás…" -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Azonosítva" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Kapcsolódás..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "A KMess ismeretlen parancsot kapott a szervertől: %1" # NOTE -- No translation for "minute" (=perc) due to suffixes: see tag # TAG -- maintenance_minutes -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3621,55 +3637,55 @@ msgstr[0] "1" msgstr[1] "%1" # TAG -- maintenance_minutes -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "A szerver le fog állni karbantartásra %1 perc múlva!" # TAG -- maintenance_minutes -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "" "Az MSN szerver jelezte, hogy %1 percen belül le fog állni karbantartásra." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "" "A KMess nem tudja feldolgozni a kijelentkezett állapotban kapott üzeneteket." "
    Részletek: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "A SOAP kliens elvesztette érvényességét." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Azonosításra használható időkeret lejárt" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Várakozás a partnerlistára…" -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    MSN üzenet: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN figyelmeztetés" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    KMess belső hiba: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." @@ -3678,18 +3694,18 @@ msgstr "" "

    Az azonosítás nem sikerült, ellenőrizd a felhasználóneved és a jelszavad." "

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN hiba" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    A %1 fiók máshonnét is kapcsolódott.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3699,7 +3715,7 @@ msgstr "" "

    A kapcsolatot megszakították!

    Más klienssel vagy más helyről " "jelentkeztél be a %1 fiókra.

    " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3708,7 +3724,7 @@ msgstr "" "

    Nem lehet kapcsolatot létesíteni a Live Messenger szolgáltatással.
    Lehet, hogy azonosítanod kell magad, mielőtt az internetet használhatod?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3725,7 +3741,7 @@ msgstr "" "szolgáltatás állapotát mutató weblapot ide kattintva " "érheted el.

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " @@ -3733,7 +3749,7 @@ msgstr "" "

    Nem sikerült bejelentkezni.

    Lehet, hogy nincs nálad feltelepítve a " "qca2 és a qca2-plugin-ossl?

    " -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " @@ -3744,12 +3760,12 @@ msgstr "" "hogy a KMess működjön.

    Az is lehetséges, hogy a MSN hálózat " "pillanatnyilag nem elérhető.

    " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Nem sikerült kapcsolódni a Live Messenger szolgáltatáshoz.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3763,56 +3779,56 @@ msgstr "" "internetkapcsolatodban.

    A Live Messenger szolgáltatás állapotát mutató " "weblapot ide kattintva érheted el.

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Hiba: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    A Live Messenger szerver hibát jelzett:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Messenger Service hiba: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    A Live Messenger szerver hibát jelzett:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    KMess hiba: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    A KMess belső hibát észlelt:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Megszűnt a hálózati kapcsolat.

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    Megszűnt a kapcsolat a Live Messenger szerverrel.

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3858,13 +3874,13 @@ msgstr[1] "%1 ping elveszett" msgid "The connection to the server was lost" msgstr "A szerverkapcsolat elveszett" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "A megadott e-mail cím (%1) hibás!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3872,42 +3888,42 @@ msgid "" "account!" msgstr "A %1 e-mail cím nincs regisztrálva az MSN Messengerhez" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Hibás kérelem a webszolgáltatás felé (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "A webszolgáltatás nem érhető el (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Túl sok átirányítás a webszolgáltatástól." -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Az offline üzenetek webszolgáltatása nem érhető el" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "A Live Messenger webszolgáltatás problémákkal küzd" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Hibás %1 válasz a webszolgáltatástól (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Nem érkezett válasz a webszolgáltatástól" @@ -4053,38 +4069,123 @@ msgstr "%1
    most telefonál" msgid "%1
    is out for lunch" msgstr "%1
    most ebédel" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 új e-mail" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Az egy csoportba tartozó partnerekét" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "A partner nincs bejelentkezve" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "A partner nincs bejelentkezve" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "KMess ikon" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "Új e-mail:
    „%1”
    feladó: %2" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"A főablak bezárása után a KMess még tovább fog futni a tálcán ikonként. A " +"program bezárásához használd a Kilépést a Fájl menüben." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Dokkolás a tálcán" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Kapcsolódás %1 címhez, %2 porton" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "
    %1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Kapcsolódva" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Megszűnt a hálózati kapcsolat.

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "&Társalgás kezdése" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Ü&zenet írása" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Üz&enet megtekintése" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Részletek" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "&E-mail olvasása" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Elrejtés" @@ -4097,11 +4198,6 @@ msgstr "" "A főablak bezárása után a KMess még tovább fog futni a tálcán ikonként. A " "program bezárásához használd a Kilépést a Fájl menüben." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Dokkolás a tálcán" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4132,21 +4228,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 e-mail" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Tallózás…" -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Kép keresése és méretre vágása…" -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Korábbi kép használata…" #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Megjelenítendő kép" @@ -4454,8 +4550,8 @@ msgid "" "translation tool to translate your message.
    " msgstr "" "Lehetőség szerint írd %1 vagy %2 nyelven, különben a fejlesztők nem " -"fogják tudni elolvasni!
    Megpróbálhatsz használni egy online fordítóeszközt).
    " +"fogják tudni elolvasni!
    Megpróbálhatsz használni egy online fordítóeszközt).
    " #: utils/likeback/likebackdialog.cpp:168 msgctxt "" @@ -4783,7 +4879,8 @@ msgstr "" #. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) #: rc.cpp:141 msgid "Click or Drag&Drop to change the image for this contact" -msgstr "Kattints ide vagy húzz ide egy képet a partner képének megváltoztatásához" +msgstr "" +"Kattints ide vagy húzz ide egy képet a partner képének megváltoztatásához" #. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) @@ -6452,6 +6549,10 @@ msgstr "" "várható.
    \n" "E-mail címedet ezen kívül másra nem fogjuk felhasználni." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Ennek a partnernek nem vagy a kontaktlistáján." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Add meg a személyes üzeneted itt>" diff --git a/po/it.po b/po/it.po index c7375d3..0d55027 100644 --- a/po/it.po +++ b/po/it.po @@ -7,21 +7,23 @@ # Valerio Pilo , 2008. # Andrea Decorte , 2009. # Valerio Pilo , 2009. +# Valerio Pilo , 2010. msgid "" msgstr "" "Project-Id-Version: it\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" -"PO-Revision-Date: 2009-11-05 22:26+0100\n" -"Last-Translator: Valerio Pilo \n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" +"PO-Revision-Date: 2010-07-25 16:01+0200\n" +"Last-Translator: Valerio Pilo \n" "Language-Team: Italian \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Non sono al computer" @@ -29,7 +31,7 @@ msgstr "Non sono al computer" msgid "Your name" msgstr "Nome" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "utente@hotmail.com" @@ -45,8 +47,8 @@ msgid "" "configuration files.
    " msgstr "" "Sono state trovate alcune password di profilo memorizzate in modo non " -"sicuro.
    Desideri importare le password nel Portafogli KDE chiamato '%" -"1', mantenere le password memorizzate in modo non sicuro, o eliminarle " +"sicuro.
    Desideri importare le password nel Portafogli KDE chiamato " +"'%1', mantenere le password memorizzate in modo non sicuro, o eliminarle " "permanentemente?

    Nota: è raccomandato di non mantenere " "le password memorizzate non in modo sicuro, perchè esse saranno " "facilmente leggibili dai file di configurazione di KMess." @@ -161,10 +163,8 @@ msgstr "" #: chat/chat.cpp:1187 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "" -"%1 has sent you a voice clip, but KMess does not support voice clips yet." -msgstr "" -"%1 ti ha inviato un messaggio vocale, ma KMess non li supporta al momento." +msgid "%1 has sent you a voice clip, but KMess does not support voice clips yet." +msgstr "%1 ti ha inviato un messaggio vocale, ma KMess non li supporta al momento." #: chat/chat.cpp:1201 #, kde-format @@ -172,8 +172,7 @@ msgctxt "Warning message shown in chat, %1 is the contact's friendly name" msgid "" "%1 has sent you an action message, but KMess does not support action " "messages yet." -msgstr "" -"%1 ti ha inviato un messaggio di azione, ma KMess non li supporta al momento." +msgstr "%1 ti ha inviato un messaggio di azione, ma KMess non li supporta al momento." #: chat/chat.cpp:1212 msgctxt "Warning message shown in chat" @@ -183,8 +182,7 @@ msgstr "Uno o più contatti non supportano il messaggio scritto a mano." #: chat/chat.cpp:1226 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "" -"%1 has sent you a Live Messenger feature that KMess does not support yet." +msgid "%1 has sent you a Live Messenger feature that KMess does not support yet." msgstr "" "%1 ti ha inviato una caratteristica di Live Messenger ancora non supportata " "da KMess." @@ -415,8 +413,7 @@ msgstr "%1 dice:" #: chat/chatmessageview.cpp:345 #, kde-format -msgctxt "" -"Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" +msgctxt "Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" msgid "Chat with %1
    Started on: %2" msgstr "Conversazione con %1
    Iniziata il: %2" @@ -497,39 +494,39 @@ msgstr "Sovrascrivi File" msgid "Over&write" msgstr "So&vrascrivi" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Aggiungi questa &Emoticon..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Nascondi questa &Emoticon" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Invia &Email" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "&Aggiungi Contatto" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Copia Indirizzo &Email" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Visita Co&llegamento" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Copia Colleg&amento" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Pu&lisci Chat" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Salva Chat su &File..." @@ -668,7 +665,7 @@ msgstr "&Colore del Carattere" msgid "C&lear Chat Window" msgstr "Pu&lisci Finestra di Chat" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -679,33 +676,32 @@ msgstr "" "invisible
    .
    Puoi anche usare le scorciatoie /online, /" "phone, eccetera." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Sintassi di /status non Corretta" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." -msgstr "" -"Non puoi usare il comando /block in una conversazione di gruppo." +msgstr "Non puoi usare il comando /block in una conversazione di gruppo." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Impossibile usare il comando /block" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" "Non puoi usare il comando /unblock in una conversazione di gruppo." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Impossibile usare il comando /unblock" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -714,18 +710,17 @@ msgstr "" "Comando sconosciuto: %1. Se non volevi che questo messaggio " "fosse un comando, preponi al tuo messaggio un'altra /." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Comando Sconosciuto" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." -msgstr "" -"Invio del messaggio scritto a mano fallito: i contatti non lo supportano." +msgstr "Invio del messaggio scritto a mano fallito: i contatti non lo supportano." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " @@ -734,18 +729,18 @@ msgstr "" "Invio del messaggio scritto a mano fallito: un errore è avvenuto mentre " "veniva creato." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Chat" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Chat" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -755,37 +750,37 @@ msgstr "" "Sei sicuro di voler nascondere la barra dei menu? Potrai mostrarla " "nuovamente utilizzando questa scorciatoia da tastiera: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Nascondere la Barra dei Menu" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Pennello da disegno" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Gomma" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 sta scrivendo..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 e %2 stanno scrivendo..." -#: chat/chatwindow.cpp:2151 -#, fuzzy, kde-format +#: chat/chatwindow.cpp:2185 +#, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 e altri %3 stanno scrivendo..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -799,11 +794,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Modalità scrittura a mano" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -812,7 +807,7 @@ msgstr "" "La scrittura a mano è disabilitata: alcuni dei contatti non supportano la " "ricezione di messaggi scritti a mano." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -823,19 +818,18 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Animoticon" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" -msgid "" -"Winks are disabled: some of the contacts do not support receiving winks." +msgid "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" "Le animoticon sono disabilitate: alcuni dei contatti non supportano la " "ricezione di animoticon." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "" @@ -846,51 +840,51 @@ msgstr "" msgid "&Start Private Chat" msgstr "&Avvia una Chat Privata" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "Invia &Email" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Visualizza Profilo" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Proprietà" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Aggiungi Contatto" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "A&utorizza Contatto" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "Eli&mina Contatto" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Blocca Contatto" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Sbl&occa Contatto" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Nome Personale" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "Messaggio &Personale" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "Indirizzo &Email" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Nome &Canzone" @@ -916,15 +910,15 @@ msgstr "&Note" msgid "&Emoticons" msgstr "&Emoticon" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Copia" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Bloccato" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -932,17 +926,18 @@ msgctxt "" msgid "The contact is %1" msgstr "Il contatto è %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Ricezione dell'immagine personale non riuscita" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -971,7 +966,7 @@ msgstr "Aggiungi Nuova" msgid "Edit" msgstr "Modifica" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Rimuovi" @@ -1027,52 +1022,52 @@ msgstr "Windows Live Messenger %1 o compatibile" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger compatibile" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "In linea" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Occupato" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Assente" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Assente con Risposta Automatica" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Inattivo" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Torno subito" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Al telefono" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "A pranzo" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Invisibile" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Non in linea" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "Il mio &stato" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Disconnetti" @@ -1178,16 +1173,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Proprietà del contatto %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Connesso" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Mai visto" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Ancora nessun messaggio" @@ -1215,21 +1210,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Client: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" -msgstr "" -"Sei sicuro di voler utilizzare l'immagine personale di questo contatto?" +msgstr "Sei sicuro di voler utilizzare l'immagine personale di questo contatto?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Copia Immagine del Contatto" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Il tipo di file selezionato non è supportato da Phonon." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Tipo di file non supportato" @@ -1742,11 +1736,11 @@ msgstr "Impossibile riconnettere: questo profilo non ha una password salvata" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" -"Attesa di una connessione a Internet per riconnettersi...
    Riconnetti ora!" +"Attesa di una connessione a Internet per riconnettersi...
    Riconnetti ora!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1756,17 +1750,16 @@ msgstr "Connessione a Internet non disponibile" #: initialview.cpp:443 #, kde-format msgctxt "Status message on login screen" -msgid "" -"Waiting %1 second before reconnection...
    Reconnect now!" +msgid "Waiting %1 second before reconnection...
    Reconnect now!" msgid_plural "" "Waiting %1 seconds before reconnection...
    Reconnect now!" msgstr[0] "" -"Attesa di %1 secondo prima della riconnessione...
    Riconnetti ora!" +"Attesa di %1 secondo prima della riconnessione...
    Riconnetti ora!" msgstr[1] "" -"Attesa di %1 secondi prima della riconnessione...
    Riconnetti ora!" +"Attesa di %1 secondi prima della riconnessione...
    Riconnetti ora!" #: initialview.cpp:662 msgctxt "Button label" @@ -1791,8 +1784,7 @@ msgstr "Per favore inserisci un indirizzo email valido" #: kmess.cpp:217 #, kde-format msgid "The contact %1 is already in your contact list." -msgstr "" -"Il contatto %1 è già presente nella tua lista contatti." +msgstr "Il contatto %1 è già presente nella tua lista contatti." #: kmess.cpp:217 msgid "Contact Information" @@ -1811,37 +1803,35 @@ msgstr "Aggiungi un Gruppo" msgid "Enter a name for the new group:" msgstr "Inserisci un nome per il nuovo gruppo:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " "list?" -msgstr "" -"Sei sicuro di voler rimuovere il contatto %1 dalla tua lista?" +msgstr "Sei sicuro di voler rimuovere il contatto %1 dalla tua lista?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Rimuovi Contatto" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Rimuovi e Blocca" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" "The group %1 is not empty! First remove all contacts from it, then " "try again!" -msgstr "" -"Il gruppo %1 non è vuoto! Rimuovi tutti i contatti da esso e riprova!" +msgstr "Il gruppo %1 non è vuoto! Rimuovi tutti i contatti da esso e riprova!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Rimozione Gruppo" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1851,24 +1841,24 @@ msgstr "" "Sei sicuro di voler rimuovere il gruppo %1 dalla tua lista " "contatti?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Rimuovi" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Questo è un gruppo speciale, che non può essere modificato." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Rinomina Gruppo" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Inserisci un nuovo nome per questo gruppo:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1878,21 +1868,21 @@ msgstr "" "

    Impossibile effettuare l'accesso automatico con il profilo %1:
    prima devi salvare la password del profilo!

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Accesso Automatico Fallito" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "La connessione potrebbe essere inattiva..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Disconnesso" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1900,7 +1890,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess lo ha cercato nelle seguenti cartelle:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1916,224 +1906,218 @@ msgstr "" "delle cartelle dell'applicazione.

    %1

    Per favore, verifica la tua " "installazione di KMess.

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Errore delle Notifiche" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format -msgctxt "" -"Main window caption: switched order to easily distinguish it from chats" +msgctxt "Main window caption: switched order to easily distinguish it from chats" msgid "KMess - %1" msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Connetti" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Disconnetti" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Mostra il mio &Profilo" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Mostra Cont&atti Autorizzati" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Mostra Contatti N&on in linea" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Mostra Contatti &Rimossi" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Mostra &Box Cronologia" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "Mostra la Barra di &Ricerca" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Mostra Gruppi &Vuoti" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Dimensione Immagini Personali" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Ordina Contatti per" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Mostra Finestra dei &Trasferimenti..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Nuovo &Contatto..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Nuovo &Gruppo..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Esporta Lista Contatti..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Mostra C&ronologia Conversazioni..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Nuovo &Profilo..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Configura Profilo..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Configura &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Mostra &Menu Selezione..." -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Non Mostrare" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Piccole" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Medie" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Grandi" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Gruppo" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "In linea/Non in linea" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Ordinamento misto" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Mostra Fi&nestra di Rete..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Accesso effettuato come %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 si è connesso" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 si è disconnesso" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Cha&t" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "&Rimuovi dal Gruppo" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Copia al Gruppo" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Sposta al Gruppo" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Sposta &Gruppo in basso" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Sposta Gr&uppo in alto" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Ri&muovi Gruppo" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Ri&nomina Gruppo" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Questo contatto non ti ha nella sua lista contatti." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Indirizzo email" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Client" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Sì" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "No" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Bloccato" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Visto l'ultima volta" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Ultimo messaggio" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Gruppo %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2141,7 +2125,7 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 contatto," msgstr[1] "%1 contatti," -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -2149,7 +2133,7 @@ msgid_plural "%1 online" msgstr[0] "%1 in linea" msgstr[1] "%1 in linea" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2157,19 +2141,17 @@ msgid_plural "%1 contacts" msgstr[0] "%1 contatto" msgstr[1] "%1 contatti" -#: kmessview.cpp:1768 -#, fuzzy +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" -msgstr "Clicca qui affinché KMess salvi le tue password" +msgstr "Clicca qui per cambiare il tuo nome personale" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" -msgstr "" +msgstr "[i]Clicca per impostare un messaggio personale[/i]" -#: kmessview.cpp:1829 -#, fuzzy +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2178,16 +2160,15 @@ msgstr "" "Inserisci qui un messaggio da mostrare ai tuoi contatti: essi lo vedranno " "assieme al tuo nome personale" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." -msgstr "" -"Non è stato trovato nessun registro delle conversazioni per questo contatto." +msgstr "Non è stato trovato nessun registro delle conversazioni per questo contatto." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Nessun registro conversazioni trovato" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2197,17 +2178,24 @@ msgstr "" "Nota che le nuove conversazioni non vengono registrate; se desideri che ciò " "venga fatto, puoi abilitarlo nelle impostazioni del profilo." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 nuovo messaggio di posta" msgstr[1] "%1 nuovi messaggi di posta" +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Mostra ai contatti quale canzone stai ascoltando (clicca per disabilitare)" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Mostra ai contatti quale canzone stai ascoltando (clicca per abilitare)" + #: kmessviewdelegate.cpp:290 #, kde-format -msgctxt "" -"Group name in the contact list with online/total contacts of that group" +msgctxt "Group name in the contact list with online/total contacts of that group" msgid "%1 (%2/%3)" msgstr "%1 (%2/%3)" @@ -2222,7 +2210,6 @@ msgid "A Live Messenger client for KDE" msgstr "Un client di Live Messenger per KDE" #: main.cpp:47 -#, fuzzy msgid "" "(c) 2002-2010, Mike K. Bennett\n" "(c) 2005-2010, Diederik van der Boor\n" @@ -2232,13 +2219,13 @@ msgid "" "(c) 2009-2010, Sjors Gielen\n" "(c) 2009-2010, Adam Goossens\n" msgstr "" -"(c) 2002-2009, Mike K. Bennett\n" -"(c) 2005-2009, Diederik van der Boor\n" -"(c) 2007-2009, Valerio Pilo\n" -"(c) 2008-2009, Antonio Nastasi\n" -"(c) 2008-2009, Ruben Vandamme\n" -"(c) 2009, Sjors Gielen\n" -"(c) 2009, Adam Goossens\n" +"(c) 2002-2010, Mike K. Bennett\n" +"(c) 2005-2010, Diederik van der Boor\n" +"(c) 2007-2010, Valerio Pilo\n" +"(c) 2008-2010, Antonio Nastasi\n" +"(c) 2008-2010, Ruben Vandamme\n" +"(c) 2009-2010, Sjors Gielen\n" +"(c) 2009-2010, Adam Goossens\n" #: main.cpp:63 msgid "Developer and project founder" @@ -2387,7 +2374,6 @@ msgid "Sergio Rafael Lemke" msgstr "Sergio Rafael Lemke" #: main.cpp:91 -#, fuzzy msgid "Morris Arozi Moraes" msgstr "Maurício Arozi Moraes" @@ -2594,8 +2580,7 @@ msgid "Andrea Decorte" msgstr "Andrea Decorte" #: main.cpp:131 -msgid "" -"More Italian translation, Group selection in 'contact added user' dialog" +msgid "More Italian translation, Group selection in 'contact added user' dialog" msgstr "" "Ulteriore traduzione italiana, Scelta del gruppo nella finestra di aggiunta " "da parte di un contatto" @@ -2876,67 +2861,72 @@ msgid "Anastasios Bourazanis" msgstr "Anastasios Bourazanis" #: main.cpp:181 -msgid "" -"Emoticon preview in settings page,clickable contact properties dialog text" +msgid "Emoticon preview in settings page,clickable contact properties dialog text" msgstr "" "Anteprima emoticon nelle impostazioni, testo cliccabile nella finestra " "proprietà contatto" #: main.cpp:182 msgid "Internationalization fixes, drag'n'drop of images into display pictures" -msgstr "" +msgstr "Correzioni all'internazionalizzazione, drag'n'drop di immagini sulle immagini personali" #: main.cpp:182 -#, fuzzy msgid "Marco Mentasti" -msgstr "Sarcastico" +msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "Tasto per attivare Ia pubblicazione della canzone in ascolto sopra la lista contatti." + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Ispirazione e parti di codice" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Vecchio codice fumetti di notifica, codice P2P iniziale, gestore " "autenticazione MSN" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Codice tempo di inattività" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Codice per l'immagine alla chiusura in tray" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 -msgid "" -"Custom crash handler implementation, System tray icon overlay implementation" +#: main.cpp:190 +msgid "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Implementazione del gestore dei crash personalizzato e delle sovrapposizioni " "nell'icona del vassoio di sistema" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" @@ -2944,11 +2934,11 @@ msgstr "" "Correzione problema di focus di KNotify e workaround per evitare " "l'appropriazione del focus da parte di KWin" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2956,33 +2946,33 @@ msgstr "" "Sei invitato a inviare le tue correzioni di bug e patch al forum di KMess!\n" "E se pensi che il tuo nome manchi in questa lista, contattaci!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Il tuo nome qui?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Valerio Pilo" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "valerio@kmess.org" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Non mostrare la Lista dei Contatti all'avvio" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Accesso automatico con questo indirizzo email" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Esegue una prova di debugging (solo build per sviluppatori)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3048,8 +3038,7 @@ msgstr "" #: network/applications/filetransfer.cpp:290 #: network/applications/filetransferp2p.cpp:376 #, kde-format -msgid "" -"The transfer of the file "%1" failed. Could not save the file." +msgid "The transfer of the file "%1" failed. Could not save the file." msgstr "" "Il trasferimento del file "%1" non è riuscito. Impossibile salvare " "il file." @@ -3111,16 +3100,13 @@ msgstr "Il file "%1" è stato ricevuto correttamente." #: network/applications/filetransfer.cpp:742 #: network/applications/filetransferp2p.cpp:811 #, kde-format -msgid "" -"The transfer of the file "%1" failed. The file does not exist." -msgstr "" -"Il trasferimento del file "%1" non è riuscito. Il file non esiste." +msgid "The transfer of the file "%1" failed. The file does not exist." +msgstr "Il trasferimento del file "%1" non è riuscito. Il file non esiste." #: network/applications/filetransfer.cpp:747 #: network/applications/filetransferp2p.cpp:816 #, kde-format -msgid "" -"The transfer of the file "%1" failed. The file could not be read." +msgid "The transfer of the file "%1" failed. The file could not be read." msgstr "" "Il trasferimento di "%1" non è riuscito. Il file non può essere " "letto." @@ -3199,8 +3185,7 @@ msgstr "" #: network/applications/mimeapplication.cpp:180 msgid "The invitation was aborted. The switchboard closed the chat connection." -msgstr "" -"Invio dell'invito annullato a causa della chiusura forzata della connessione." +msgstr "Invio dell'invito annullato a causa della chiusura forzata della connessione." #: network/applications/mimeapplication.cpp:186 msgid "The invitation was aborted." @@ -3237,8 +3222,7 @@ msgstr "L'invito è stato annullato. Il messaggio non era per noi." #: network/applications/p2papplication.cpp:1744 #: network/applications/p2papplicationbase.cpp:855 #: network/applications/p2papplicationbase.cpp:935 -msgid "" -"The transfer failed. The contact sent bad data, or KMess does not support it." +msgid "The transfer failed. The contact sent bad data, or KMess does not support it." msgstr "" "Il trasferimento non è riuscito. Sono stati ricevuti dati non validi, oppure " "KMess non lo supporta." @@ -3363,8 +3347,7 @@ msgstr "Invio del file %1" #: network/extra/msnftpconnection.cpp:398 #, kde-format msgid "The transfer of %1 failed. Could not open a local port." -msgstr "" -"Il trasferimento di %1 non è riuscito. Impossibile aprire una porta locale." +msgstr "Il trasferimento di %1 non è riuscito. Impossibile aprire una porta locale." #: network/extra/msnftpconnection.cpp:399 msgid "Could not open a local port." @@ -3484,9 +3467,8 @@ msgid "This group is not empty" msgstr "Questo gruppo non è vuoto" #: network/msnconnection.cpp:454 -#, fuzzy msgid "The group name is too long; it cannot be longer than 61 characters" -msgstr "Il nome del gruppo è troppo lungo; non può essere più lungo di 61 byte" +msgstr "Il nome del gruppo è troppo lungo; non può essere più lungo di 61 caratteri." #: network/msnconnection.cpp:459 msgid "Attempted to change group \"0\"" @@ -3530,8 +3512,7 @@ msgid "Not logged in" msgstr "Non connesso" #: network/msnconnection.cpp:493 -msgctxt "" -"MSN error, due to e.g. trying the beta service without an allowed account" +msgctxt "MSN error, due to e.g. trying the beta service without an allowed account" msgid "This account was denied access to the Live Messenger service" msgstr "A questo profilo è stato negato l'accesso al servizio Live Messenger" @@ -3588,8 +3569,7 @@ msgid "Not accepting new contacts" msgstr "Non accettiamo nuovi contatti" #: network/msnconnection.cpp:559 -msgid "" -"You have a Kids Passport account, you need parental consent to chat online" +msgid "You have a Kids Passport account, you need parental consent to chat online" msgstr "" "Hai un profilo Passport per bambini, devi chiedere il permesso dei tuoi " "genitori per poter conversare in linea" @@ -3615,8 +3595,7 @@ msgstr "" "interno nel server." #: network/msnconnection.cpp:596 -msgid "" -"The Live Messenger service is temporarily unavailable. The server is too busy" +msgid "The Live Messenger service is temporarily unavailable. The server is too busy" msgstr "" "Il servizio MSN è temporaneamente non disponibile. Il server è troppo " "occupato" @@ -3652,8 +3631,7 @@ msgstr "Autenticazione non riuscita" #: network/msnconnection.cpp:635 #, kde-format -msgid "" -"Unknown error code received from the server: %1
    Technical details: %2" +msgid "Unknown error code received from the server: %1
    Technical details: %2" msgstr "" "Ricevuto dal server un codice di errore sconosciuto: %1
    Dettagli " "tecnici: %2" @@ -3668,24 +3646,24 @@ msgstr "Errore MSN %1" msgid "Trying the HTTP fallback..." msgstr "Tentativo di passaggio ad HTTP..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Autenticazione..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Autenticato" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Connessione in corso..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Ricevuto un messaggio di errore sconosciuto dal server: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3693,51 +3671,51 @@ msgid_plural "%1 minutes" msgstr[0] "%1 minuto" msgstr[1] "%1 minuti" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Il server chiude per manutenzione tra %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Il server di Live Messenger chiuderà per manutenzione tra %1." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "KMess non ha potuto gestire i messaggi non in linea.
    Dettagli: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "Il client SOAP non è più valido." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Limite al tempo di autenticazione superato" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "In attesa della lista contatti..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    Avviso: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Avviso MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    Causa dell'errore interno: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." @@ -3746,18 +3724,18 @@ msgstr "" "

    Autenticazione non riuscita, per favore verifica il nome del profilo e la " "password.

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Errore MSN" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    Il profilo %1 si è connesso da un'altra postazione.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3767,7 +3745,7 @@ msgstr "" "

    Sei stato disconnesso: ti sei connesso con il profilo %1 da un " "altro client Messenger, o da un'altra postazione.

    " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3776,7 +3754,7 @@ msgstr "" "

    Impossibile connettersi al servizio Live Messenger.
    Forse devi " "autenticarti prima di poter accedere alla rete?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3793,7 +3771,7 @@ msgstr "" "presso una pagina web o un proxy.

    Clicca qui per " "visitare la pagina di stato del servizio Messenger.

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " @@ -3801,7 +3779,7 @@ msgstr "" "

    Impossibile risolvere l'autenticazione del client
    Forse non hai " "installato i pacchetti qca2 e/o qca2-plugin-ossl?

    " -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " @@ -3812,12 +3790,12 @@ msgstr "" "per far funzionare KMess.
    È anche possibile che la rete MSN non sia " "disponibile al momento.

    " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Impossibile connettersi al servizio Live Messenger.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3832,56 +3810,53 @@ msgstr "" "href='%1'>Clicca qui per visitare la pagina di stato del servizio " "Messenger.

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format -msgctxt "" -"Connection error (Server-reported user error): passive notification message" +msgctxt "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Errore: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Il server Live Messenger ha riportato un errore:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format -msgctxt "" -"Connection error (Server-reported server error): passive notification message" +msgctxt "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Errore Servizio Messenger: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Il server Live Messenger ha riportato un errore:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format -msgctxt "" -"Connection error (Server-reported client error): passive notification message" +msgctxt "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    Errore di KMess: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    KMess ha individuato un errore interno:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Connessione di rete persa.

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    La connessione al server Live Messenger è stata persa.

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3917,67 +3892,66 @@ msgid "Connection time limit exceeded" msgstr "Limite di tempo per la connessione superato" #: network/msnsockettcp.cpp:380 -#, fuzzy, kde-format +#, kde-format msgid "1 ping lost" msgid_plural "%1 pings lost" msgstr[0] "1 ping perso" -msgstr[1] "1 ping perduto" +msgstr[1] "%1 ping persi" #: network/msnsockettcp.cpp:395 msgid "The connection to the server was lost" msgstr "La connessione al server è stata persa" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "L'email specificata, \"%1\", non è un indirizzo email valido!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" "The specified email address, \"%1\", does not belong to a Live Messenger " "account!" -msgstr "" -"L'email specificata, \"%1\", non appartiene ad un profilo di Live Messenger!" +msgstr "L'email specificata, \"%1\", non appartiene ad un profilo di Live Messenger!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Richiesta al servizio web non valida (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Il servizio web non è accessible (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Troppe redirezioni da parte del servizio web" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Il server per i messaggi non in linea non è al momento disponibile" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Il servizio web Live Messenger ha al momento dei problemi" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Risposta non valida dal servizio web %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Nessuna risposta dal servizio web" @@ -4001,8 +3975,7 @@ msgstr "%1 scrive:
    '%2'" #: notification/chatnotification.cpp:180 #, kde-format msgid "%1 has sent you an offline message:
    '%2'" -msgstr "" -"%1 ti ha inviato un messaggio non in linea:
    '%2'" +msgstr "%1 ti ha inviato un messaggio non in linea:
    '%2'" #: notification/chatnotification.cpp:185 #, kde-format @@ -4124,38 +4097,117 @@ msgstr "%1
    è al telefono" msgid "%1
    is out for lunch" msgstr "%1
    è andato a pranzo" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "Un contatto ha cambiato stato" + +#: notification/macnotification.cpp:66 +msgid "You received a new e-mail message" +msgstr "Hai ricevuto un nuovo messaggio di posta" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "Un contatto ti ha inviato un trillo!" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "Un contatto ha iniziato una chat con te" + +#: notification/macnotification.cpp:84 +msgid "A contact messaged you" +msgstr "Un contatto ti ha inviato un messaggio" + +#: notification/macnotification.cpp:90 +msgid "A contact came online" +msgstr "Un contatto si è connesso" + +#: notification/macnotification.cpp:96 +msgid "A contact went offline" +msgstr "Un contatto si è disconnesso" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "Un contatto ha cambiato stato" + +#: notification/macnotification.cpp:107 +msgid "KMess notification" +msgstr "Notifica di KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "Nuova email:
    '%1'
    da '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"

    Chiudere la finestra principale manterrà KMess aperto nel vassoio di " +"sistema.

    Puoi aprire nuovamente KMess cliccando sull'icona dell' " +"uccellino, che sta ora lampeggiando.
    Usa 'Esci' dal menu 'Connetti' " +"per uscire dall'applicazione.

    " + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Riduzione nel vassoio di sistema" + +#: notification/newsystemtraywidget.cpp:205 +#, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Connesso come %1 (%2)" + +#: notification/newsystemtraywidget.cpp:209 +#, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "

    Connesso come:
    %1 (%2)

    " + +#: notification/newsystemtraywidget.cpp:216 +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Non connesso" + +#: notification/newsystemtraywidget.cpp:219 +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Non connesso

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Apri una Chat" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Lascia un Messaggio" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Visualizza Messaggio" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Dettagli" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Leggi Email" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Nascondi" @@ -4168,11 +4220,6 @@ msgstr "" "Chiudere la finestra principale manterrà KMess aperto nel vassoio di " "sistema. Usa 'Esci' dal menu 'Connetti' per uscire dall'applicazione." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Riduzione nel vassoio di sistema" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4180,44 +4227,44 @@ msgid "KMess %1" msgstr "KMess %1" #: notification/systemtraywidget.cpp:254 -#, fuzzy, kde-format +#, kde-format msgctxt "Tray icon tooltip, HTML version" msgid "
    %1 (%2)%3" -msgstr "
    %1 (%2)" +msgstr "
    %1 (%2)%3" #: notification/systemtraywidget.cpp:258 -#, fuzzy, kde-format +#, kde-format msgctxt "Tray icon email count, HTML version" msgid "
    %1 emails" -msgstr "valerio@kmess.org" +msgstr "
    %1 email" #: notification/systemtraywidget.cpp:263 -#, fuzzy, kde-format +#, kde-format msgctxt "Tray icon tooltip, text version" msgid " - %1 (%2)%3" -msgstr "- %1 (%2)" +msgstr "- %1 (%2)%3" #: notification/systemtraywidget.cpp:267 -#, fuzzy, kde-format +#, kde-format msgctxt "Tray icon email count, text version" msgid " - %1 emails" -msgstr "valerio@kmess.org" +msgstr " - %1 email" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Sfoglia..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Sfoglia e Ritaglia Immagine..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Usa Immagine Precedente..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Immagine personale" @@ -4379,9 +4426,9 @@ msgid "Select Directory" msgstr "Seleziona la Cartella" #: utils/inlineeditlabel.cpp:147 -#, fuzzy, kde-format +#, kde-format msgid "The text cannot be longer than %1 characters." -msgstr "Il nome del gruppo è troppo lungo; non può essere più lungo di 61 byte" +msgstr "Il testo non può essere più lungo di %1 caratteri." #: utils/kmess-send/kmesssendplugin.cpp:116 msgid "Send with KMess" @@ -4390,8 +4437,7 @@ msgstr "Invia con KMess" #: utils/kmessconfig.cpp:419 msgctxt "Passive notification message" msgid "

    KMess was unable to access its configuration files!

    " -msgstr "" -"

    KMess non è riuscito ad accedere ai suoi file di configurazione!

    " +msgstr "

    KMess non è riuscito ad accedere ai suoi file di configurazione!

    " #: utils/likeback/likeback.cpp:242 msgid "&Send a Comment to the Developers" @@ -4414,8 +4460,7 @@ msgid "Welcome to %1." msgstr "Benvenuto a %1." #: utils/likeback/likeback.cpp:336 -msgctxt "" -"Welcome dialog text, explanation for both the like and dislike buttons" +msgctxt "Welcome dialog text, explanation for both the like and dislike buttons" msgid "" "Each time you have a great or frustrating experience, please click on the " "appropriate face below the window title-bar, briefly describe what you like " @@ -4465,8 +4510,7 @@ msgstr "Mi piacciono le nuove icone. Molto simpatiche." #: utils/likeback/likeback.cpp:380 msgctxt "Welcome dialog text, usage example" -msgid "" -"I dislike the welcome page of this assistant. Too time consuming." +msgid "I dislike the welcome page of this assistant. Too time consuming." msgstr "" "Non mi piace la pagina di benvenuto di questo assistente. Spreca " "troppo tempo." @@ -4510,8 +4554,7 @@ msgstr "Invia un Commento agli Sviluppatori" #: utils/likeback/likebackdialog.cpp:140 #, kde-format -msgctxt "" -"Feedback dialog text, message with one accepted language for the comments" +msgctxt "Feedback dialog text, message with one accepted language for the comments" msgid "" "Please, write it in %1, or the developers will not be able to read " "your comment!
    You may want to use an online translation " @@ -4532,12 +4575,12 @@ msgid "" "translation tool to translate your message.
    " msgstr "" "Per favore, scrivilo in %1 o %2, o gli sviluppatori non saranno in " -"grado di leggere il tuo commento!
    Potresti voler usare uno strumento online di traduzione per tradurre il tuo messaggio.
    " +"grado di leggere il tuo commento!
    Potresti voler usare uno strumento online di traduzione per tradurre il tuo messaggio.
    " #: utils/likeback/likebackdialog.cpp:168 -msgctxt "" -"Feedback dialog text, message to remind to balance the likes and dislikes" +msgctxt "Feedback dialog text, message to remind to balance the likes and dislikes" msgid "" "To make the comments you send more useful in improving this application, try " "to send the same amount of positive and negative comments.
    " @@ -4570,10 +4613,8 @@ msgstr "" #: utils/likeback/likebackdialog.cpp:225 #, kde-format -msgid "" -"The email address you have entered is not valid, and cannot be used: '%1'" -msgstr "" -"L'indirizzo email che hai inserito non è valido, e non può essere usato: '%1'" +msgid "The email address you have entered is not valid, and cannot be used: '%1'" +msgstr "L'indirizzo email che hai inserito non è valido, e non può essere usato: '%1'" #: utils/likeback/likebackdialog.cpp:299 msgctxt "Dialog box text" @@ -4604,10 +4645,9 @@ msgid "Comment Sending Error" msgstr "Errore Invio Commento" #: rc.cpp:2 -#, fuzzy msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" -msgstr "valerio@kmess.org" +msgstr "Le tue email" #. i18n: file: chat/chatwindow.ui:190 #. i18n: ectx: property (toolTip), widget (QToolButton, textButton_) @@ -4709,8 +4749,7 @@ msgstr "Colore testo" #. i18n: ectx: property (whatsThis), widget (QToolButton, fontColorButton_) #: rc.cpp:56 msgid "Click this button to change the text color of your messages." -msgstr "" -"Clicca questo pulsante per cambiare il colore del testo dei tuoi messaggi." +msgstr "Clicca questo pulsante per cambiare il colore del testo dei tuoi messaggi." #. i18n: file: chat/chatwindow.ui:466 #. i18n: ectx: property (text), widget (QPushButton, newLineButton_) @@ -4789,8 +4828,7 @@ msgstr "Seleziona un file immagine:" #. i18n: file: dialogs/awaymessagedialog.ui:19 #. i18n: ectx: property (whatsThis), widget (QLabel, label) #: rc.cpp:101 -msgid "" -"Enter a message to be automatically sent to people who try to message you." +msgid "Enter a message to be automatically sent to people who try to message you." msgstr "" "Inserisci un messaggio che sarà inviato automaticamente a chi cercherà di " "contattarti." @@ -4868,9 +4906,8 @@ msgstr "" #. i18n: file: dialogs/contactpropertiesdialog.ui:48 #. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) #: rc.cpp:141 -#, fuzzy msgid "Click or Drag&Drop to change the image for this contact" -msgstr "Clicca qui per mostrare il menu per questo contatto" +msgstr "Clicca o trascina qui un'immagine per cambiare l'immagine per questo contatto" #. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) @@ -4918,8 +4955,7 @@ msgstr "&Immagini Personali" #. i18n: ectx: property (toolTip), widget (QPushButton, useButton_) #: rc.cpp:165 msgid "Click here to use the selected picture as your display picture" -msgstr "" -"Clicca qui per usare l'immagine selezionata come tua immagine personale" +msgstr "Clicca qui per usare l'immagine selezionata come tua immagine personale" #. i18n: file: dialogs/contactpropertiesdialog.ui:370 #. i18n: ectx: property (text), widget (QPushButton, useButton_) @@ -5128,10 +5164,8 @@ msgstr "" #. i18n: file: initialview.ui:179 #. i18n: ectx: property (toolTip), widget (KComboBox, handleCombobox_) #: rc.cpp:287 -msgid "" -"Enter here the email address of your registered Passport or Live account" -msgstr "" -"Inserisci qui l'indirizzo email del tuo profilo registrato Passport o Live" +msgid "Enter here the email address of your registered Passport or Live account" +msgstr "Inserisci qui l'indirizzo email del tuo profilo registrato Passport o Live" #. i18n: file: initialview.ui:195 #. i18n: ectx: property (text), widget (QLabel, TextLabel3) @@ -5194,8 +5228,7 @@ msgstr "Accesso automatico" #. i18n: file: initialview.ui:345 #. i18n: ectx: property (toolTip), widget (QPushButton, connectButton_) #: rc.cpp:323 -msgid "" -"Click this button to start using KMess, or to cancel a connection attempt" +msgid "Click this button to start using KMess, or to cancel a connection attempt" msgstr "" "Clicca questo pulsante per iniziare a usare KMess, oppure per annullare 
un tentativo di connessione" @@ -5357,8 +5390,7 @@ msgstr "C&ambia..." #. i18n: ectx: property (toolTip), widget (QCheckBox, noPictureCheckbox_) #: rc.cpp:398 msgid "Enable this option, if you do not want to use a display picture." -msgstr "" -"Abilita questa opzione se non desideri utilizzate un'immagine personale." +msgstr "Abilita questa opzione se non desideri utilizzate un'immagine personale." #. i18n: file: settings/accountpage.ui:261 #. i18n: ectx: property (text), widget (QCheckBox, noPictureCheckbox_) @@ -5514,8 +5546,7 @@ msgstr "Cambia lo s&tato a \"Inattivo\" quando non sei al computer" #. i18n: file: settings/accountpage.ui:582 #. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel2_) #: rc.cpp:466 rc.cpp:472 rc.cpp:475 -msgid "" -"Controls the number of minutes before KMess changes the status to \"Idle\"." +msgid "Controls the number of minutes before KMess changes the status to \"Idle\"." msgstr "" "Controlla il numero di minuti dopo il quale KMess cambierà il tuo stato a " "\"Inattivo\"." @@ -5675,8 +5706,7 @@ msgstr "Salva le conversazioni anche su file" #. i18n: ectx: property (toolTip), widget (QLabel, label_2) #: rc.cpp:541 msgid "With this option, you can choose how KMess will save your chats" -msgstr "" -"Con questa opzione, puoi scegliere in che modo KMess salverà le tue chat" +msgstr "Con questa opzione, puoi scegliere in che modo KMess salverà le tue chat" #. i18n: file: settings/chatloggingpage.ui:54 #. i18n: ectx: property (text), widget (QLabel, label_2) @@ -6129,8 +6159,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, shakeNudgeCheckBox_) #: rc.cpp:728 msgid "Shake the chat &window when a nudge is received or sent" -msgstr "" -"Scuoti la &finestra della conversazione quando ricevi o invii un trillo" +msgstr "Scuoti la &finestra della conversazione quando ricevi o invii un trillo" #. i18n: file: settings/chatstylepage.ui:602 #. i18n: ectx: property (whatsThis), widget (QCheckBox, displayChatUserPictureCheckBox_) @@ -6318,8 +6347,7 @@ msgstr "Browser Web" #. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEBrowserRadio_) #: rc.cpp:833 msgid "Choose this option to use the browser used by the rest of KDE." -msgstr "" -"Seleziona questa opzione per usare il browser utilizzato dal resto di KDE." +msgstr "Seleziona questa opzione per usare il browser utilizzato dal resto di KDE." #. i18n: file: settings/miscellaneouspage.ui:36 #. i18n: ectx: property (text), widget (QRadioButton, useKDEBrowserRadio_) @@ -6333,8 +6361,7 @@ msgstr "&Usa il browser predefinito di KDE" #. i18n: ectx: property (toolTip), widget (QRadioButton, useListedMailClientRadio_) #: rc.cpp:839 rc.cpp:874 msgid "Select this option to choose from a list of installed browsers." -msgstr "" -"Seleziona questa opzione per scegliere da una lista di browser installati." +msgstr "Seleziona questa opzione per scegliere da una lista di browser installati." #. i18n: file: settings/miscellaneouspage.ui:46 #. i18n: ectx: property (text), widget (QRadioButton, useListedBrowserRadio_) @@ -6348,8 +6375,7 @@ msgstr "&Usa un browser installato:" #. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomMailClientRadio_) #: rc.cpp:845 rc.cpp:880 msgid "Choose this option to enter the path to your favorite browser." -msgstr "" -"Seleziona questa opzione per inserire il percorso al tuo browser preferito." +msgstr "Seleziona questa opzione per inserire il percorso al tuo browser preferito." #. i18n: file: settings/miscellaneouspage.ui:83 #. i18n: ectx: property (text), widget (QRadioButton, useCustomBrowserRadio_) @@ -6405,8 +6431,7 @@ msgstr "Usa &Live Mail se il profilo la supporta" #. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEMailClientRadio_) #: rc.cpp:868 msgid "Choose this option to use the email client used by the rest of KDE." -msgstr "" -"Seleziona questa opzione per usare il client di posta usato dal resto di KDE." +msgstr "Seleziona questa opzione per usare il client di posta usato dal resto di KDE." #. i18n: file: settings/miscellaneouspage.ui:170 #. i18n: ectx: property (text), widget (QRadioButton, useKDEMailClientRadio_) @@ -6455,7 +6480,7 @@ msgstr "per i trasferimenti di file" #. i18n: ectx: property (windowTitle), widget (QWidget, InlineEditLabel) #: rc.cpp:912 msgid "InlineEditLabel" -msgstr "" +msgstr "InlineEditLabel" #. i18n: file: utils/likeback/likebackbar.ui:32 #. i18n: ectx: property (toolTip), widget (QToolButton, m_likeButton) @@ -6487,15 +6512,13 @@ msgstr "" #. i18n: ectx: property (toolTip), widget (QToolButton, m_dislikeButton) #: rc.cpp:922 msgid "Click here to tell the developers about something you did not like" -msgstr "" -"Clicca qui per comunicare agli sviluppatori qualcosa che non ti è piaciuto" +msgstr "Clicca qui per comunicare agli sviluppatori qualcosa che non ti è piaciuto" #. i18n: file: utils/likeback/likebackbar.ui:66 #. i18n: ectx: property (toolTip), widget (QToolButton, m_bugButton) #: rc.cpp:929 msgid "Click here to tell the developers about a problem in the application" -msgstr "" -"Clicca qui per comunicare agli sviluppatori un problema dell'applicazione" +msgstr "Clicca qui per comunicare agli sviluppatori un problema dell'applicazione" #. i18n: file: utils/likeback/likebackbar.ui:83 #. i18n: ectx: property (toolTip), widget (QToolButton, m_featureButton) @@ -6565,6 +6588,10 @@ msgstr "" "Il tuo indirizzo email verrà utilizzato solamente per richieste legate a " "questo rapporto." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Questo contatto non ti ha nella sua lista contatti." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Inserisci qui un tuo messaggio personale>" diff --git a/po/ja.po b/po/ja.po index bb4b942..87df244 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,27 +1,26 @@ # Japanese Translation -# by Daniel E. Moctezuma. -# (2009) +# by Daniel E. Moctezuma # # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Daniel E. Moctezuma , 2009. -# eduardo, 2010. +# Daniel E. Moctezuma , 2009, 2010. msgid "" msgstr "" "Project-Id-Version: ja\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" -"PO-Revision-Date: 2010-02-28 11:09-0800\n" -"Last-Translator: eduardo\n" -"Language-Team: Japanese \n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" +"PO-Revision-Date: 2010-07-07 20:43-0700\n" +"Last-Translator: Daniel E. Moctezuma \n" +"Language-Team: 日本語 \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 1.0\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "コンピュータから離れてます" @@ -29,7 +28,7 @@ msgstr "コンピュータから離れてます" msgid "Your name" msgstr "名前" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "you@hotmail.com" @@ -111,13 +110,13 @@ msgid "%1 (This message was sent automatically)" msgstr "%1 (このメッセージは自動的に送信されました)" #: chat/chat.cpp:827 -#, fuzzy, kde-format +#, kde-format msgid "" "KMess could not save the log for this chat:
    The chat logs " "directory, "%1", does not exist." msgstr "" -"KMess はこの会話のチャット・ログを保存できませんでした:
    "%" -"1" のチャット・ログのディレクトリは存在しません。" +"KMess はこの会話のチャット・ログを保存できませんでした:
    "" +"%1" のチャット・ログのディレクトリは存在しません。" #: chat/chat.cpp:969 msgctxt "Message shown in the chat window (when the wink name is unknown)" @@ -289,8 +288,8 @@ msgid "" "%1 has gone offline. Any messages you send will be delivered the next time " "he or she logs in." msgstr "" -"%1 さんはサインアウトしました。メッセージを送信すると、その人は次回のサインイ" -"ン時にメッセージを受け取ります。" +"%1 さんはサインアウトしました。メッセージを送信すると、そのコンタクトは次回の" +"サインイン時にメッセージを受け取ります。" #: chat/chat.cpp:1419 #, kde-format @@ -363,8 +362,8 @@ msgid "" "%1 is currently offline. Any messages you send will be delivered the next " "time he or she logs in." msgstr "" -"%1 さんが現在はオフラインです。メッセージを送信すると、その人は次回のサインイ" -"ン時にメッセージを受け取ります。" +"%1 さんが現在はオフラインです。メッセージを送信すると、そのコンタクトは次回の" +"サインイン時にメッセージを受け取ります。" #: chat/chatmaster.cpp:1316 #, kde-format @@ -404,12 +403,12 @@ msgid "Chat with %1
    Started on: %2" msgstr "%1 と %2 に
    チャットを開始しました" #: chat/chatmessageview.cpp:392 -#, fuzzy, kde-format +#, kde-format msgctxt "" "Header of a single chat saved as plain text chat log: %1 is the chat date " "and time" msgid "Chat started on: %1" -msgstr "%2 にチャットを開始しました" +msgstr "%1 にチャットを開始しました" #: chat/chatmessageview.cpp:432 #, kde-format @@ -477,39 +476,39 @@ msgstr "ファイルを上書き" msgid "Over&write" msgstr "上書き(&W)" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "絵文字を追加(&E)..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "絵文字を隠す(&E)" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "メールを送信(&E)" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "知り合いの追加(&C)" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "メールアドレスをコピー(&E)" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "ブラウザでリンクを開く(&L)" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "アドレスをコピー(&A)" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "チャットをクリアする(&L)" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "ファイルにチャットを保存する(&F)..." @@ -527,15 +526,14 @@ msgid "My Emoticons" msgstr "マイ絵文字" #: chat/chatwindow.cpp:376 -#, fuzzy msgid "" "There are multiple tabs open in this chat window. Do you want to close " "the current tab only, or all tabs?

    Note: You can close all " "tabs at once by pressing Alt+F4." msgstr "" "複数のタブを閉じようとしています。現在のタブまたはすべてのタブを閉じま" -"すか?

    注:Alt+F4を押すと、すべてのタブを閉じることができます。" -"" +"すか?

    注:Alt+F4 を押すと、すべてのタブを閉じることができま" +"す。" #: chat/chatwindow.cpp:380 msgctxt "Dialog box caption: closing a chatwindow with a single tab" @@ -649,8 +647,7 @@ msgstr "フォンとの色(&C)" msgid "C&lear Chat Window" msgstr "チャットウィンドウをクリアする(&L)" -#: chat/chatwindow.cpp:1106 -#, fuzzy +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -660,30 +657,30 @@ msgstr "" "online|away|idle|brb|busy|lunch|phone|invisible です。
    及びこのショー" "トカットを使えます:/online または /phone。" -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "正しくない /status の構文" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "グループチャットでは /block コマンドを使えません。" -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "/block コマンドが使えません" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "グループチャットでは /unblock コマンドを使えません。" -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "/unblock コマンドが使えません" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -692,36 +689,35 @@ msgstr "" "不明な %1 コマンド。メッセージを書きたい場合には他の / を書いて" "ください。" -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "不明なコマンド" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "手書きのメッセージの送信に失敗しました:知り合いはサポートしていません。" -#: chat/chatwindow.cpp:1534 -#, fuzzy +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " "it." -msgstr "%1 さんに手書きのメッセージの送信に失敗しました。" +msgstr "%1 さんに手書きのメッセージの送信に失敗しました:作成中エラーが発生しました。" -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "チャット" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - チャット" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -731,37 +727,37 @@ msgstr "" "メニューバーを隠してもよろしいですか?また表示するために %1 の" "ショートカットを使えます。" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "メニューバーを隠す" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "筆" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "消しゴム" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 さんはメッセージを入力中..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 さんと %2 さんはメッセージを入力中..." -#: chat/chatwindow.cpp:2151 -#, fuzzy, kde-format +#: chat/chatwindow.cpp:2185 +#, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1 さんと %2 さんと %3 さんと他人はメッセージを入力中..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -775,18 +771,18 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "手書きモード" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " "handwritten messages." msgstr "手書きが無効にしています:知り合いに手書きが送信できません。" -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -795,17 +791,17 @@ msgstr "手書きが無効にしています:知り合いに手書きが送信 #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "ウインク" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "ウインクが無効にしています:知り合いにウインクが送信できません。" -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "ウインクが無効にしています:この知り合いにウインクが送信できません。" @@ -814,51 +810,51 @@ msgstr "ウインクが無効にしています:この知り合いにウイン msgid "&Start Private Chat" msgstr "プライベートチャットを開始(&S)" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "メール送信(&S)" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "プロファイルを表示(&V)" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "プロパティ(&P)" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "知り合いの追加(&A)" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "知り合いの許可(&L)" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "知り合いの削除(&D)" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "知り合いの禁止(&B)" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "知り合いの禁止を解除(&U)" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "ニックネーム(&F)" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "個人的なメッセージ(&P)" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "メールアドレス(&E)" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "曲名(&N)" @@ -884,15 +880,15 @@ msgstr "メモ(&N)" msgid "&Emoticons" msgstr "絵文字(&E)" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "コピー(&C)" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "禁止" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -900,17 +896,18 @@ msgctxt "" msgid "The contact is %1" msgstr "知り合いは %1 です" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "表示アイコンのダウンロードに失敗しました" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -939,7 +936,7 @@ msgstr "新規を追加" msgid "Edit" msgstr "編集" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "削除" @@ -995,52 +992,52 @@ msgstr "Windows Live Messenger %1 の互換性" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger の互換性" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "オンライン" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "取り込み中" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "退席中" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "退席中(自動応答)" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "アイドル" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "すぐ戻ります" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "電話中" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "昼食中" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "オフライン" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "オフライン" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "状態(&M)" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "サインアウトする" @@ -1059,7 +1056,7 @@ msgstr "絵文字を編集" #: dialogs/addemoticondialog.cpp:189 msgid "Please, select a valid picture file" -msgstr "" +msgstr "有効なイメージファイルを選択してください。" #: dialogs/addemoticondialog.cpp:199 msgid "Please, enter a text to associate with this emoticon" @@ -1138,16 +1135,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "%1の知り合いのプロパティ" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "サインインしています" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "まだ見たことがありません" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "メッセージなし" @@ -1175,20 +1172,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "クライアンド: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "この知り合いの表示アイコンを使ってもよろしいですか?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "知り合いの画像をコピーする" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Phonon は選択したファイル形式がサポートされていません。" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "サポートされていないファイル形式" @@ -1446,8 +1443,9 @@ msgid "Secret telling" msgstr "ナイショ話" #: emoticontheme.cpp:843 +#, fuzzy msgid "Eye-rolling" -msgstr "" +msgstr "キョロキョロ" #: emoticontheme.cpp:844 msgid "Sarcastic" @@ -1535,7 +1533,7 @@ msgstr "拍手" #: emoticontheme.cpp:865 msgid "Crossed fingers" -msgstr "" +msgstr "交差指" #: emoticontheme.cpp:866 msgid "Auto" @@ -1695,8 +1693,8 @@ msgstr "再接続できません:このアカウントは保存したパスワ #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" "再接続するためにインターネット接続を待っています...
    すぐに" "再接続!" @@ -1739,7 +1737,7 @@ msgstr "有効なメールアドレスを入力してください" #: kmess.cpp:217 #, kde-format msgid "The contact %1 is already in your contact list." -msgstr "%1 の知り合いはあなたのコンタクトリストに既に存在します。" +msgstr "%1 の知り合いはあなたのコンタクトリストに既にいます。" #: kmess.cpp:217 msgid "Contact Information" @@ -1758,7 +1756,7 @@ msgstr "グループの追加" msgid "Enter a name for the new group:" msgstr "新規グループの名前を入力:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1767,28 +1765,30 @@ msgstr "" "コンタクトリストから %1 のコンタクトを削除してもよろしいですか?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "知り合いの削除" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "削除して禁止する" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" "The group %1 is not empty! First remove all contacts from it, then " "try again!" msgstr "" +"%1 のグループは空ではありません!まずそのグループのすべてのコンタクト" +"を削除して、もう一度試してください。" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "グループの削除" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1798,24 +1798,24 @@ msgstr "" "コンタクトリストから %1 のグループを削除してもよろしいですか?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "削除" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "この特別なグループが変更できません。" -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "グループ名を変更" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "新規グループの名前を入力:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1825,30 +1825,29 @@ msgstr "" "

    %1 で自動的に接続できませんでした%1
    まずはパスワードを保存し" "てください!

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "自動ログインに失敗しました" -#: kmess.cpp:1069 -#, fuzzy +#: kmess.cpp:1077 msgid "Connection could be down..." -msgstr "接続はダウンするかもしれません..." +msgstr "接続はダウンしてる可能性があります..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "サインアウトしました" -#: kmess.cpp:1478 -#, fuzzy, kde-format +#: kmess.cpp:1482 +#, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " "gives a list of folders where to search for an application file" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess は以下のフォルダで検索しました:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1863,12 +1862,12 @@ msgstr "" "p>

    必要な 'kmess.notifyrc' ファイルを見つかりませんでした。

    %1

    インス" "トールを検証してください。

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "通知でエラー" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1877,271 +1876,274 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "サインイン(&S)" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "サインアウト(&D)" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "プロファイルを表示(&P)" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "許可された知り合いを表示(&A)" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "オフライン知り合いを表示(&O)" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "削除された知り合いを表示(&R)" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "イベントの履歴を表示(&H)" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "検索バーを表示(&S)" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "空きグループを表示(&G)" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "表示アイコンのサイズ(&D)" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "知り合いのソート(&S)" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "ファイル転送ウィンドウを表示(&T)..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "新規の知り合い(&N)..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "新規のグループ(&G)..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "コンタクトリストをエクスポート(&E)..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "チャット履歴を表示(&H)..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "新規のアカウント(&A)..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "アカウントを設定..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "KMess を設定(&C)..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "セレクションメニューを表示(&M)" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "表示しない" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "小さい" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "中くらい" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "大きい" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "グループ" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "オンライン・オフライン" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "混ぜる" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "ネットワークウィンドウを表示(&N)..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] %2 としてログインしました" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 オンラインです" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 サインアウトしました" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "チャット(&T)" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "グループから削除(&R)" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "グループにコピー(&C)" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "グループに移動(&M)" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "グループは下へ移動(&D)" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "グループは上へ移動(&U)" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "グループを削除(&R)" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "グループ名を変更(&R)" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "あなたはこの人のコンタクトリストに載っていません。" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "メールアドレス" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "クライアント" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "はい" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "いいえ" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "禁止" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "最終オンライン時" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "最終のメッセージ" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "%1 のグループ" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " msgid_plural "%1 contacts, " -msgstr[0] "合計の知り合い:%1、" +msgstr[0] "合計の知り合い:%1人、" -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" msgid_plural "%1 online" -msgstr[0] "オンライン:%1" +msgstr[0] "オンライン:%1人" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" msgid_plural "%1 contacts" -msgstr[0] "%1 知り合い" +msgstr[0] "%1人の知り合い" -#: kmessview.cpp:1768 -#, fuzzy +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" -msgstr "ここをクリックして、パスワードを保存します" +msgstr "ここをクリックして、ニックネームを変更できます。" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]公開する表示メッセージを入力できます[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " "along with your friendly name" msgstr "" +"ここをクリックして、あなたのコンタクトに公開する表示メッセージを入力できま" +"す:ニックネームと一緒に表示します。" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "この知り合いとチャット履歴が見つかりませんでした。" -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "チャット履歴が見つかりませんでした" -#: kmessview.cpp:2015 -#, fuzzy +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " "account settings." msgstr "" -"この知り合いとチャット履歴が見つかりませんでした。新規チャットは保存されてい" -"ません。アカウントの設定で有効にできます。" +"この知り合いのチャット履歴が見つかりませんでした。新規チャットは保存されてい" +"ません。保存したい場合にはアカウントの設定で有効にできます。" -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" -msgstr[0] "%1件の新着メッセージがあります" +msgstr[0] "%1通の新着メッセージがあります" + +#: kmessview.cpp:2254 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "今聴いている曲名を表示することを無効にする。" + +#: kmessview.cpp:2259 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "今聴いている曲名を表示することを有効にする。" #: kmessviewdelegate.cpp:290 #, kde-format @@ -2527,7 +2529,6 @@ msgid "Andrea Decorte" msgstr "Andrea Decorte" #: main.cpp:131 -#, fuzzy msgid "" "More Italian translation, Group selection in 'contact added user' dialog" msgstr "" @@ -2684,7 +2685,6 @@ msgid "Guido Solinas" msgstr "Guido Solinas" #: main.cpp:162 -#, fuzzy msgid "Pictures in contact list code, contact client info, chat font zoom" msgstr "" "コンタクトリストのコードの画像、コンタクトクライアント情報、チャットのフォン" @@ -2727,11 +2727,10 @@ msgid "Matteo Nardi" msgstr "Matteo Nardi" #: main.cpp:168 -#, fuzzy msgid "" "Notifications blocking option, winks disabling option, last message date " "feature" -msgstr "通知のブロック、ウインクの無効、最後のメッセージの日付" +msgstr "通知のブロック、ウインクの無効、最後のメッセージの日付の機能" #: main.cpp:169 msgid "IRC-like commands in the chat window" @@ -2767,7 +2766,7 @@ msgstr "Damien Sandras" #: main.cpp:176 msgid "GnomeMeeting developer" -msgstr "GnomeMeetingの開発者" +msgstr "GnomeMeeting の開発者" #: main.cpp:177 msgid "Guy with a bag over his head" @@ -2820,90 +2819,98 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "アイドルタイマーコード" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "システムトレイアイコンのスクリーンショットのコード" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "カスタムクラッシュハンドラとシステムトレイのオーバーレイの実装" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" msgstr "" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "あなたの名前は?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Daniel E. Moctezuma" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "shinsen27@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "最初にコンタクトリストのウィンドウを表示しません" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "入力したメールアドレスで自動ログイン" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "デバッグテストを実行(開発者ビルドのみ)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -2975,7 +2982,7 @@ msgstr ""%1" のファイル転送に失敗して、保存できませ msgid "" "The transfer of the file "%1" failed. Could not open the " "destination file." -msgstr ""%1" のファイル転送に失敗して、開くことができませんでした。" +msgstr ""%1" のファイル転送に失敗して、開けませんでした。" #: network/applications/filetransfer.cpp:319 msgid "Transfer accepted." @@ -3107,7 +3114,6 @@ msgstr "" "た。" #: network/applications/mimeapplication.cpp:180 -#, fuzzy msgid "The invitation was aborted. The switchboard closed the chat connection." msgstr "招待が中止されました。チャットの接続は配電盤に閉じられました。" @@ -3116,7 +3122,6 @@ msgid "The invitation was aborted." msgstr "招待が中止されました。" #: network/applications/p2papplication.cpp:215 -#, fuzzy msgid "The contact has invited you to an activity not yet supported by KMess." msgstr "知り合いにまだサポートしていない活動に招待されています。" @@ -3139,7 +3144,6 @@ msgid "The transfer failed. Data preparation failed." msgstr "転送に失敗しました。データの準備に失敗しました。" #: network/applications/p2papplication.cpp:1192 -#, fuzzy msgid "The invitation was cancelled. Message was not directed to us." msgstr "招待がキャンセルされました。あなたへのメッセージではありませんでした。" @@ -3182,7 +3186,6 @@ msgstr "" "した。" #: network/applications/p2papplication.cpp:3432 -#, fuzzy msgid "" "The invitation was cancelled. A timeout occurred waiting for a connection to " "succeed or fail." @@ -3214,10 +3217,10 @@ msgstr "転送に失敗しました。内容エラーが発生しました。" #: network/applications/p2papplicationbase.cpp:1210 msgid "The transfer failed. Could not open data source." -msgstr "転送に失敗しました。データソースが開けられません。" +msgstr "転送に失敗しました。データソースが開けませんでした。" #: network/applications/unknownapplication.cpp:53 -#, fuzzy, kde-format +#, kde-format msgid "The contact is inviting you for '%1', but this is not implemented yet." msgstr "知り合いは '%1' にあなたを招待していますがまだ実装されていません。" @@ -3263,11 +3266,11 @@ msgstr "%1 のファイルを送信しています" #: network/extra/msnftpconnection.cpp:398 #, kde-format msgid "The transfer of %1 failed. Could not open a local port." -msgstr "%1 のファイル転送に失敗しました。ロカールポートが開けられません。" +msgstr "%1 のファイル転送に失敗しました。ロカールポートが開けませんでした。" #: network/extra/msnftpconnection.cpp:399 msgid "Could not open a local port." -msgstr "ローカルポートを開くことができませんでした。" +msgstr "ローカルポートを開けませんでした。" #: network/extra/msnftpconnection.cpp:456 msgid "Initiating file transfer" @@ -3353,7 +3356,6 @@ msgid "" msgstr "グループ名はコンタクトリストに既にあります。他の名前を入力してください。" #: network/msnconnection.cpp:437 -#, fuzzy msgid "" "Your contact list has too many groups; you are allowed to only have at most " "30" @@ -3372,13 +3374,12 @@ msgid "This group is not empty" msgstr "グループは空きではありません" #: network/msnconnection.cpp:454 -#, fuzzy msgid "The group name is too long; it cannot be longer than 61 characters" -msgstr "グループ名は長すぎます。61 バイトを超えられません。" +msgstr "グループ名は長すぎます。61文字を超えられません。" #: network/msnconnection.cpp:459 msgid "Attempted to change group \"0\"" -msgstr "" +msgstr "\"0\" のグループを変更して試しました。" #: network/msnconnection.cpp:459 #, kde-format @@ -3433,7 +3434,7 @@ msgstr "あなたのアカウントは禁止されています" #: network/msnconnection.cpp:505 msgid "Challenge response failed" -msgstr "" +msgstr "チャレンジレスポンスに失敗しました" #: network/msnconnection.cpp:510 msgid "Bad command data" @@ -3468,9 +3469,8 @@ msgid "Authentication ticket was incorrect" msgstr "認証チケットが間違っています。" #: network/msnconnection.cpp:551 -#, fuzzy msgid "You cannot start a chat with someone while you are invisible" -msgstr "潜伏中で誰もとチャットできません" +msgstr "潜伏中誰かとチャットを開始することができません。" #: network/msnconnection.cpp:555 msgid "Not accepting new contacts" @@ -3491,7 +3491,7 @@ msgstr "不良 USR チケット" #: network/msnconnection.cpp:576 msgid "Error accessing contact list, try again later" -msgstr "" +msgstr "コンタクトリストにアクセスできませんでした。後でもう一度試してください。" #: network/msnconnection.cpp:585 msgid "" @@ -3509,17 +3509,14 @@ msgstr "" "に混み合っています。" #: network/msnconnection.cpp:600 -#, fuzzy msgid "Peer notification server down" msgstr "ピア通知のサーバはダウンしています" #: network/msnconnection.cpp:604 -#, fuzzy msgid "The server is going down" msgstr "サーバがダウンしています" #: network/msnconnection.cpp:608 -#, fuzzy msgid "The server is going down soon" msgstr "サーバがすぐにダウンしています" @@ -3544,7 +3541,7 @@ msgstr "認証に失敗しました" #, kde-format msgid "" "Unknown error code received from the server: %1
    Technical details: %2" -msgstr "" +msgstr "サーバから不明なコードが受信しました:%1
    詳細: %2" #: network/msnconnection.cpp:657 #, kde-format @@ -3556,94 +3553,93 @@ msgstr "MSN エラー %1" msgid "Trying the HTTP fallback..." msgstr "HTTP のフォールバック中..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "認証中..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "認証しました" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "サインインしています..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "サーバから不明なコマンドが受信しました:%1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" msgid_plural "%1 minutes" msgstr[0] "%1 分" -#: network/msnnotificationconnection.cpp:2236 -#, fuzzy, kde-format +#: network/msnnotificationconnection.cpp:2255 +#, kde-format msgid "Server closes for maintenance in %1!" -msgstr "%1でサーバーメはンテナンスのために終了します!" +msgstr "%1でサーバーはメンテナンスのために終了します!" -#: network/msnnotificationconnection.cpp:2241 -#, fuzzy, kde-format +#: network/msnnotificationconnection.cpp:2260 +#, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "%1で Live Messenger サーバーはメンテナンスのために終了します。" -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "KMess はオフラインのメッセージを処理できませんでした。
    詳細:%1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP クライアントもう無効です。" -#: network/msnnotificationconnection.cpp:2721 -#, fuzzy +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "認証時間の上限が超えました" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "コンタクトリストを待っています..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    警告: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN 警告" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "
    内部エラーの理由: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." "

    " msgstr "

    認証に失敗しました。アカウントとパスワードを検証してください。

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN エラー" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    %1 のアカウントは他の場所にサインインしました。

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3653,17 +3649,16 @@ msgstr "" "

    サーバから切断されました:他の場所またはメッセンジャークライアントから " "%1 としてサインインしました。

    " -#: network/msnnotificationconnection.cpp:3111 -#, fuzzy +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " "authenticate before you can access the network?

    " msgstr "" -"

    Live Messengerサービスに接続できませんでした。
    ネットワークにアクセス" -"する前に確認が必要があるのを行ってください。

    " +"

    Live Messenger サービスに接続できませんでした。
    ネットワークにアクセス" +"する前に認証するが必要可能性があります。

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3680,25 +3675,25 @@ msgstr "" "ンジャーサービスのステータスのウェブサイトを知るためにここにク" "リック。

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " msgstr "" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " "possible that the MSN network is unavailable at the moment.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Live Messengerサービスに接続できませんでした。

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3708,64 +3703,64 @@ msgid "" "Messenger service status page.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    エラー: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messengerのサーバがエラーを報告しました:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    メッセンジャーサービスのエラー: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messengerのサーバがエラーを報告しました:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    KMess エラー: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    KMess は内容エラーが検出されました:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    ネットワーク接続が失われました。

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    Live Messenger サーバへの接続が失われました。

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" "

    Developer info:
    Error number: %1
    Error string: %2

    " msgstr "" -"

    開発者情報:
    エラー番号: %1
    エラー文字列: %" -"2

    " +"

    開発者情報:
    エラー番号: %1
    エラー文字列: " +"%2

    " #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3789,7 +3784,6 @@ msgstr "" "i> %5" #: network/msnsockettcp.cpp:366 -#, fuzzy msgid "Connection time limit exceeded" msgstr "接続時間の上限を超えました" @@ -3803,13 +3797,13 @@ msgstr[0] "%1つの pings が失われました" msgid "The connection to the server was lost" msgstr "サーバへの接続が失われました" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "入力したメールアドレス \"%1\" は無効です。" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3817,42 +3811,42 @@ msgid "" "account!" msgstr "入力したメールアドレス \"%1\" は、Live Messengerのアカウントに属しません!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "無効なウェブサービスリクエスト(%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "ウェブサービスにアクセスできません (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Web サービスの多すぎますリダイレクト。" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "オフラインのメッセージのウェブサービスは使用可能ではありません。" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messenger ウェブサービスは問題があります" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "無効なウェブサービスの応答 %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "ウェブサービスから応答がありません" @@ -4000,38 +3994,116 @@ msgstr "%1
    さんが電話中です。" msgid "%1
    is out for lunch" msgstr "%1
    さんが昼食中です。" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "知り合いの状態が変更しました" + +#: notification/macnotification.cpp:66 +msgid "You received a new e-mail message" +msgstr "%1通の新着メールが届きました" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "知り合いがシェイクを送信しました!" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "知り合いはあなたとチャットを開始しました" + +#: notification/macnotification.cpp:84 +msgid "A contact messaged you" +msgstr "知り合いからメッセージを受信しました" + +#: notification/macnotification.cpp:90 +msgid "A contact came online" +msgstr "知り合いがオンラインになりました" + +#: notification/macnotification.cpp:96 +msgid "A contact went offline" +msgstr "知り合いがオンラインになりました" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "知り合いの状態が変更しました" + +#: notification/macnotification.cpp:107 +msgid "KMess notification" +msgstr "KMess の通知" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "新規メール:
    '%1'
    '%2' さんがから" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"メインウィンドウを閉じても KMess はシステムトレイで実行し続けます。終了するに" +"は「接続」メニューから「終了」を選択してください。" + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "システムトレイにドッキング" + +#: notification/newsystemtraywidget.cpp:205 +#, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "%1 (%2)としてサインインしました" + +#: notification/newsystemtraywidget.cpp:209 +#, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "

    %1 (%2)
    としてサインインしました。

    " + +#: notification/newsystemtraywidget.cpp:216 +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "サインインしていません" + +#: notification/newsystemtraywidget.cpp:219 +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    サインインしていません

    " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "チャットを開始" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "メッセージを残す" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "メッセージを表示" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "詳細" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "電子メールを読む" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "隠す" @@ -4041,11 +4113,8 @@ msgid "" "Closing the main window will keep KMess running in the system tray. Use " "'Quit' from the 'Connect' menu to quit the application." msgstr "" - -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "システムトレイにドッキング" +"メインウィンドウを閉じても KMess はシステムトレイで実行し続けます。終了するに" +"は「接続」メニューから「終了」を選択してください。" #: notification/systemtraywidget.cpp:248 #, kde-format @@ -4060,10 +4129,10 @@ msgid "
    %1 (%2)%3" msgstr "
    %1 (%2)%3" #: notification/systemtraywidget.cpp:258 -#, fuzzy, kde-format +#, kde-format msgctxt "Tray icon email count, HTML version" msgid "
    %1 emails" -msgstr "shinsen27@gmail.com" +msgstr "
    %1通のメール" #: notification/systemtraywidget.cpp:263 #, kde-format @@ -4075,23 +4144,23 @@ msgstr " - %1 (%2)%3" #, kde-format msgctxt "Tray icon email count, text version" msgid " - %1 emails" -msgstr " - %1 メール" +msgstr " - %1通のメール" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "参照..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "画像の参照と切り抜く..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "前の表示アイコンをセットする..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "表示アイコン" @@ -4122,7 +4191,6 @@ msgid "Chat Logging" msgstr "チャット履歴" #: settings/accountsettingsdialog.cpp:155 -#, fuzzy msgctxt "Button tooltip text" msgid "" "Click here to delete this account from the list of registered accounts.\n" @@ -4130,7 +4198,8 @@ msgid "" "will be deleted when you disconnect." msgstr "" "ここをクリックして、登録したアカウントリストからアカウントを削除します。\n" -"現在接続しているアカウントとゲストアカウントを削除できません。" +"現在接続しているアカウントとゲストアカウントを削除できなくて、サインアウトす" +"るときに削除します。" #: settings/accountsettingsdialog.cpp:207 #, kde-format @@ -4244,9 +4313,9 @@ msgid "Select Directory" msgstr "ファイルディレクトリを選択" #: utils/inlineeditlabel.cpp:147 -#, fuzzy, kde-format +#, kde-format msgid "The text cannot be longer than %1 characters." -msgstr "グループ名は長すぎます。61 バイトを超えられません。" +msgstr "テキストは %1 文字を超えられません。" #: utils/kmess-send/kmesssendplugin.cpp:116 msgid "Send with KMess" @@ -4354,17 +4423,19 @@ msgid "Send a Comment to the Developers" msgstr "開発者にコメントを送信" #: utils/likeback/likebackdialog.cpp:140 -#, fuzzy, kde-format +#, kde-format msgctxt "" "Feedback dialog text, message with one accepted language for the comments" msgid "" "Please, write it in %1, or the developers will not be able to read " "your comment!
    You may want to use an online translation " "tool to translate your message.
    " -msgstr "%1で書いてください(翻訳機経由もできます)。
    " +msgstr "" +"メッセージを%1で書いてください、または開発者はあなたのコメントを読むこ" +"とができません。
    翻訳機経由でもできます)。
    " #: utils/likeback/likebackdialog.cpp:152 -#, fuzzy, kde-format +#, kde-format msgctxt "" "Feedback dialog text, message with list of accepted languages for the " "comments" @@ -4373,8 +4444,8 @@ msgid "" "read your comment!
    You may want to use an online " "translation tool to translate your message.
    " msgstr "" -"%1か%2で書いてください(翻訳機経由もできます)。" -"
    " +"メッセージを%1か%2で書いてください(翻訳機経由でも" +"できます)。
    " #: utils/likeback/likebackdialog.cpp:168 msgctxt "" @@ -4383,9 +4454,10 @@ msgid "" "To make the comments you send more useful in improving this application, try " "to send the same amount of positive and negative comments.
    " msgstr "" +"このアプリケーションを改善するためにコメントを正負の同量を送信してみてくださ" +"い。
    " #: utils/likeback/likebackdialog.cpp:177 -#, fuzzy msgctxt "Feedback dialog text, text to disallow feature requests" msgid "" "Please, do not ask for new features: this kind of request will be ignored." @@ -4401,7 +4473,7 @@ msgctxt "" msgid "" "

    You can provide the developers a brief description of your opinions about " "%1.
    %2 %3%4

    " -msgstr "

    開発者に%1について意見を説明できます。
    %2 %3%4

    " +msgstr "

    開発者に %1 について意見を説明できます。
    %2 %3%4

    " #: utils/likeback/likebackdialog.cpp:225 #, kde-format @@ -4429,6 +4501,8 @@ msgid "" "

    There has been an error while trying to send the comment.

    Please, " "try again later.

    " msgstr "" +"

    コメントを送信中にエラーが発生しました。

    後でもう一度試してくださ" +"い。

    " #: utils/likeback/likebackdialog.cpp:315 msgctxt "Dialog box title" @@ -4473,6 +4547,8 @@ msgid "" "Click this button to show all default Live Messenger emoticons, so you can " "easily insert them in your messages." msgstr "" +"このボタンをクリックして、すべての既定の Live Messenger アイコンを表示しま" +"す。" #. i18n: file: chat/chatwindow.ui:257 #. i18n: ectx: property (toolTip), widget (QToolButton, customEmoticonButton_) @@ -4615,7 +4691,7 @@ msgstr "イメージファイルを選択:" #: rc.cpp:101 msgid "" "Enter a message to be automatically sent to people who try to message you." -msgstr "" +msgstr "あなたに連絡してる人に送信する自動的なメッセージを入力してください。" #. i18n: file: dialogs/awaymessagedialog.ui:22 #. i18n: ectx: property (text), widget (QLabel, label) @@ -4650,6 +4726,7 @@ msgstr "日付によってフィルタする(&D)" #. i18n: file: dialogs/chathistorydialog.ui:167 #. i18n: ectx: property (text), widget (QCheckBox, fromBox_) #: rc.cpp:120 +#, fuzzy msgid "from" msgstr "から" @@ -4658,13 +4735,14 @@ msgstr "から" #: rc.cpp:123 #, fuzzy msgid "to" -msgstr "に" +msgstr "まで" #. i18n: file: dialogs/contactaddeduserdialog.ui:52 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: rc.cpp:126 +#, fuzzy msgid "What would you like to do?" -msgstr "" +msgstr "何をしたいんですか?" #. i18n: file: dialogs/contactaddeduserdialog.ui:58 #. i18n: ectx: property (text), widget (QRadioButton, addContactOption_) @@ -4689,9 +4767,10 @@ msgstr "禁止して、あなたの状態を知ることができるのを許可 #. i18n: file: dialogs/contactpropertiesdialog.ui:48 #. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) #: rc.cpp:141 -#, fuzzy msgid "Click or Drag&Drop to change the image for this contact" -msgstr "ここをクリックして、知り合いのメニューを表示します" +msgstr "" +"ここをクリックしてまたはドラッグ&ドロップをして、知り合いの表示アイコンを変" +"更できます。" #. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) @@ -4761,6 +4840,9 @@ msgid "" "right-click on a received emoticon and choose \"Hide this Emoticon\". With " "this page, you can restore the hidden emoticons." msgstr "" +"このコンタクトから受信した絵文字を隠すことができます。隠すために受信し" +"た絵文字に右クリックをして、「絵文字を隠す」をクリックしてください。ここで隠" +"した絵文字を復元できます。" #. i18n: file: dialogs/contactpropertiesdialog.ui:477 #. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) @@ -4969,9 +5051,8 @@ msgstr "次の状態でサインイン:" #. i18n: file: initialview.ui:243 #. i18n: ectx: property (toolTip), widget (QComboBox, initialStatus_) #: rc.cpp:299 -#, fuzzy msgid "Choose a status to set when successfully connected." -msgstr "正常に接続とき、状態を選択。" +msgstr "接続に成功したとき、状態を選択。" #. i18n: file: initialview.ui:269 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberAccountCheckBox_) @@ -5010,7 +5091,7 @@ msgstr "自動的にサインイン" #: rc.cpp:323 msgid "" "Click this button to start using KMess, or to cancel a connection attempt" -msgstr "" +msgstr "このボタンをクリックして、KMess を使用するまたは接続の試しをキャンセルする。" #. i18n: file: initialview.ui:444 #. i18n: ectx: property (text), widget (KUrlLabel, newAccountLabel_) @@ -5222,6 +5303,8 @@ msgid "" "You need to connect to the Passport site to confirm that your email address " "exists." msgstr "" +"メールアドレスは存在してることを確認するために Passport サイトを接続するのは" +"必要です。" #. i18n: file: settings/accountpage.ui:378 #. i18n: ectx: property (text), widget (QLabel, verifyLabel_) @@ -5304,10 +5387,9 @@ msgstr "アクティブではないときに\"アイドル\"に状態を変更(& #. i18n: file: settings/accountpage.ui:582 #. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel2_) #: rc.cpp:466 rc.cpp:472 rc.cpp:475 -#, fuzzy msgid "" "Controls the number of minutes before KMess changes the status to \"Idle\"." -msgstr "アイドルになる前の数分をコントロールできます。" +msgstr "アイドルになる前の分の数をコントロールできます。" # This string should be translated as a single whitespace. Please don't erase it. #. i18n: file: settings/accountpage.ui:559 @@ -5349,7 +5431,7 @@ msgstr "有効にすると、状態は\"取り込み中\"になるときに通 #. i18n: ectx: property (text), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) #: rc.cpp:490 msgid "&Disable notifications when your status is set to \"Busy\"" -msgstr "\"取り込み中\"の場合には通知を表示しません(&D)" +msgstr "\"取り込み中\" の場合には通知を表示しません(&D)" #. i18n: file: settings/accountsmanagerpage.ui:26 #. i18n: ectx: property (text), widget (QLabel, textLabel1) @@ -5364,6 +5446,8 @@ msgid "" "Click here to create a new KMess account for an email already associated to " "a Live account" msgstr "" +"ここをクリックして、既に Live アカウントに関連付けてるメールアドレスの新規 " +"KMess アカウントを作成できます。" #. i18n: file: settings/accountsmanagerpage.ui:79 #. i18n: ectx: property (text), widget (QPushButton, addAccountButton_) @@ -5502,7 +5586,7 @@ msgstr "チャット履歴の分類:" #. i18n: ectx: property (toolTip), widget (QRadioButton, yearRadioButton_) #: rc.cpp:569 msgid "Create a directory to organize chats by year" -msgstr "" +msgstr "年間で並べ替えするディレクトリを作成します。" #. i18n: file: settings/chatloggingpage.ui:163 #. i18n: ectx: property (whatsThis), widget (QRadioButton, yearRadioButton_) @@ -5528,7 +5612,7 @@ msgstr "年" #. i18n: ectx: property (toolTip), widget (QRadioButton, monthRadioButton_) #: rc.cpp:582 msgid "Create directories to organize chats by year then by month" -msgstr "" +msgstr "チャットを月で並べ替えするためにディレクトリを作成します。" #. i18n: file: settings/chatloggingpage.ui:188 #. i18n: ectx: property (whatsThis), widget (QRadioButton, monthRadioButton_) @@ -5555,7 +5639,7 @@ msgstr "年と月" #. i18n: ectx: property (toolTip), widget (QRadioButton, dayRadioButton_) #: rc.cpp:594 msgid "Create directories to organize chats by year, by month, then by day" -msgstr "" +msgstr "チャットを年、月、日で並べ替えするためにディレクトリを作成します。" #. i18n: file: settings/chatloggingpage.ui:211 #. i18n: ectx: property (whatsThis), widget (QRadioButton, dayRadioButton_) @@ -5633,7 +5717,7 @@ msgstr "スタイル(&Y)" #. i18n: ectx: property (whatsThis), widget (QLabel, textLabel1) #: rc.cpp:634 msgid "Allows you to change the theme KMess uses to display all chat messages." -msgstr "" +msgstr "KMess のチャットメッセージが使ってるテーマを変更できます。" #. i18n: file: settings/chatstylepage.ui:41 #. i18n: ectx: property (text), widget (QLabel, textLabel1) @@ -5843,7 +5927,6 @@ msgstr "同じウィンドウでチャットをグループ化する(&R):" #. i18n: file: settings/chatstylepage.ui:650 #. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) #: rc.cpp:743 -#, fuzzy msgid "Always" msgstr "いつも" @@ -5856,9 +5939,8 @@ msgstr "同じグループの知り合い" #. i18n: file: settings/chatstylepage.ui:660 #. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) #: rc.cpp:749 -#, fuzzy msgid "Never" -msgstr "しない" +msgstr "グループしない" #. i18n: file: settings/contactlistpage.ui:17 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) @@ -5874,6 +5956,8 @@ msgid "" "your inbox. The number of unread email messages is shown above the contact " "list. This option is only available for Live Mail accounts." msgstr "" +"有効したら、メールを受信したときに通知を表示して、コンタクトリストの上に未読" +"メールの数を表示します。このオプションは Live Mail のアカウントだけ使えます。" #. i18n: file: settings/contactlistpage.ui:26 #. i18n: ectx: property (text), widget (QCheckBox, showEmailInfoCheckBox_) @@ -6068,6 +6152,8 @@ msgid "" "Check this box to use the Live Mail webmail site when you connect with " "accounts compatible with Live Mail." msgstr "" +"このボックスをチェックして、Live Mail 互換性のアカウントに接続するとき、Live " +"Mail ウェブメールサイトを使えます。" #. i18n: file: settings/miscellaneouspage.ui:160 #. i18n: ectx: property (text), widget (QCheckBox, useLiveMailCheckbox_) @@ -6151,6 +6237,9 @@ msgid "" "checkbox in the Help menu.\n" " " msgstr "" +"このアイコンをクリックして、開発者にフォードバックを送信できます。「ヘ" +"ルプ」のメニューで「フィードバックアイコン」を無効できます。\n" +" " #. i18n: file: utils/likeback/likebackbar.ui:49 #. i18n: ectx: property (toolTip), widget (QToolButton, m_dislikeButton) @@ -6224,6 +6313,13 @@ msgid "" "Your email address will not be used for anything else but this report." msgstr "" +"メールアドレスを入力したら、開発者はコメントについてもっと情報を尋ね" +"て、いつ尋ねた機能を実装することについて返信できます。
    \n" +"あなたのメールアドレスはこのレポーを返信するために使います。" + +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "あなたはこの人のコンタクトリストに載っていません。" #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" diff --git a/po/kmess.pot b/po/kmess.pot index 2cdb14d..e16b0c1 100644 --- a/po/kmess.pot +++ b/po/kmess.pot @@ -7,16 +7,17 @@ msgid "" msgstr "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" - "POT-Creation-Date: 2010-02-25 15:16+0100\n" + "POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" + "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "" @@ -24,7 +25,7 @@ msgstr "" msgid "Your name" msgstr "" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "" @@ -407,39 +408,39 @@ msgstr "" msgid "Over&write" msgstr "" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "" @@ -574,108 +575,108 @@ msgstr "" msgid "C&lear Chat Window" msgstr "" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "You used an incorrect syntax for the /status command. The " "correct syntax is: /status online|away|idle|brb|busy|lunch|phone|" "invisible.
    You can also use shortcuts like /online or " "/phone." msgstr "" -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, possible-kde-format msgid "Unknown command %1. If you did not want this message to " "be a command, prepend your message with another /." msgstr "" -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support " "it." msgstr "" -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: an error has occurred while " "creating it." msgstr "" -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, possible-kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, possible-kde-format msgctxt "Question dialog box message" msgid "Are you sure you want to hide the menu bar? You will be able " "to show it again by using this keyboard shortcut: %1" msgstr "" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, possible-kde-format msgid "%1 is typing..." msgstr "" -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, possible-kde-format msgid "%1 and %2 are typing..." msgstr "" -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, possible-kde-format msgid "%1, %2 and %3 others are typing..." msgstr "" -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, possible-kde-format msgctxt "Tool tip for chat tabs" msgid "

    Chat Info

    Contacts:
    Chat started on:
    %2
    Connected with " "account:
    %3
    " msgstr "" -"

    Info da Conversa

    Contatos:
    • %1
    Conversa iniciou:
    %2
    Conectado " +"

    Info da conversa

    Contatos:
    • %1
    Conversa iniciou:
    %2
    Autenticado " "como:
    %3
    " #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) #: chat/chatwindow.cpp:2774 rc.cpp:11 msgid "Handwriting mode" -msgstr "Modo de manual" +msgstr "Modo desenho" #: chat/chatwindow.cpp:2783 msgctxt "Label text" @@ -822,56 +822,56 @@ msgstr "" #: chat/contactframe.cpp:354 msgid "&Start Private Chat" -msgstr "Iniciar Conver&sa Privada" +msgstr "Iniciar conver&sa privada" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:704 msgid "&Send Email" -msgstr "Enviar E-mail" +msgstr "Enviar e-mail" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:705 msgid "&View Profile" -msgstr "&Ver Perfil" +msgstr "&Ver perfil" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:707 msgid "&Properties" msgstr "&Propriedades" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:709 msgid "&Add Contact" -msgstr "&Adicionar Contato" +msgstr "&Adicionar contato" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:710 msgid "A&llow Contact" -msgstr "Permitir Contato" +msgstr "Permitir contato" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:713 msgid "&Delete Contact" -msgstr "&Remover Contato" +msgstr "&Remover contato" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:711 msgid "&Block Contact" -msgstr "&Bloquear Contato" +msgstr "&Bloquear contato" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:712 msgid "&Unblock Contact" -msgstr "&Desbloquear Contato" +msgstr "&Desbloquear contato" # friendly name = nome de exibição; -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:716 msgid "&Friendly Name" msgstr "Nome de exibição" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:717 msgid "&Personal Message" -msgstr "&Mensagem Pessoal" +msgstr "&Mensagem pessoal" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:718 msgid "&Email Address" -msgstr "&Endereço de E-mail" +msgstr "&Endereço de e-mail" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:719 msgid "Song &Name" -msgstr "&Nome da Música" +msgstr "&Nome da música" #. i18n: file: dialogs/contactpropertiesdialog.ui:24 #. i18n: ectx: attribute (title), widget (QWidget, tab) @@ -881,7 +881,7 @@ msgstr "&Informação" #: chat/contactframe.cpp:373 msgid "Display Pictures" -msgstr "Imagens de Exibição" +msgstr "Imagens de exibição" #. i18n: file: dialogs/contactpropertiesdialog.ui:387 #. i18n: ectx: attribute (title), widget (QWidget, tab_3) @@ -895,7 +895,7 @@ msgstr "&Notas" msgid "&Emoticons" msgstr "&Emoticons" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:754 msgid "&Copy" msgstr "&Copiar" @@ -911,17 +911,17 @@ msgctxt "" msgid "The contact is %1" msgstr "O contato está %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:538 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" -msgstr "Baixar imagem do contato falhou" +msgstr "Falha ao carregar imagem do contato" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:538 +#: kmessview.cpp:575 main.cpp:43 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:573 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -940,17 +940,17 @@ msgstr "" #: chat/emoticonswidget.cpp:439 msgid "Add to Chat" -msgstr "Adicionar a Conversa" +msgstr "Adicionar à conversa" #: chat/emoticonswidget.cpp:440 msgid "Add New" -msgstr "Adicionar Novo" +msgstr "Adicionar novo" #: chat/emoticonswidget.cpp:441 msgid "Edit" msgstr "Editar" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Remover" @@ -1007,15 +1007,15 @@ msgid "Windows Live Messenger compatible" msgstr "Compatível com Windows Live Messenger" #: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" -msgstr "Online" +msgstr "Conectado" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Ocupado" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Ausente" @@ -1027,29 +1027,29 @@ msgstr "Ausente com auto-resposta" msgid "Idle" msgstr "Inativo" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" -msgstr "Volto Logo" +msgstr "Volto logo" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "No telefone" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Saiu para Comer" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Invisível" #: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 msgid "Offline" -msgstr "Offline" +msgstr "Desconectado" #: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 msgid "&My Status" -msgstr "&Meu Status" +msgstr "&Meu status" #: contact/msnstatus.cpp:218 msgctxt "Menu action name" @@ -1058,15 +1058,15 @@ msgstr "Desconectar" #: dialogs/addcontactdialog.cpp:49 msgid "Add a Contact" -msgstr "Adicionar um Contato" +msgstr "Adicionar um contato" #: dialogs/addemoticondialog.cpp:61 dialogs/addemoticondialog.cpp:304 msgid "Add New Emoticon" -msgstr "Adicionar Novo Emoticon" +msgstr "Adicionar novo emoticon" #: dialogs/addemoticondialog.cpp:131 msgid "Edit Emoticon" -msgstr "Editar Emoticon" +msgstr "Editar emoticon" #: dialogs/addemoticondialog.cpp:189 msgid "Please, select a valid picture file" @@ -1083,9 +1083,8 @@ msgid "" "brackets with text within (like [b] or [color], which can be text formatting " "options)" msgstr "" -"Atalhos não devem:
    • ter mais de 7 letras,
    • começar com " -"\"/\" (eles iriam interferir com comandos estilo irc),
    • conter " -"colchetes " +"Atalhos não devem:
      • ter mais de 7 letras,
      • começar com \"/" +"\" (eles iriam interferir com comandos estilo irc),
      • conter colchetes " "com texto (como [b] ou [color], que indicam formatação de texto
      " #: dialogs/addemoticondialog.cpp:303 @@ -1095,12 +1094,12 @@ msgstr "O Emoticon \"%1\" já existe. Você gostaria de substituí-lo?" #: dialogs/awaymessagedialog.cpp:37 msgid "Automatic Away Message" -msgstr "Mensagem de Ausente Automática" +msgstr "Mensagem de ausente automática" #: dialogs/chathistorydialog.cpp:69 msgctxt "Dialog window title" msgid "Chat History" -msgstr "Histórico da Conversa" +msgstr "Histórico da conversa" #: dialogs/chathistorydialog.cpp:305 #, kde-format @@ -1157,16 +1156,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Propriedades do contato %1" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1306 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Conectado" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1312 msgid "Not seen yet" msgstr "Não visto ainda" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1329 msgid "No messages yet" msgstr "Nenhuma mensagem ainda" @@ -1194,33 +1193,33 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Cliente: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "" "Você tem certeza de que deseja utilizar a imagem de exibição deste contato?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" -msgstr "Lista de Contatos" +msgstr "Lista de contatos" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "O tipo de arquivo selecionado não é suportado pelo Phonon." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Tipo de arquivo não suportado" #: dialogs/invitedialog.cpp:41 msgctxt "Caption of a dialog box" msgid "Invite Contacts" -msgstr "Convidar Contatos" +msgstr "Convidar contatos" #: dialogs/listexportdialog.cpp:83 #, kde-format msgid "Export Contact List for %1" -msgstr "Exportar Lista de Contatos de %1" +msgstr "Exportar lista de contatos de %1" #: dialogs/listexportdialog.cpp:102 msgid "Nothing to export" @@ -1248,19 +1247,19 @@ msgstr "A exportação da lista de contatos terminou" #: dialogs/networkwindow.cpp:57 dialogs/networkwindow.cpp:1281 #: dialogs/networkwindow.cpp:1308 rc.cpp:237 msgid "Network Window" -msgstr "Janela da Rede" +msgstr "Janela da rede" #: dialogs/networkwindow.cpp:78 msgid "S&ave Tab" -msgstr "S&alvar Aba" +msgstr "S&alvar aba" #: dialogs/networkwindow.cpp:79 msgid "C&lear Tab" -msgstr "Limpas Aba" +msgstr "Limpas aba" #: dialogs/networkwindow.cpp:80 msgid "C&lose All Tabs" -msgstr "Fechar Todas as Abas" +msgstr "Fechar todas as abas" #: dialogs/networkwindow.cpp:1088 msgid "" @@ -1327,19 +1326,19 @@ msgstr "Finalizado" #: network/applications/filetransferp2p.cpp:741 #, kde-format msgid "%1 MB" -msgstr "%1 MB" +msgstr "%1 MiB" #: dialogs/transferentry.cpp:275 network/applications/filetransfer.cpp:640 #: network/applications/filetransferp2p.cpp:746 #, kde-format msgid "%1 kB" -msgstr "%1 kB" +msgstr "%1 KiB" #: dialogs/transferentry.cpp:279 network/applications/filetransfer.cpp:644 #: network/applications/filetransferp2p.cpp:750 #, kde-format msgid "%1 bytes" -msgstr "%1 bytes" +msgstr "%1 baites" #: dialogs/transferentry.cpp:348 #, kde-format @@ -1359,7 +1358,7 @@ msgstr "Infinito" #. i18n: ectx: attribute (title), widget (QWidget, tab_3) #: dialogs/transferwindow.cpp:54 rc.cpp:894 msgid "File Transfers" -msgstr "Transferências de Arquivo" +msgstr "Transferências de arquivo" #: dialogs/userpicturesdialog.cpp:43 msgid "&Use" @@ -1371,7 +1370,7 @@ msgstr "Remover" #: dialogs/userpicturesdialog.cpp:46 msgid "Choose or Remove Your Display Picture" -msgstr "Escolha ou remova sua Imagem de Exibição" +msgstr "Escolha ou remova sua imagem de exibição" #: dialogs/userpicturesdialog.cpp:128 msgid "Are you sure you want to delete this display picture?" @@ -1380,7 +1379,7 @@ msgstr "Tem certeza que deseja remover esta imagem de exibição?" #: dialogs/userpicturesdialog.cpp:129 msgctxt "Dialog box title" msgid "Delete Display Picture" -msgstr "Remover Imagem de Exibição" +msgstr "Remover imagem de exibição" #: emoticontheme.cpp:627 #, kde-format @@ -1405,7 +1404,7 @@ msgstr "Mostrando a língua" #: emoticontheme.cpp:826 msgid "Big smile" -msgstr "Grande Sorriso" +msgstr "Grande sorriso" #: emoticontheme.cpp:827 msgid "Sad" @@ -1485,7 +1484,7 @@ msgstr "Eu não sei" #: emoticontheme.cpp:846 msgid "Be right back" -msgstr "Volto Logo" +msgstr "Volto logo" #: emoticontheme.cpp:847 msgid "Angel" @@ -1724,7 +1723,7 @@ msgid "" "Waiting for an Internet connection to reconnect...
      Reconnect now!" msgstr "" -"Esperando por uma conexão a internet para reconectar...
      Reconectar agora!" #: initialview.cpp:422 @@ -1775,11 +1774,11 @@ msgstr "" #: kmess.cpp:217 msgid "Contact Information" -msgstr "Informação do Contato" +msgstr "Informação do contato" #: kmess.cpp:247 msgid "New Group" -msgstr "Novo Grupo" +msgstr "Novo grupo" #: kmess.cpp:250 msgctxt "Dialog box title" @@ -1790,7 +1789,7 @@ msgstr "Adicionar um grupo" msgid "Enter a name for the new group:" msgstr "Informe nome para o novo grupo:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1799,15 +1798,15 @@ msgstr "" "Você tem certeza que deseja remover o contato %1 de sua lista de " "contatos?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" -msgstr "Remover Contato" +msgstr "Remover contato" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" -msgstr "Remover e Bloquear" +msgstr "Remover e bloquear" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1816,12 +1815,12 @@ msgid "" msgstr "" "O grupo %1 não está vazio: remova todos os contatos e tente novamente!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" -msgstr "Remoção de Grupo" +msgstr "Remoção de grupo" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1831,24 +1830,24 @@ msgstr "" "Você tem certeza que deseja remover o grupo %1 de sua lista de " "contatos?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Remover" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Este é um grupo especial e não pode ser alterado." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" -msgstr "Renomear Grupo" +msgstr "Renomear grupo" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Especifique um novo nome para este grupo:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1858,21 +1857,21 @@ msgstr "" "

      Não pude conectar automaticamente com a conta %1:
      primeiro " "você deve salvar a senha desta conta!

      " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" -msgstr "Entrada Automática Falhou" +msgstr "Autenticação automática falhou" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "A conexão pode ter caído..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Desconectado" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1880,7 +1879,7 @@ msgctxt "" msgid "

      KMess has searched for it in the following folders:
      %1

      " msgstr "

      O KMess procurou nas seguintes pastas:
      %1

      " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1895,12 +1894,12 @@ msgstr "" "'kmess.notifyrc' não foi encontrado em nenhuma pasta de aplicativos.

      %" "1

      Por favor, verifique sua instalação.

      " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" -msgstr "Erro com Notificações" +msgstr "Erro com notificações" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1923,63 +1922,63 @@ msgstr "Mostrar Meu &Perfil" #: kmessinterface.cpp:167 msgid "Show &Allowed Contacts" -msgstr "Exibir Removidos não Bloque&ados" +msgstr "Exibir removidos não Bloque&ados" #: kmessinterface.cpp:168 msgid "Show &Offline Contacts" -msgstr "Exibir Contatos &Offline" +msgstr "Exibir contatos desc&onectados" #: kmessinterface.cpp:169 msgid "Show &Removed Contacts" -msgstr "Exibir &Removidos Bloqueados" +msgstr "Exibir contatos &removidos" #: kmessinterface.cpp:170 msgid "Show &History Box" -msgstr "Mostrar Caixa do &Histórico" +msgstr "Mostrar caixa do &histórico" #: kmessinterface.cpp:171 msgid "&Show Search Bar" -msgstr "Exibir Barra de Procura" +msgstr "Exibir barra de busca" #: kmessinterface.cpp:172 msgid "Show &Empty Groups" -msgstr "Exibir Grupos Va&zios" +msgstr "Exibir grupos va&zios" #: kmessinterface.cpp:173 msgid "&Display Pictures Size" -msgstr "Tamanho da Imagem" +msgstr "Tamanho da imagem" #: kmessinterface.cpp:174 msgid "&Sort Contacts by" -msgstr "&Ordenar Contatos por" +msgstr "&Ordenar contatos por" #: kmessinterface.cpp:175 msgid "Show &Transfer Window..." -msgstr "Mostrar Janela de Transferência" +msgstr "Mostrar janela de transferência" #: kmessinterface.cpp:180 msgid "New &Contact..." -msgstr "Novo &Contato" +msgstr "Novo &contato" #: kmessinterface.cpp:181 msgid "New &Group..." -msgstr "Novo &Grupo" +msgstr "Novo &grupo" #: kmessinterface.cpp:182 msgid "&Export Contact List..." -msgstr "&Exportar Lista de Contatos..." +msgstr "&Exportar lista de contatos..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:183 kmessview.cpp:706 msgid "Show Chat &History..." -msgstr "Mostrar &Histórico de Conversas" +msgstr "Mostrar &histórico de conversas" #: kmessinterface.cpp:184 msgid "New &Account..." -msgstr "Nova Cont&a" +msgstr "Nova cont&a" #: kmessinterface.cpp:185 msgid "Configure Account..." -msgstr "Configurar Conta..." +msgstr "Configurar conta..." #: kmessinterface.cpp:186 msgid "Configure &KMess..." @@ -1987,11 +1986,11 @@ msgstr "Co&nfigurações" #: kmessinterface.cpp:187 msgid "Show Selection &Menu" -msgstr "Mostrar &Menu de Seleção" +msgstr "Mostrar &menu de seleção" #: kmessinterface.cpp:190 msgid "Do Not Display" -msgstr "Não Mostrar" +msgstr "Não mostrar" #: kmessinterface.cpp:191 msgid "Small" @@ -2011,7 +2010,7 @@ msgstr "Grupo" #: kmessinterface.cpp:198 msgid "Online/Offline" -msgstr "Online/Offline" +msgstr "Conectado/Desconectado" #: kmessinterface.cpp:199 msgid "Mixed" @@ -2019,100 +2018,95 @@ msgstr "Misturado" #: kmessinterface.cpp:289 msgid "Show &Network Window..." -msgstr "Mostrar Ja&nela de Rede" +msgstr "Mostrar ja&nela de rede" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Conectado como %2" -#: kmessview.cpp:374 +#: kmessview.cpp:389 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 conectou" -#: kmessview.cpp:379 +#: kmessview.cpp:394 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 desconectou" -#: kmessview.cpp:688 +#: kmessview.cpp:703 msgid "Cha&t" msgstr "&Conversar" -#: kmessview.cpp:699 +#: kmessview.cpp:714 msgid "&Remove From Group" -msgstr "Remover do Grupo" +msgstr "Remover do grupo" -#: kmessview.cpp:732 +#: kmessview.cpp:747 msgid "&Copy to Group" -msgstr "&Copiar para o Grupo" +msgstr "&Copiar para o grupo" -#: kmessview.cpp:733 +#: kmessview.cpp:748 msgid "&Move to Group" -msgstr "&Mover para o Grupo" +msgstr "&Mover para o grupo" -#: kmessview.cpp:784 +#: kmessview.cpp:799 msgid "Move Group &Down" -msgstr "Mover Grupo para &Baixo" +msgstr "Mover grupo para &baixo" -#: kmessview.cpp:785 +#: kmessview.cpp:800 msgid "Move Group &Up" -msgstr "Mover Grupo para &Cima" +msgstr "Mover grupo para &bima" -#: kmessview.cpp:786 +#: kmessview.cpp:801 msgid "Re&move Group" -msgstr "Re&mover Grupo" +msgstr "Re&mover grupo" -#: kmessview.cpp:787 +#: kmessview.cpp:802 msgid "Re&name Group" -msgstr "Re&nomear Grupo" +msgstr "Re&nomear grupo" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Esta pessoa não tem você na lista dela" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1271 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Endereço de e-mail" -#: kmessview.cpp:1262 +#: kmessview.cpp:1278 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Cliente" -#: kmessview.cpp:1274 +#: kmessview.cpp:1290 msgid "Yes" msgstr "Sim" -#: kmessview.cpp:1278 +#: kmessview.cpp:1294 msgid "No" msgstr "Não" -#: kmessview.cpp:1281 +#: kmessview.cpp:1297 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Bloqueado" -#: kmessview.cpp:1303 +#: kmessview.cpp:1319 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Última vez visto" -#: kmessview.cpp:1320 +#: kmessview.cpp:1336 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Última mensagem" -#: kmessview.cpp:1330 +#: kmessview.cpp:1346 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Grupo %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1354 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -2120,15 +2114,15 @@ msgid_plural "%1 contacts, " msgstr[0] "%1 contato." msgstr[1] "%1 contatos." -#: kmessview.cpp:1341 +#: kmessview.cpp:1357 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" msgid_plural "%1 online" -msgstr[0] "%1 online" -msgstr[1] "%1 online" +msgstr[0] "%1 conectado" +msgstr[1] "%1 conectados" -#: kmessview.cpp:1347 +#: kmessview.cpp:1363 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -2137,18 +2131,18 @@ msgstr[0] "%1 contato" msgstr[1] "%1 contatos" # friendly name = nome de exibição; -#: kmessview.cpp:1768 +#: kmessview.cpp:1784 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Clique aqui para alterar seu nome de exibição" -#: kmessview.cpp:1828 +#: kmessview.cpp:1844 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Clique para especificar uma mensagem pessoal[/i]" # friendly name = nome de exibição; -#: kmessview.cpp:1829 +#: kmessview.cpp:1845 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " @@ -2157,15 +2151,15 @@ msgstr "" "Clique aqui para inserir uma mensagem para mostrar aos seus contatos: eles a " "verão junto ao seu nome de exibição" -#: kmessview.cpp:2009 +#: kmessview.cpp:2025 msgid "No chat logs could be found for this contact." msgstr "Nenhum histórico de conversas com este contato foi encontrado." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2026 kmessview.cpp:2032 msgid "No chat history found" msgstr "Nenhum registro encontrado." -#: kmessview.cpp:2015 +#: kmessview.cpp:2031 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2175,13 +2169,21 @@ msgstr "" "novas conversas não serão gravadas; se quiser o histórico das conversas " "disponível você vai ter habilitar isso nas configurações de sua conta." -#: kmessview.cpp:2209 +#: kmessview.cpp:2233 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 e-mail novo" msgstr[1] "%1 e-mails novos" +#: kmessview.cpp:2252 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Mostrar aos contatos o que está ouvindo (desative clicando)" + +#: kmessview.cpp:2257 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Mostrar aos contatos o que está ouvindo (ative clicando)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2359,7 +2361,7 @@ msgstr "Leonel Freire" #: main.cpp:89 main.cpp:90 main.cpp:91 msgid "More Brazilian Portuguese translation" -msgstr "Tradução para Português do Brasil" +msgstr "Mais tradução para Português do Brasil" #: main.cpp:90 msgid "Sergio Rafael Lemke" @@ -2731,7 +2733,7 @@ msgstr "Guido Solinas" msgid "Pictures in contact list code, contact client info, chat font zoom" msgstr "" "Código de imagens na lista de contato, informações do cliente do contato, " -"zoom da fonte da conversa" +"aumento da fonte da conversa" #: main.cpp:163 msgid "File transfer thumbnails" @@ -2783,7 +2785,7 @@ msgstr "Comandos tipo IRC na janela de conversas" #: main.cpp:170 msgid "Chat history dialog" -msgstr "Diálogo do Histórico da Conversa" +msgstr "Diálogo do histórico da conversa" #: main.cpp:170 msgid "Dario Freddi" @@ -2857,8 +2859,8 @@ msgstr "Anastasios Bourazanis" msgid "" "Emoticon preview in settings page,clickable contact properties dialog text" msgstr "" -"Página de configuração de previsualização de emoticons, texto do diálogo " -"de propriedades do contato clicável" +"Página de configuração de previsualização de emoticons, texto do diálogo de " +"propriedades do contato clicável" #: main.cpp:182 msgid "Internationalization fixes, drag'n'drop of images into display pictures" @@ -2869,63 +2871,71 @@ msgstr "" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "Botão para alternar o \"Ouvindo Agora\" sobre a lista de contatos." + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inspiração e códigos diversos" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" "Código anterior dos balões de mensagem, código de p2p inicial, manipulador " "do desafio do MSN" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Código do temporizador de Intatividade" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Código de fechar para a bandeja do sistema" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" "Implementação do gerenciador de erros personalizado, implementação da " "sobreposição de ícones na bandeja do sistema" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "" "Correção do KNotify não dar foco e prevenção de roubo de foco pelo kwin." -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2934,33 +2944,35 @@ msgstr "" "de ajuda do KMess\n" "Se você acha que o seu nome esta faltando aqui, por favor entre em contato!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Seu nome aqui?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Morris Arozi Moraes,Sergio Rafael Lemke,Leonel Freire,Mauricio Rother" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" -msgstr " ,bedi.com@gmail.com,leonelfreire@gmail.com,mauricio@digicomm.com.br" +msgstr "" +"morrisarozi@gmail.com,bedi.com@gmail.com,leonelfreire@gmail." +"com,mauricio@digicomm.com.br" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Não mostrar a lista de contatos inicialmente" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Conectar automaticamente com o e-mail fornecido" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Rodar um teste de depuração (compilações de desenvolvedor apenas)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -2982,7 +2994,7 @@ msgstr "Removido" #: network/applications/application.cpp:294 msgid "The contact cancelled the session." -msgstr "O Contato cancelou a sessão." +msgstr "O contato cancelou a sessão." #: network/applications/application.cpp:306 msgid "The contact rejected the invitation." @@ -3038,7 +3050,7 @@ msgid "" "The transfer of the file "%1" failed. Could not open the " "destination file." msgstr "" -"A Transferência do arquivo %1 falhou. Impossível abrir o arquivo de destino." +"A transferência do arquivo %1 falhou. Impossível abrir o arquivo de destino." #: network/applications/filetransfer.cpp:319 msgid "Transfer accepted." @@ -3123,9 +3135,7 @@ msgstr "Negociando opções para conectar" #: network/applications/filetransferp2p.cpp:160 #: network/extra/msnftpconnection.cpp:132 msgid "The file transfer invitation was cancelled. Bad data was received." -msgstr "" -"The file transfer invitation was cancelled. Bad data was received. A " -"transferência de arquivo foi cancelada. Dados inválidos recebidos." +msgstr "A transferência de arquivo foi cancelada. Dados inválidos recebidos." #: network/applications/filetransferp2p.cpp:404 #, kde-format @@ -3169,8 +3179,8 @@ msgstr "" #: network/applications/mimeapplication.cpp:175 msgid "The invitation was aborted. Timeout while waiting for file data." msgstr "" -"O convite foi abortado. Tempo esgotado enquanto aguardava uma aceitação do " -"contato." +"O convite foi abortado. Tempo esgotado enquanto aguardava por dados do " +"arquivo." #: network/applications/mimeapplication.cpp:180 msgid "The invitation was aborted. The switchboard closed the chat connection." @@ -3198,8 +3208,9 @@ msgid "" "The invitation was cancelled. The contact sent bad data, or KMess does not " "support it." msgstr "" -"Este convite foi cancelado. O contato enviou dados estranhos, ou que o KMess " -"não os suporta." +"Este convite foi cancelado. O contato enviou dados estranhos, ou não " +"suportados" +"pelo KMess." #: network/applications/p2papplication.cpp:1085 msgid "The transfer failed. Data preparation failed." @@ -3215,8 +3226,8 @@ msgstr "O convite foi cancelado. A mensagem não era direcionada a nós." msgid "" "The transfer failed. The contact sent bad data, or KMess does not support it." msgstr "" -"A transferência falhou. O contato enviou dados estranhos ou que o KMess não " -"suporta." +"A transferência falhou. O contato enviou dados estranhos ou não suportados " +"pelo KMess." #: network/applications/p2papplication.cpp:1810 #: network/applications/p2papplication.cpp:1828 @@ -3228,7 +3239,7 @@ msgstr "O contato rejeitou o convite. Ocorreu um erro interno." #: network/extra/msnftpconnection.cpp:389 #, kde-format msgid "Awaiting connection at %1, port %2" -msgstr "Esperando conexão em %1, porta %2" +msgstr "Aguardando conexão em %1, porta %2" #: network/applications/p2papplication.cpp:2144 #: network/applications/p2papplication.cpp:3378 @@ -3273,7 +3284,7 @@ msgstr "A transferência falhou." #: network/applications/p2papplicationbase.cpp:1030 msgid "The transfer failed. Timeout while waiting for user to accept." msgstr "" -"A Transferência de arquivos falhou. Tempo esgotado enquanto aguardava uma " +"A transferência de arquivos falhou. Tempo esgotado enquanto aguardava uma " "aceitação do contato." #: network/applications/p2papplicationbase.cpp:1049 @@ -3376,7 +3387,7 @@ msgstr "Nome de domínio faltando" #: network/msnconnection.cpp:394 msgid "Already logged in" -msgstr "Já logado" +msgstr "Já autenticado" #: network/msnconnection.cpp:397 msgid "The given account name is invalid" @@ -3400,7 +3411,7 @@ msgstr "Parâmetro SBP inválido" #: network/msnconnection.cpp:412 msgid "This contact is already on your list" -msgstr "Este contato já encontra-se em sua lista" +msgstr "Este contato já está em sua lista" #: network/msnconnection.cpp:416 msgid "This contact is not on your list" @@ -3408,7 +3419,7 @@ msgstr "Este contato não está em sua lista" #: network/msnconnection.cpp:420 msgid "This contact is not online" -msgstr "Este contato não está online" +msgstr "Este contato não está conectado" #: network/msnconnection.cpp:425 msgid "Already in this mode" @@ -3462,7 +3473,7 @@ msgstr "Há um erro interno no Kmess: %1" #: network/msnconnection.cpp:463 msgid "Invalid Group" -msgstr "Grupo Inválido" +msgstr "Grupo inválido" #: network/msnconnection.cpp:467 msgid "Empty domain" @@ -3490,7 +3501,7 @@ msgstr "Campo necessário faltando" #: network/msnconnection.cpp:489 msgid "Not logged in" -msgstr "Não logado" +msgstr "Não autenticado" #: network/msnconnection.cpp:493 msgctxt "" @@ -3545,7 +3556,8 @@ msgstr "Tiquete de autenticação incorreto" #: network/msnconnection.cpp:551 msgid "You cannot start a chat with someone while you are invisible" msgstr "" -"Você não pode iniciar um chat com alguém enquanto você estiver invisível." +"Você não pode iniciar uma conversa com alguém enquanto você estiver " +"invisível." #: network/msnconnection.cpp:555 msgid "Not accepting new contacts" @@ -3556,7 +3568,7 @@ msgid "" "You have a Kids Passport account, you need parental consent to chat online" msgstr "" "Você tem um passaporte Kids, você precisa pedir permissão para conversar " -"online." +"na rede." #: network/msnconnection.cpp:562 msgid "Your Passport account needs to be verified first" @@ -3761,8 +3773,8 @@ msgid "" "

      Unable to resolve the authentication on the client
      Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

      " msgstr "" -"

      Impossível resolver a autenticação no cliente
      Talvez não " -"haja instalado qca2 e/ou qca2-plugin-ossl?

      " +"

      Impossível resolver a autenticação no cliente
      Talvez não haja " +"instalado qca2 e/ou qca2-plugin-ossl?

      " #: network/msnnotificationconnection.cpp:3129 msgid "" @@ -3770,11 +3782,9 @@ msgid "" "need to install qca2 and qca2-plugin-ossl to make KMess work.
      It is also " "possible that the MSN network is unavailable at the moment.

      " msgstr "" -"

      KMess não pôde se conectar aos servidores Live Messenger.
      " -"Provavelmente " -"você precisa instalar qca2 e qca2-plugin-ossl para isto.
      Também é " -"possível " -"que a rede Live esteja indisponível no momento.

      " +"

      KMess não pôde se conectar aos servidores Live Messenger.
      Provavelmente você precisa instalar qca2 e qca2-plugin-ossl para isto.
      Também é possível que a rede Live esteja indisponível no momento.

      " #: network/msnnotificationconnection.cpp:3144 msgctxt "Connection error: passive notification message" @@ -3877,7 +3887,7 @@ msgstr "" #: network/msnsockettcp.cpp:366 msgid "Connection time limit exceeded" -msgstr "Tempo Limite de Conexão Atingido" +msgstr "Tempo limite de conexão atingido" #: network/msnsockettcp.cpp:380 #, kde-format @@ -3912,39 +3922,40 @@ msgstr "" #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" -msgstr "Pedido inválido do serviço web (%1)" +msgstr "Pedido inválido do serviço na rede (%1)" #: network/soap/httpsoapconnection.cpp:433 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" -msgstr "O serviço online não está acessível (%1)" +msgstr "O serviço na rede não está acessível (%1)" #: network/soap/httpsoapconnection.cpp:514 msgctxt "Error message" msgid "Too many redirections by web service" -msgstr "Redirecionamentos demais feitos pelo serviço web" +msgstr "Redirecionamentos demais feitos pelo serviço na rede" #: network/soap/httpsoapconnection.cpp:558 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" -msgstr "O serviço web de Mensagens Offline não está disponível no momento" +msgstr "" +"O serviço de mensagens desconectadas na rede não está disponível no momento" #: network/soap/httpsoapconnection.cpp:564 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" -msgstr "O serviço web do Live Messenger está passando por problemas" +msgstr "O serviço do Live Messenger na rede está passando por problemas" #: network/soap/httpsoapconnection.cpp:578 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" -msgstr "Resposta inválida do serviço web %1 (%2)" +msgstr "Resposta inválida do serviço na rede %1 (%2)" #: network/soap/httpsoapconnection.cpp:617 msgctxt "Error message" msgid "No response from web service" -msgstr "Sem respostas do serviço web" +msgstr "Sem respostas do serviço na rede" #: network/soap/passportloginservice.cpp:208 #, kde-format @@ -3955,7 +3966,7 @@ msgstr "Resposta inesperada do servidor (%1)" #: notification/chatnotification.cpp:172 #, kde-format msgid "In %1's chat:
      %2" -msgstr "In %1's chat:
      %2" +msgstr "Na conversa de %1:
      %2" #: notification/chatnotification.cpp:176 #, kde-format @@ -3965,7 +3976,7 @@ msgstr "%1 diz:
      '%2'" #: notification/chatnotification.cpp:180 #, kde-format msgid "%1 has sent you an offline message:
      '%2'" -msgstr "%1 enviou para você uma mensagem offline:
      '%2'" +msgstr "%1 enviou-lhe uma mensagem desconectada:
      '%2'" #: notification/chatnotification.cpp:185 #, kde-format @@ -3980,7 +3991,7 @@ msgstr "%1:
      %2" #: notification/chatnotification.cpp:197 #, kde-format msgid "%1 has sent you a handwritten message!" -msgstr "%1 enviou uma mensagem escrita a mão!" +msgstr "%1 enviou uma mensagem manuscrita!" #: notification/chatnotification.cpp:201 #, kde-format @@ -4025,12 +4036,12 @@ msgstr "%1 aceitou o seu convite!" #: notification/chatnotification.cpp:235 #, kde-format msgid "The file transfer with %1 is done!" -msgstr "Transferência de arquivos com %1 terminada!" +msgstr "Transferência de arquivos com %1 finalizada!" #: notification/chatnotification.cpp:236 #, kde-format msgid "%1's activity has ended!" -msgstr "A atividade de %1 terminou!" +msgstr "A atividade de %1 finalizou!" #: notification/chatnotification.cpp:243 #, kde-format @@ -4045,7 +4056,7 @@ msgstr "A atividade de %1 terminou com um erro!" #: notification/contactstatusnotification.cpp:91 #, kde-format msgid "%1
      is now online" -msgstr "%1
      está conectado" +msgstr "%1
      conectou-se" #: notification/contactstatusnotification.cpp:92 #, kde-format @@ -4055,7 +4066,7 @@ msgstr "%1
      ficou ausente" #: notification/contactstatusnotification.cpp:93 #, kde-format msgid "%1
      will be right back" -msgstr "%1
      já volto" +msgstr "%1
      já volta" #: notification/contactstatusnotification.cpp:94 #, kde-format @@ -4075,7 +4086,7 @@ msgstr "%1
      está inativo" #: notification/contactstatusnotification.cpp:97 #, kde-format msgid "%1
      has logged out" -msgstr "%1
      desconectou" +msgstr "%1
      desconectou-se" #: notification/contactstatusnotification.cpp:98 #, kde-format @@ -4096,7 +4107,7 @@ msgstr "Novo e-mail:
      '%1'
      por '%2'" #: notification/notificationmanager.cpp:114 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" -msgstr "Iniciar Conversa" +msgstr "Iniciar conversa" #: notification/notificationmanager.cpp:118 msgctxt "Button text for KDE notification boxes" @@ -4116,7 +4127,7 @@ msgstr "Detalhes" #: notification/notificationmanager.cpp:130 msgctxt "Button text for KDE notification boxes" msgid "Read Email" -msgstr "Ler E-mail" +msgstr "Ler e-mail" #: notification/notificationmanager.cpp:134 msgctxt "Button text for KDE notification boxes" @@ -4134,7 +4145,7 @@ msgstr "" #: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 #: notification/systemtraywidget.cpp:205 msgid "Docking in System Tray" -msgstr "Indo para Bandeja do Sistema" +msgstr "Indo para bandeja do sistema" #: notification/systemtraywidget.cpp:248 #, kde-format @@ -4166,21 +4177,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "- %1 e-mails" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Escolher..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Escolher e cortar imagem..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Usar imagem anterior..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Imagem" @@ -4195,11 +4206,11 @@ msgstr "Conta" #: settings/accountsettingsdialog.cpp:80 msgid "My Account" -msgstr "Minha Conta" +msgstr "Minha conta" #: settings/accountsettingsdialog.cpp:85 settings/accountsettingsdialog.cpp:86 msgid "Contact List" -msgstr "Lista de Contatos" +msgstr "Lista de contatos" #: settings/accountsettingsdialog.cpp:96 settings/accountsettingsdialog.cpp:97 msgid "Chatting" @@ -4208,7 +4219,7 @@ msgstr "Conversas" #: settings/accountsettingsdialog.cpp:102 #: settings/accountsettingsdialog.cpp:103 msgid "Chat Logging" -msgstr "Registro das Conversas" +msgstr "Registro das conversas" #: settings/accountsettingsdialog.cpp:155 msgctxt "Button tooltip text" @@ -4277,7 +4288,7 @@ msgstr "Tem certeza que deseja remover o emoticon \"%1\" ?" #: settings/emoticonspage.cpp:199 msgctxt "Dialog box title" msgid "Delete Emoticon" -msgstr "Remover Emoticon" +msgstr "Remover cmoticon" #: settings/globalsettingsdialog.cpp:47 msgid "KMess Settings" @@ -4357,11 +4368,11 @@ msgstr "

      Impossível acessar os seus arquivos de configuração!

      " #: utils/likeback/likeback.cpp:242 msgid "&Send a Comment to the Developers" -msgstr "Enviar Feedback" +msgstr "Enviar opiniões aos de&senvolvedores" #: utils/likeback/likeback.cpp:251 msgid "Show &Feedback Icons" -msgstr "Mostrar ícones de &Feedback" +msgstr "Mostrar ícones de opinião" #: utils/likeback/likeback.cpp:323 #, kde-format @@ -4446,8 +4457,8 @@ msgstr "" msgctxt "Welcome dialog text, usage example" msgid "I desire a new feature allowing me to send my work by email." msgstr "" -"Eu desejo um recurso novo permitindo que eu envia meu trabalho por " -"e-mail." +"Eu desejo um recurso novo permitindo que eu envia meu trabalho por e-" +"mail." #: utils/likeback/likeback.cpp:409 msgctxt "Welcome dialog text, us=the developers, it=the application" @@ -4464,11 +4475,11 @@ msgstr[1] "Exemplos" #: utils/likeback/likeback.cpp:418 msgctxt "Welcome dialog title" msgid "Help Improve the Application" -msgstr "Ajuda a melhorar o Aplicativo" +msgstr "Ajude a melhorar o aplicativo" #: utils/likeback/likebackdialog.cpp:28 msgid "Send a Comment to the Developers" -msgstr "Envie um comentário para os Desenvolvedores" +msgstr "Envie um comentário para os desenvolvedores" #: utils/likeback/likebackdialog.cpp:140 #, kde-format @@ -4481,7 +4492,7 @@ msgid "" msgstr "" "Por favor, escreva em %1, do contrário os desenvolvedores serão " "incapazes de ler o seu comentário!
      Você pode usar uma ferramenta de tradução online para traduzir suas menagens.
      " +"\">ferramenta de tradução na rede para traduzir suas menagens.
      " #: utils/likeback/likebackdialog.cpp:152 #, kde-format @@ -4495,7 +4506,7 @@ msgid "" msgstr "" "Por favor, escreva em %1 ou %2, do contrário os desenvolvedores serão " "incapazes de ler o seu comentário!
      Você pode usar uma ferramenta de tradução online para traduzir suas menagens.
      " +"\">ferramenta de tradução na rede para traduzir suas menagens.
      " #: utils/likeback/likebackdialog.cpp:168 msgctxt "" @@ -4548,7 +4559,7 @@ msgstr "" #: utils/likeback/likebackdialog.cpp:302 msgctxt "Dialog box title" msgid "Comment Sent" -msgstr "Comentário Enviado" +msgstr "Comentário enviado" #: utils/likeback/likebackdialog.cpp:313 msgctxt "Dialog box text" @@ -4562,12 +4573,14 @@ msgstr "" #: utils/likeback/likebackdialog.cpp:315 msgctxt "Dialog box title" msgid "Comment Sending Error" -msgstr "Erro no Envio do Comentário" +msgstr "Erro no envio do comentário" #: rc.cpp:2 msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" -msgstr " ,bedi.com@gmail.com,leonelfreire@gmail.com,mauricio@digicomm.com.br" +msgstr "" +"morrisarozi@gmail.com,bedi.com@gmail.com,leonelfreire@gmail." +"com,mauricio@digicomm.com.br" #. i18n: file: chat/chatwindow.ui:190 #. i18n: ectx: property (toolTip), widget (QToolButton, textButton_) @@ -4674,7 +4687,7 @@ msgstr "Clique neste botão para mudar a cor de texto das suas mensagens." #. i18n: ectx: property (text), widget (QPushButton, newLineButton_) #: rc.cpp:59 msgid "Ne&w Line" -msgstr "Nova Linha" +msgstr "Nova linha" #. i18n: file: chat/chatwindow.ui:488 #. i18n: ectx: property (text), widget (QPushButton, sendButton_) @@ -4694,7 +4707,7 @@ msgstr "&Conversa" #: rc.cpp:74 msgctxt "@title:menu" msgid "Main Toolbar" -msgstr "Barra de Ferramentas Principal" +msgstr "Barra de ferramentas principal" #. i18n: file: chat/contactframe.ui:156 #. i18n: ectx: property (toolTip), widget (QLabel, contactPixmapLabel_) @@ -4728,7 +4741,7 @@ msgstr "Informe aqui o e-mail da pessoa que você deseja adicionar" #. i18n: ectx: property (text), widget (QLabel, TextLabel2) #: rc.cpp:89 rc.cpp:284 msgid "Email address:" -msgstr "Endereço de E-mail:" +msgstr "Endereço de e-mail:" #. i18n: file: dialogs/addemoticondialog.ui:97 #. i18n: ectx: property (text), widget (QLabel, textLabel1) @@ -4761,19 +4774,19 @@ msgstr "Mensagem de au&sência automática:" #. i18n: ectx: property (clickMessage), widget (KLineEdit, searchEdit_) #: rc.cpp:107 msgid "Search through contacts..." -msgstr "Procurar nos contatos..." +msgstr "Buscar nos contatos..." #. i18n: file: dialogs/chathistorydialog.ui:73 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: rc.cpp:110 msgid "Chat Log Filter" -msgstr "Filtro dos Registros de Conversa" +msgstr "Filtro dos registros de conversa" #. i18n: file: dialogs/chathistorydialog.ui:87 #. i18n: ectx: property (text), widget (QRadioButton, conversationRadio_) #: rc.cpp:113 msgid "Filter by &chat" -msgstr "Filtrar por &chat" +msgstr "Filtrar por &conversa" #. i18n: file: dialogs/chathistorydialog.ui:152 #. i18n: ectx: property (text), widget (QRadioButton, dateRadio_) @@ -4809,19 +4822,19 @@ msgstr "&Adicionar esta pessoa para estes grupos da minha lista de contato:" #. i18n: ectx: property (text), widget (QRadioButton, allowContactOption_) #: rc.cpp:132 msgid "&Do not add this person, but allow him or her to see your status" -msgstr "Não adicionar esta pessoa; &Deixar ela ver quando eu estou online" +msgstr "Não adicionar esta pessoa, mas &deixar ela ver meu status" #. i18n: file: dialogs/contactaddeduserdialog.ui:121 #. i18n: ectx: property (text), widget (QRadioButton, blockContactOption_) #: rc.cpp:135 msgid "&Block this person from contacting you and seeing your status" -msgstr "&Bloquear esta pessoa para não contatar ou ver quando estou online." +msgstr "&Bloquear de me contatar e ver meu status" #. i18n: file: dialogs/contactpropertiesdialog.ui:48 #. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) #: rc.cpp:141 msgid "Click or Drag&Drop to change the image for this contact" -msgstr "Clique ou Arraste&Solte aqui para alterar a imagem deste contato" +msgstr "Clique ou arraste&solte aqui para alterar a imagem deste contato" #. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) @@ -4851,7 +4864,7 @@ msgstr "Us&ar um nome diferente para esta pessoa" #. i18n: ectx: property (text), widget (QCheckBox, disableNotificationsCheckBox_) #: rc.cpp:156 msgid "Disable notifications for this contact" -msgstr "Desativar notivacações para esta pessoa" +msgstr "Desativar notificações para esta pessoa" #. i18n: file: dialogs/contactpropertiesdialog.ui:281 #. i18n: ectx: property (text), widget (QLabel, soundSelectLabel_) @@ -4863,7 +4876,7 @@ msgstr "&Som:" #. i18n: ectx: attribute (title), widget (QWidget, tab_2) #: rc.cpp:162 msgid "&Display Pictures" -msgstr "Imagens &de Exibição" +msgstr "Imagens &de exibição" #. i18n: file: dialogs/contactpropertiesdialog.ui:367 #. i18n: ectx: property (toolTip), widget (QPushButton, useButton_) @@ -4876,13 +4889,13 @@ msgstr "" #. i18n: ectx: property (text), widget (QPushButton, useButton_) #: rc.cpp:168 msgid "Use As Display Picture" -msgstr "Usar Como Imagem de Exibição" +msgstr "Usar como imagem de exibição" #. i18n: file: dialogs/contactpropertiesdialog.ui:377 #. i18n: ectx: property (text), widget (QPushButton, clearCacheButton_) #: rc.cpp:171 msgid "&Clear Cache" -msgstr "Limpar &Cache" +msgstr "Limpar &cache" #. i18n: file: dialogs/contactpropertiesdialog.ui:403 #. i18n: ectx: property (text), widget (QLabel, label) @@ -4913,7 +4926,7 @@ msgstr "Restau&rar" #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: rc.cpp:192 msgid "Available Contacts" -msgstr "Contatos Disponíveis" +msgstr "Contatos disponíveis" #. i18n: file: dialogs/invitedialog.ui:70 #. i18n: ectx: property (text), widget (QLabel, label) @@ -4931,7 +4944,7 @@ msgstr "Insira o e-mail da pessoa a convidar" #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) #: rc.cpp:201 msgid "Invited Contacts" -msgstr "Contatos Convidados" +msgstr "Contatos convidados" #. i18n: file: dialogs/listexportdialog.ui:18 #. i18n: ectx: property (text), widget (QLabel, label_2) @@ -4967,13 +4980,13 @@ msgstr "Contatos:" #. i18n: ectx: property (text), widget (QPushButton, selectAllButton_) #: rc.cpp:225 msgid "Select All" -msgstr "Marcar Todos" +msgstr "Marcar todos" #. i18n: file: dialogs/listexportdialog.ui:90 #. i18n: ectx: property (text), widget (QPushButton, deselectAllButton_) #: rc.cpp:228 msgid "Deselect All" -msgstr "Desmarcar Todos" +msgstr "Desmarcar todos" #. i18n: file: dialogs/listexportdialog.ui:116 #. i18n: ectx: property (text), widget (QPushButton, exportButton_) @@ -4991,7 +5004,7 @@ msgstr "Fechar" #. i18n: ectx: property (title), widget (QGroupBox, commandSendingGroup_) #: rc.cpp:240 msgid "Command to Current Tab" -msgstr "Comando para a Aba Atual" +msgstr "Comando para a aba atual" #. i18n: file: dialogs/networkwindow.ui:37 #. i18n: ectx: property (text), widget (QLabel, label) @@ -5027,7 +5040,7 @@ msgstr "Enviar" #. i18n: ectx: property (text), widget (QLabel, label_2) #: rc.cpp:258 msgid "Command payload (can be empty):" -msgstr "Command payload (can be empty):" +msgstr "Carga do comando (pode ser vazia):" #. i18n: file: dialogs/transferentry.ui:196 #. i18n: ectx: property (text), widget (KUrlLabel, openLabel_) @@ -5098,7 +5111,7 @@ msgstr "Insira aqui a senha da sua conta" #. i18n: ectx: property (text), widget (QLabel, initialStatusLabel_) #: rc.cpp:296 msgid "Status at login:" -msgstr "Status Inicial:" +msgstr "Status inicial:" #. i18n: file: initialview.ui:243 #. i18n: ectx: property (toolTip), widget (QComboBox, initialStatus_) @@ -5116,7 +5129,7 @@ msgstr "Se habilitado, KMess vai salvar sua conta" #. i18n: ectx: property (text), widget (QCheckBox, rememberAccountCheckBox_) #: rc.cpp:305 msgid "Remem&ber account" -msgstr "Lem&brar Conta" +msgstr "Lem&brar conta" #. i18n: file: initialview.ui:285 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) @@ -5132,7 +5145,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) #: rc.cpp:314 msgid "R&emember password" -msgstr "L&embrar Senha" +msgstr "L&embrar senha" #. i18n: file: initialview.ui:301 #. i18n: ectx: property (text), widget (QCheckBox, rememberAutoLoginCheckBox_) @@ -5152,13 +5165,13 @@ msgstr "" #. i18n: ectx: property (text), widget (KUrlLabel, newAccountLabel_) #: rc.cpp:329 msgid "New Account" -msgstr "Nova Conta" +msgstr "Nova conta" #. i18n: file: initialview.ui:447 #. i18n: ectx: property (url), widget (KUrlLabel, newAccountLabel_) #: rc.cpp:332 msgid "https://accountservices.passport.net/reg.srf" -msgstr "https://accountservices.passport.net/reg.srf" +msgstr "https://accountservices.passport.net/reg.srf?sl=1&lc=1033&MKT=PT-BR" #. i18n: file: initialview.ui:450 #. i18n: ectx: property (tipText), widget (KUrlLabel, newAccountLabel_) @@ -5181,7 +5194,7 @@ msgstr "Esqueceu a senha?" #. i18n: ectx: property (url), widget (KUrlLabel, forgottenPasswordLabel_) #: rc.cpp:341 msgid "https://login.live.com/resetpw.srf" -msgstr "https://login.live.com/resetpw.srf" +msgstr "https://accountservices.passport.net/uiresetpw.srf?mkt=PT-BR&lc=1046" #. i18n: file: initialview.ui:485 #. i18n: ectx: property (tipText), widget (KUrlLabel, forgottenPasswordLabel_) @@ -5218,7 +5231,7 @@ msgstr "&Ações" #. i18n: ectx: attribute (title), widget (QWidget, tab) #: rc.cpp:356 msgid "Account &Info" -msgstr "&Informações da Conta" +msgstr "&Informações da conta" #. i18n: file: settings/accountpage.ui:35 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_) @@ -5230,7 +5243,8 @@ msgstr "Informações da sua conta" #. i18n: ectx: property (whatsThis), widget (QLabel, friendlyNameLabel_) #: rc.cpp:362 msgid "Enter a name other contacts should see when you are connected." -msgstr "Insira o nome que outros contatos vão ver quando você estiver online." +msgstr "" +"Insira o nome que outros contatos vão ver quando você estiver conectado." # friendly name = nome de exibição; #. i18n: file: settings/accountpage.ui:44 @@ -5253,7 +5267,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QLabel, handleLabel_4) #: rc.cpp:371 msgid "&Email address:" -msgstr "&Endereço de E-mail: " +msgstr "&Endereço de e-mail: " #. i18n: file: settings/accountpage.ui:79 #. i18n: ectx: property (whatsThis), widget (QLabel, passwordLabel_) @@ -5296,7 +5310,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) #: rc.cpp:386 msgid "&Remember password" -msgstr "Lemb&rar Senha" +msgstr "Lemb&rar senha" #. i18n: file: settings/accountpage.ui:233 #. i18n: ectx: property (text), widget (KPushButton, browseButton_) @@ -5314,7 +5328,7 @@ msgstr "Habilite esta opção caso não queira usar uma figura de exibição." #. i18n: ectx: property (text), widget (QCheckBox, noPictureCheckbox_) #: rc.cpp:401 msgid "&Do not use" -msgstr "Não Usar" +msgstr "Não usar" #. i18n: file: settings/accountpage.ui:291 #. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberCheckbox_) @@ -5357,7 +5371,7 @@ msgstr "Entrar com esta conta automaticamente ao iniciar" #. i18n: ectx: property (text), widget (QLabel, textLabel1_) #: rc.cpp:424 msgid "Login &as" -msgstr "Entr&ar como" +msgstr "&Autenticar como" #. i18n: file: settings/accountpage.ui:332 #. i18n: ectx: property (whatsThis), widget (QComboBox, initialStatus_) @@ -5373,9 +5387,8 @@ msgid "" "You need to connect to the Passport site to confirm that your email address " "exists." msgstr "" -"Você precisa conectar ao site Passaporte e confirmar que o endereço de " -"e-mail " -"usando no registro existe." +"Você precisa conectar ao site Passaporte e confirmar que o endereço de e-" +"mail usando no registro existe." # friendly name = nome de exibição; #. i18n: file: settings/accountpage.ui:378 @@ -5438,7 +5451,7 @@ msgstr "Vá para register.passport.com" #. i18n: ectx: attribute (title), widget (QWidget, tab_2) #: rc.cpp:454 msgid "&Status Options" -msgstr "&Opções de Status" +msgstr "&Opções de status" #. i18n: file: settings/accountpage.ui:522 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useIdleTimerCheckBox_) @@ -5522,7 +5535,7 @@ msgstr "Não mostrar notificações quan&do meu status for \"Ocupado\"" #. i18n: ectx: property (text), widget (QLabel, textLabel1) #: rc.cpp:493 msgid "Saved accounts:" -msgstr "Contas Salvas:" +msgstr "Contas salvas:" #. i18n: file: settings/accountsmanagerpage.ui:76 #. i18n: ectx: property (toolTip), widget (QPushButton, addAccountButton_) @@ -5538,7 +5551,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QPushButton, addAccountButton_) #: rc.cpp:499 msgid "&Add Account..." -msgstr "&Adicionar Conta..." +msgstr "&Adicionar conta..." #. i18n: file: settings/accountsmanagerpage.ui:92 #. i18n: ectx: property (toolTip), widget (QPushButton, configureAccountButton_) @@ -5599,7 +5612,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, logChatsCheckBox_) #: rc.cpp:532 msgid "Enable chat logging" -msgstr "Salvar Conversas" +msgstr "Salvar conversas" #. i18n: file: settings/chatloggingpage.ui:36 #. i18n: ectx: property (toolTip), widget (QGroupBox, saveChatsToFileCheckBox_) @@ -5655,13 +5668,13 @@ msgstr "" #. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) #: rc.cpp:554 msgid "Web Pages (HTML)" -msgstr "Páginas (HTML)" +msgstr "Páginas na rede(HTML)" #. i18n: file: settings/chatloggingpage.ui:95 #. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) #: rc.cpp:557 msgid "Plain Text" -msgstr "Texto Plano" +msgstr "Texto simples" #. i18n: file: settings/chatloggingpage.ui:134 #. i18n: ectx: property (toolTip), widget (QLabel, label) @@ -5758,7 +5771,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QRadioButton, monthRadioButton_) #: rc.cpp:591 msgid "Year then Month" -msgstr "Ano e Mês" +msgstr "Ano e mês" #. i18n: file: settings/chatloggingpage.ui:204 #. i18n: ectx: property (toolTip), widget (QRadioButton, dayRadioButton_) @@ -5795,7 +5808,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QRadioButton, dayRadioButton_) #: rc.cpp:604 msgid "Year, Month then Day" -msgstr "Ano, Mês e Dia" +msgstr "Ano, mês e dia" #. i18n: file: settings/chatloggingpage.ui:224 #. i18n: ectx: property (toolTip), widget (QRadioButton, singleDirectoryRadioButton_) @@ -5870,13 +5883,13 @@ msgstr "Estilo da &conversa:" #. i18n: ectx: property (text), widget (KPushButton, newStylesButton_) #: rc.cpp:640 msgid "Get &New Styles..." -msgstr "Obter &Novos Estilos..." +msgstr "Obter &novos estilos..." #. i18n: file: settings/chatstylepage.ui:120 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: rc.cpp:643 msgid "Chat Settings" -msgstr "Configurações da Conversa" +msgstr "Configurações da conversa" #. i18n: file: settings/chatstylepage.ui:128 #. i18n: ectx: property (toolTip), widget (QCheckBox, useEmoticonsCheckBox_) @@ -5888,7 +5901,7 @@ msgstr "Ativa os emoticons nas conversas" #. i18n: ectx: property (text), widget (QCheckBox, useEmoticonsCheckBox_) #: rc.cpp:649 msgid "&Show emoticons" -msgstr "Mostrar &Emoticons" +msgstr "Mostrar &emoticons" #. i18n: file: settings/chatstylepage.ui:243 #. i18n: ectx: property (toolTip), widget (QCheckBox, showWinksCheckBox_) @@ -5994,7 +6007,7 @@ msgstr "&Forçar mensagens dos contatos a usar esta fonte:" #. i18n: ectx: property (title), widget (QGroupBox, groupBox_4) #: rc.cpp:703 msgid "Chat Window Formatting" -msgstr "Formatação da Janela de Conversas" +msgstr "Formatação da janela de conversas" #. i18n: file: settings/chatstylepage.ui:542 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useFontEffectsCheckBox_) @@ -6061,7 +6074,7 @@ msgstr "" #. i18n: ectx: property (text), widget (QCheckBox, shakeNudgeCheckBox_) #: rc.cpp:728 msgid "Shake the chat &window when a nudge is received or sent" -msgstr "Balançar a janela de mensagem quando receber ou enviar um Nudge" +msgstr "Tremer a janela de mensagem ao receber ou enviar um nudge" #. i18n: file: settings/chatstylepage.ui:602 #. i18n: ectx: property (whatsThis), widget (QCheckBox, displayChatUserPictureCheckBox_) @@ -6107,7 +6120,7 @@ msgstr "Nunca" #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) #: rc.cpp:752 msgid "Display Options" -msgstr "Opções de Exibição" +msgstr "Opções de exibição" #. i18n: file: settings/contactlistpage.ui:23 #. i18n: ectx: property (whatsThis), widget (QCheckBox, showEmailInfoCheckBox_) @@ -6162,7 +6175,7 @@ msgstr "Usar imagem de fundo na lista de contatos" #. i18n: ectx: property (title), widget (QGroupBox, groupBox) #: rc.cpp:779 msgid "List Formatting" -msgstr "Formatação da Lista" +msgstr "Formatação da lista" #. i18n: file: settings/contactlistpage.ui:71 #. i18n: ectx: property (text), widget (QCheckBox, enableListFormattingCheckBox_) @@ -6193,13 +6206,13 @@ msgstr "Temas de emoticon disponíveis:" #. i18n: ectx: attribute (title), widget (QWidget, tab_2) #: rc.cpp:797 msgid "&Custom Emoticons" -msgstr "Emoticons Personalizados" +msgstr "Emoticons personalizados" #. i18n: file: settings/emoticonspage.ui:110 #. i18n: ectx: property (toolTip), widget (QPushButton, addEmoticonButton_) #: rc.cpp:800 msgid "Click here to add a new custom emoticon" -msgstr "Clique aqui para adicionar um novo Emoticon personalizado" +msgstr "Clique aqui para adicionar um novo emoticon personalizado" #. i18n: file: settings/emoticonspage.ui:113 #. i18n: ectx: property (text), widget (QPushButton, addEmoticonButton_) @@ -6211,7 +6224,7 @@ msgstr "Adicionar novo..." #. i18n: ectx: property (toolTip), widget (QPushButton, renameEmoticonButton_) #: rc.cpp:809 msgid "Click here to rename the selected emoticon" -msgstr "Clique aqui para renomear o Emoticon selecinonado" +msgstr "Clique aqui para renomear o emoticon selecinonado" #. i18n: file: settings/emoticonspage.ui:145 #. i18n: ectx: property (text), widget (QPushButton, renameEmoticonButton_) @@ -6241,7 +6254,7 @@ msgstr "Emoticons persoanlizados:" #. i18n: ectx: attribute (title), widget (QWidget, tab) #: rc.cpp:830 msgid "Web Browser" -msgstr "Navegador Web" +msgstr "Navegador na rede" #. i18n: file: settings/miscellaneouspage.ui:33 #. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEBrowserRadio_) @@ -6311,7 +6324,7 @@ msgstr "Use '%u' para inserir a URL na linha de comando." #. i18n: ectx: attribute (title), widget (QWidget, tab_2) #: rc.cpp:859 msgid "Email Client" -msgstr "Cliente de E-mail" +msgstr "Cliente de e-mail" #. i18n: file: settings/miscellaneouspage.ui:157 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useLiveMailCheckbox_) @@ -6347,7 +6360,7 @@ msgstr "Usar o cliente de e-mail padrão do &KDE" #. i18n: ectx: property (text), widget (QRadioButton, useListedMailClientRadio_) #: rc.cpp:877 msgid "Use an &installed email client:" -msgstr "Usar outro cl&iente de E-mail:" +msgstr "Usar outro cl&iente de e-mail:" #. i18n: file: settings/miscellaneouspage.ui:260 #. i18n: ectx: property (text), widget (QLabel, customMailClientInfo_) @@ -6493,6 +6506,10 @@ msgstr "" "reportou.
      \n" "O e-mail será usado só para isto." +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Esta pessoa não tem você na lista dela" + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Especifique sua mensagem pessoal aqui>" diff --git a/po/ru.po b/po/ru.po index f0cada6..11740a1 100644 --- a/po/ru.po +++ b/po/ru.po @@ -3,18 +3,19 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2009-11-05 22:06+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-03-08 15:54+0200\n" "Last-Translator: \n" "Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.0\n" -#: account.cpp:45 -#: account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Меня нет за компьютером" @@ -22,16 +23,26 @@ msgstr "Меня нет за компьютером" msgid "Your name" msgstr "Ваше имя" -#: account.cpp:57 -#: settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "имя@hotmail.com" #: accountsmanager.cpp:559 #, kde-format -msgid "Some insecurely stored account passwords have been found.
      Do you want to import the passwords to the KDE Wallet named '%1', keep the insecurely stored passwords, or delete them permanently?

      Note: it is not recommended to keep insecurely stored passwords if the KDE Wallet is available, because your passwords will be easily readable in the KMess configuration files." -msgstr "Были найдены незащищённые пароли от учётных записей.
      Импортировать пароли в KDE Wallet с названием '%1', оставить пароли незащищёнными, или удалить их?

      Примечание: не рекомендуется держать пароли незащищёнными при наличии KDE Wallet , так как их будет легко прочесть из конфигурационных файлов KMess." +msgid "" +"Some insecurely stored account passwords have been found.
      Do you " +"want to import the passwords to the KDE Wallet named '%1', keep the " +"insecurely stored passwords, or delete them permanently?

      Note: " +"it is not recommended to keep insecurely stored passwords if the KDE Wallet " +"is available, because your passwords will be easily readable in the KMess " +"configuration files." +msgstr "" +"Были найдены незащищённые пароли от учётных записей.
      Импортировать пароли в KDE Wallet с названием '%1', оставить пароли " +"незащищёнными, или удалить их?

      Примечание: не рекомендуется " +"держать пароли незащищёнными при наличии KDE Wallet , так как их будет легко " +"прочесть из конфигурационных файлов KMess." #: accountsmanager.cpp:567 msgctxt "Dialog box caption" @@ -55,8 +66,14 @@ msgstr "Оставить" #: chat/chat.cpp:112 msgctxt "Error dialog box text" -msgid "You cannot send invitations when there are multiple contacts in a chat. Please start a separate chat with the contact you wanted to send the invitation to." -msgstr "Невозможно отправить приглашения, когда несколько контактов находятся в разговоре. Откройте отдельный разговор с контактом, которому вы хотите отправить приглашение." +msgid "" +"You cannot send invitations when there are multiple contacts in a chat. " +"Please start a separate chat with the contact you wanted to send the " +"invitation to." +msgstr "" +"Невозможно отправить приглашения, когда несколько контактов находятся в " +"разговоре. Откройте отдельный разговор с контактом, которому вы хотите " +"отправить приглашение." #: chat/chat.cpp:136 #, kde-format @@ -95,8 +112,12 @@ msgstr "%1 (Это сообщение было отправлено автома #: chat/chat.cpp:827 #, kde-format -msgid "KMess could not save the log for this chat:
      The chat logs directory, "%1", does not exist." -msgstr "Невозможно сохранить историю этого разговора:
      Директория истории разговора, "%1", не существует." +msgid "" +"KMess could not save the log for this chat:
      The chat logs " +"directory, "%1", does not exist." +msgstr "" +"Невозможно сохранить историю этого разговора:
      Директория истории " +"разговора, "%1", не существует." #: chat/chat.cpp:969 msgctxt "Message shown in the chat window (when the wink name is unknown)" @@ -110,8 +131,11 @@ msgid "You have sent the "%1" wink!" msgstr "Вы отправили "%1" подмигивание!" #: chat/chat.cpp:1007 -msgid "The chat has been disabled because you are no longer connected to the Live Messenger server." -msgstr "Разговор был закончен по причине потери соединения с сервером Live Messenger." +msgid "" +"The chat has been disabled because you are no longer connected to the Live " +"Messenger server." +msgstr "" +"Разговор был закончен по причине потери соединения с сервером Live Messenger." #: chat/chat.cpp:1164 msgctxt "Warning message shown in chat" @@ -120,20 +144,28 @@ msgstr "Проблемы соединения." #: chat/chat.cpp:1174 msgctxt "Warning message shown in chat" -msgid "There were too many different custom emoticons in your last message. Only the first 7 will be sent." -msgstr "Слишком много пользовательских смайлов в последнем сообщении. Только первые 7 смайлов будут отправлены." +msgid "" +"There were too many different custom emoticons in your last message. Only " +"the first 7 will be sent." +msgstr "" +"Слишком много пользовательских смайлов в последнем сообщении. Только первые " +"7 смайлов будут отправлены." #: chat/chat.cpp:1187 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you a voice clip, but KMess does not support voice clips yet." +msgid "" +"%1 has sent you a voice clip, but KMess does not support voice clips yet." msgstr "%1 отправил голосовое сообщение, но KMess пока что не поддерживает их." #: chat/chat.cpp:1201 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you an action message, but KMess does not support action messages yet." -msgstr "%1 отправил сообщение активности, но KMess пока что не поддерживает их." +msgid "" +"%1 has sent you an action message, but KMess does not support action " +"messages yet." +msgstr "" +"%1 отправил сообщение активности, но KMess пока что не поддерживает их." #: chat/chat.cpp:1212 msgctxt "Warning message shown in chat" @@ -143,20 +175,36 @@ msgstr "Один или несколько контактов не поддер #: chat/chat.cpp:1226 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you a Live Messenger feature that KMess does not support yet." -msgstr "%1 использовал возможность Live Messenger, которая пока что не поддерживается KMess." +msgid "" +"%1 has sent you a Live Messenger feature that KMess does not support yet." +msgstr "" +"%1 использовал возможность Live Messenger, которая пока что не " +"поддерживается KMess." #: chat/chat.cpp:1252 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but displaying winks has been disabled. You can re-enable it in the account settings." -msgstr "Получено подмигивание от %1, но отображение подмигиваний было отключено. Для включения этой функции перейдите в настройки учётной записи." +msgid "" +"You received a wink from %1, but displaying winks has been disabled. You can " +"re-enable it in the account settings." +msgstr "" +"Получено подмигивание от %1, но отображение подмигиваний было отключено. Для " +"включения этой функции перейдите в настройки " +"учётной записи." #: chat/chat.cpp:1262 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but displaying winks has been disabled. You can re-enable it in the account settings." -msgstr "Получено "%2" подмигивание от %1, но отображение подмигиваний было отключено. Для включения этой функции перейдите в настройки учётной записи." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but displaying winks has been " +"disabled. You can re-enable it in the account settings." +msgstr "" +"Получено "%2" подмигивание от %1, но отображение подмигиваний было " +"отключено. Для включения этой функции перейдите в настройки учётной записи." #: chat/chat.cpp:1292 #, kde-format @@ -166,50 +214,86 @@ msgstr "%1 отправил подмигивание!" #: chat/chat.cpp:1299 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" msgid "%1 has sent you a wink: "%2"!" msgstr "%1 отправил подмигивание: "%2"!" #: chat/chat.cpp:1321 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. Make sure you have the "cabextract" program installed." -msgstr "Получено подмигивание от %1, но оно не может быть отображено. Убедитесь,что программа "cabextract" установлена." +msgid "" +"You received a wink from %1, but it could not be displayed. Make sure you " +"have the "cabextract" program installed." +msgstr "" +"Получено подмигивание от %1, но оно не может быть отображено. Убедитесь,что " +"программа "cabextract" установлена." #: chat/chat.cpp:1330 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. Make sure you have the "cabextract" program installed." -msgstr "Получено "%2" подмигивание от %1, но оно не может быть отображено. Убедитесь,что программа "cabextract" установлена." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Make sure you have the "cabextract" program installed." +msgstr "" +"Получено "%2" подмигивание от %1, но оно не может быть отображено. " +"Убедитесь,что программа "cabextract" установлена." #: chat/chat.cpp:1342 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. Extracting the wink package with "cabextract" has failed." -msgstr "Получено подмигивание от %1, но оно не может быть отображено. Распаковка подмигиваний с помощью "cabextract" не удалась." +msgid "" +"You received a wink from %1, but it could not be displayed. Extracting the " +"wink package with "cabextract" has failed." +msgstr "" +"Получено подмигивание от %1, но оно не может быть отображено. Распаковка " +"подмигиваний с помощью "cabextract" не удалась." #: chat/chat.cpp:1351 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. Extracting the wink package with "cabextract" has failed." -msgstr "Получено "%2" подмигивание от %1, но он не может быть отображено. Распаковка подмигиваний с помощью "cabextract" не удалась." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Extracting the wink package with "cabextract" has failed." +msgstr "" +"Получено "%2" подмигивание от %1, но он не может быть отображено. " +"Распаковка подмигиваний с помощью "cabextract" не удалась." #: chat/chat.cpp:1363 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. The data could not be read." -msgstr "Получено подмигивание от %1, но оно не может быть отображено. Данные не могут быть прочитаны." +msgid "" +"You received a wink from %1, but it could not be displayed. The data could " +"not be read." +msgstr "" +"Получено подмигивание от %1, но оно не может быть отображено. Данные не " +"могут быть прочитаны." #: chat/chat.cpp:1372 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. The data could not be read." -msgstr "Получено "%2" подмигивание от %1, но оно не может быть отображено. Данные не могут быть прочитаны." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" +"Получено "%2" подмигивание от %1, но оно не может быть отображено. " +"Данные не могут быть прочитаны." #: chat/chat.cpp:1414 #, kde-format -msgid "%1 has gone offline. Any messages you send will be delivered the next time he or she logs in." -msgstr "%1 отключился(ась). Любое отправленное сообщение будет доставлено ему или ей при подключении." +msgid "" +"%1 has gone offline. Any messages you send will be delivered the next time " +"he or she logs in." +msgstr "" +"%1 отключился(ась). Любое отправленное сообщение будет доставлено ему или ей " +"при подключении." #: chat/chat.cpp:1419 #, kde-format @@ -227,7 +311,9 @@ msgid "%1 has sent you a nudge!" msgstr "%1 толкнул(а) вас!" #: chat/chat.cpp:1493 -msgctxt "Phrase to be inserted in place of a contact name, when a message can't be delivered to any of the recipients" +msgctxt "" +"Phrase to be inserted in place of a contact name, when a message can't be " +"delivered to any of the recipients" msgid "all contacts" msgstr "все контакты" @@ -251,14 +337,20 @@ msgstr "Не удалось отправить рукописное сообще #: chat/chat.cpp:1536 #, kde-format -msgctxt "Error message shown in chat, %1 is the sent message, %2 is the contact's friendly name" +msgctxt "" +"Error message shown in chat, %1 is the sent message, %2 is the contact's " +"friendly name" msgid "Failed to send the message to %2:
      %1" msgstr "Не удалось отправить сообщение %2:
      %1" #: chat/chat.cpp:1619 #, kde-format -msgid "The file "%1" could not be found on your computer, and the download failed." -msgstr "Невозможно найти файл "%1" на вашем компьютере, загрузка была прекращена." +msgid "" +"The file "%1" could not be found on your computer, and the " +"download failed." +msgstr "" +"Невозможно найти файл "%1" на вашем компьютере, загрузка была " +"прекращена." #: chat/chat.cpp:1656 #, kde-format @@ -272,22 +364,34 @@ msgstr "Вы отправили толчок!" #: chat/chat.cpp:1728 #, kde-format -msgid "%1 is currently offline. Any messages you send will be delivered the next time he or she logs in." -msgstr "%1 в данный момент отключён(а). Любые сообщения, отправленные ему или ей, будут доставлены при следующем подключении." +msgid "" +"%1 is currently offline. Any messages you send will be delivered the next " +"time he or she logs in." +msgstr "" +"%1 в данный момент отключён(а). Любые сообщения, отправленные ему или ей, " +"будут доставлены при следующем подключении." #: chat/chatmaster.cpp:1316 #, kde-format msgctxt "Error message shown in chat, %1 is the name of the contact" -msgid "You received an handwritten message from %1, but it could not be displayed. This version of KMess was built without ISF support." -msgstr "Получено рукописное сообщение от %1, но оно не может быть отображено. Эта версия KMess собрана без поддержки ISF." +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"This version of KMess was built without ISF support." +msgstr "" +"Получено рукописное сообщение от %1, но оно не может быть отображено. Эта " +"версия KMess собрана без поддержки ISF." -#: chat/chatmaster.cpp:1337 +#: chat/chatmaster.cpp:1338 #, kde-format msgctxt "Error message shown in chat, %1 is the name of the contact" -msgid "You received an handwritten message from %1, but it could not be displayed. The data could not be read." -msgstr "Получено рукописное сообщение от %1, но оно не может быть отображено. Данные не могут быть прочитаны." +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" +"Получено рукописное сообщение от %1, но оно не может быть отображено. Данные " +"не могут быть прочитаны." -#: chat/chatmaster.cpp:1466 +#: chat/chatmaster.cpp:1467 #, kde-format msgid "%1 is sending a wink: "%2"" msgstr "%1 отправляет подмигивание: "%2"" @@ -299,13 +403,16 @@ msgstr "%1 говорит:" #: chat/chatmessageview.cpp:345 #, kde-format -msgctxt "Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" +msgctxt "" +"Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" msgid "Chat with %1
      Started on: %2" msgstr "Разговор с %1
      Начало в: %2" #: chat/chatmessageview.cpp:392 #, kde-format -msgctxt "Header of a single chat saved as plain text chat log: %1 is the chat date and time" +msgctxt "" +"Header of a single chat saved as plain text chat log: %1 is the chat date " +"and time" msgid "Chat started on: %1" msgstr "Разговор начался в: %1" @@ -315,8 +422,7 @@ msgctxt "Header of a chat file saved in plain text: %1 is the contact" msgid "Saved KMess chats with %1" msgstr "Сохранён разговор с %1" -#: chat/chatmessageview.cpp:1095 -#: utils/richtextparser.cpp:658 +#: chat/chatmessageview.cpp:1095 utils/richtextparser.cpp:658 #, kde-format msgid "Add this emoticon: %1" msgstr "Добавить этот смайл: %1" @@ -342,12 +448,13 @@ msgstr "Переподключение" #, kde-format msgid "" "Could not save chat log in directory '%1'.\n" -"Make sure you have permission to write in the folder where logs are being saved." +"Make sure you have permission to write in the folder where logs are being " +"saved." msgstr "" "Невозможно сохранить историю разговора в директорию '%1'.\n" "Убедитесь в наличии прав на запись в папку, где хранится история разговора." -#: chat/chatview.cpp:537 +#: chat/chatview.cpp:548 msgctxt "Chat log saving dialog, file type filter" msgid "" "*.html *.htm|Web Page (*.html)\n" @@ -358,7 +465,7 @@ msgstr "" "*.txt|Простой текстовый документ (*.txt)\n" "*.xml|Документ XML (*.xml)" -#: chat/chatview.cpp:556 +#: chat/chatview.cpp:567 #, kde-format msgid "" "The file '%1' already exists.\n" @@ -367,436 +474,476 @@ msgstr "" "Файл '%1' уже существует.\n" "Перезаписать?" -#: chat/chatview.cpp:557 -#: network/applications/filetransfer.cpp:261 +#: chat/chatview.cpp:568 network/applications/filetransfer.cpp:261 #: network/applications/filetransferp2p.cpp:347 msgid "Overwrite File" msgstr "Перезаписать файл" -#: chat/chatview.cpp:558 -#: network/applications/filetransfer.cpp:261 +#: chat/chatview.cpp:569 network/applications/filetransfer.cpp:261 #: network/applications/filetransferp2p.cpp:347 msgid "Over&write" msgstr "Пере&запись" -#: chat/chatview.cpp:914 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Добавить этот &смайл..." -#: chat/chatview.cpp:917 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Спрятать этот &смайл" -#: chat/chatview.cpp:923 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Отправить &электронное письмо" -#: chat/chatview.cpp:927 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Добавить &контакт" -#: chat/chatview.cpp:931 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Копировать э&лектронный адрес" -#: chat/chatview.cpp:937 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Посетить &ссылку" -#: chat/chatview.cpp:941 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Копировать &адрес" -#: chat/chatview.cpp:954 -#: chat/chatwindow.cpp:534 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "О&чистить разговор" -#: chat/chatview.cpp:955 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Сохранить разговор в &файл..." -#: chat/chatwindow.cpp:123 +#: chat/chatwindow.cpp:124 msgid "Contacts" msgstr "Контакты" -#: chat/chatwindow.cpp:129 -#: settings/accountsettingsdialog.cpp:90 +#: chat/chatwindow.cpp:130 settings/accountsettingsdialog.cpp:90 #: settings/accountsettingsdialog.cpp:91 msgid "Emoticons" msgstr "Смайлы" -#: chat/chatwindow.cpp:136 +#: chat/chatwindow.cpp:137 msgid "My Emoticons" msgstr "Мои смайлы" -#: chat/chatwindow.cpp:370 -msgid "There are multiple tabs open in this chat window. Do you want to close the current tab only, or all tabs?

      Note: You can close all tabs at once by pressing Alt+F4." -msgstr "Несколько вкладок открыто в окне разговора. Закрыть все вкладки, или только текущую?

      Примечание: Вы можете закрыть все вкладки нажатием комбинации клавиш Alt+F4." +#: chat/chatwindow.cpp:376 +msgid "" +"There are multiple tabs open in this chat window. Do you want to close " +"the current tab only, or all tabs?

      Note: You can close all " +"tabs at once by pressing Alt+F4." +msgstr "" +"Несколько вкладок открыто в окне разговора. Закрыть все вкладки, или " +"только текущую?

      Примечание: Вы можете закрыть все вкладки " +"нажатием комбинации клавиш Alt+F4." -#: chat/chatwindow.cpp:374 +#: chat/chatwindow.cpp:380 msgctxt "Dialog box caption: closing a chatwindow with a single tab" msgid "Closing a Chat Tab" msgstr "Закрытие вкладки разговора" -#: chat/chatwindow.cpp:375 +#: chat/chatwindow.cpp:381 msgid "Close All Tabs" msgstr "Закрыть все вкладки" -#: chat/chatwindow.cpp:376 +#: chat/chatwindow.cpp:382 msgid "Close Current Tab" msgstr "Закрыть текущую вкладку" -#: chat/chatwindow.cpp:452 +#: chat/chatwindow.cpp:458 msgid "&Invite..." msgstr "&Пригласить..." -#: chat/chatwindow.cpp:453 +#: chat/chatwindow.cpp:459 msgid "Send a &File..." msgstr "Отправить &файл..." -#: chat/chatwindow.cpp:454 +#: chat/chatwindow.cpp:460 msgid "Send a &Nudge!" msgstr "&Толкнуть!" -#: chat/chatwindow.cpp:455 +#: chat/chatwindow.cpp:461 msgid "Save Chat..." msgstr "Сохранить разговор..." -#: chat/chatwindow.cpp:456 +#: chat/chatwindow.cpp:462 msgid "Close &All Tabs" msgstr "Закрыть &все вкладки" -#: chat/chatwindow.cpp:461 +#: chat/chatwindow.cpp:467 msgid "Change &Font" msgstr "Изменить &шрифт" -#: chat/chatwindow.cpp:462 +#: chat/chatwindow.cpp:468 msgid "Change Font &Color" msgstr "Изменить &цвет шрифта" -#: chat/chatwindow.cpp:469 +#: chat/chatwindow.cpp:475 msgid "Show &Emoticons" msgstr "Показывать &смайлы" -#: chat/chatwindow.cpp:470 +#: chat/chatwindow.cpp:476 msgid "Show S&tatus Messages" msgstr "Показывать сообщение с&татуса" -#: chat/chatwindow.cpp:476 +#: chat/chatwindow.cpp:482 msgid "&Panels" msgstr "&Панели" -#: chat/chatwindow.cpp:479 +#: chat/chatwindow.cpp:485 msgid "Use &Spell Checking" msgstr "Использовать проверку &орфографии" -#: chat/chatwindow.cpp:483 +#: chat/chatwindow.cpp:489 msgid "Nudge" msgstr "Толчок" -#: chat/chatwindow.cpp:484 +#: chat/chatwindow.cpp:490 msgid "Send a &File" msgstr "Отправить &файл" -#: chat/chatwindow.cpp:487 -#: chat/chatwindow.cpp:488 +#: chat/chatwindow.cpp:493 chat/chatwindow.cpp:494 msgid "P&revious Tab" msgstr "П&редыдущая вкладка" -#: chat/chatwindow.cpp:489 -#: chat/chatwindow.cpp:490 +#: chat/chatwindow.cpp:495 chat/chatwindow.cpp:496 msgid "Ne&xt Tab" msgstr "Следующая вкладка" -#: chat/chatwindow.cpp:505 +#: chat/chatwindow.cpp:511 msgid "Enable or disable the contacts panel" msgstr "Включить или отключить панель контактов" -#: chat/chatwindow.cpp:506 -#: chat/chatwindow.cpp:507 +#: chat/chatwindow.cpp:512 chat/chatwindow.cpp:513 msgctxt "Toolbar button" msgid "Contacts" msgstr "Контакты" -#: chat/chatwindow.cpp:511 +#: chat/chatwindow.cpp:517 msgid "Enable or disable the standard emoticons panel" msgstr "Включить или отключить стандартную панель смайлов" -#: chat/chatwindow.cpp:512 -#: chat/chatwindow.cpp:513 +#: chat/chatwindow.cpp:518 chat/chatwindow.cpp:519 msgctxt "Toolbar button" msgid "Emoticons" msgstr "Смайлы" -#: chat/chatwindow.cpp:517 +#: chat/chatwindow.cpp:523 msgid "Enable or disable the custom emoticons panel" msgstr "Включить или отключить пользовательскую панель смайлов" -#: chat/chatwindow.cpp:518 -#: chat/chatwindow.cpp:519 +#: chat/chatwindow.cpp:524 chat/chatwindow.cpp:525 msgctxt "Toolbar button" msgid "My Emoticons" msgstr "Мои смайлы" -#: chat/chatwindow.cpp:531 +#: chat/chatwindow.cpp:537 msgid "&Font" msgstr "&Шрифт" -#: chat/chatwindow.cpp:532 +#: chat/chatwindow.cpp:538 msgid "Font &Color" msgstr "&Цвет шрифта" -#: chat/chatwindow.cpp:533 +#: chat/chatwindow.cpp:539 msgid "C&lear Chat Window" msgstr "О&чистить окно разговора" -#: chat/chatwindow.cpp:1100 -msgid "You used an incorrect syntax for the /status command. The correct syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible.
      You can also use shortcuts like /online or /phone." -msgstr "Использован некорректный синтаксис для команды /status. Правильный синтаксис: /status online|away|idle|brb|busy|lunch|phone|invisible.
      Также, возможно использование сочетания /online или /phone." +#: chat/chatwindow.cpp:1149 +msgid "" +"You used an incorrect syntax for the /status command. The correct " +"syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." +"
      You can also use shortcuts like /online or /phone." +msgstr "" +"Использован некорректный синтаксис для команды /status. Правильный " +"синтаксис: /status online|away|idle|brb|busy|lunch|phone|invisible." +"
      Также, возможно использование сочетания /online или /phone." -#: chat/chatwindow.cpp:1103 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Некорректный синтаксис команды /status" -#: chat/chatwindow.cpp:1166 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." -msgstr "Невозможно использовать команду /block в групповом разговоре." +msgstr "" +"Невозможно использовать команду /block в групповом разговоре." -#: chat/chatwindow.cpp:1168 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Невозможно использовать команду /block" -#: chat/chatwindow.cpp:1179 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." -msgstr "Невозможно использовать команду /unblock в групповом разговоре." +msgstr "" +"Невозможно использовать команду /unblock в групповом разговоре." -#: chat/chatwindow.cpp:1181 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Невозможно использовать команду /unblock!" -#: chat/chatwindow.cpp:1211 +#: chat/chatwindow.cpp:1260 #, kde-format -msgid "Unknown command %1. If you did not want this message to be a command, prepend your message with another /." -msgstr "Неизвестная команда %1. Если вы не хотели, чтобы это сообщение было командой, прикрепите это сообщение к другому/." +msgid "" +"Unknown command %1. If you did not want this message to be a " +"command, prepend your message with another /." +msgstr "" +"Неизвестная команда %1. Если вы не хотели, чтобы это сообщение " +"было командой, прикрепите это сообщение к другому/." -#: chat/chatwindow.cpp:1214 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Неизвестная команда" -#: chat/chatwindow.cpp:1469 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." -msgstr "Не удалось отправить рукописное сообщение: контакты не поддерживают их." +msgstr "" +"Не удалось отправить рукописное сообщение: контакты не поддерживают их." -#: chat/chatwindow.cpp:1507 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" -msgid "Failed to send the handwritten message: an error has occurred while creating it." -msgstr "Не удалось отправить рукописное сообщение: произошла ошибка во время его создания." +msgid "" +"Failed to send the handwritten message: an error has occurred while creating " +"it." +msgstr "" +"Не удалось отправить рукописное сообщение: произошла ошибка во время его " +"создания." -#: chat/chatwindow.cpp:1797 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Разговор" -#: chat/chatwindow.cpp:1801 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - разговор" -#: chat/chatwindow.cpp:1821 -#: kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" -msgid "Are you sure you want to hide the menu bar? You will be able to show it again by using this keyboard shortcut: %1" -msgstr "Уверены, что хотите спрятать строку меню? Вы сможете включить её снова используя клавиатурное сочетание: %1" +msgid "" +"Are you sure you want to hide the menu bar? You will be able to show " +"it again by using this keyboard shortcut: %1" +msgstr "" +"Уверены, что хотите спрятать строку меню? Вы сможете включить её снова " +"используя клавиатурное сочетание: %1" -#: chat/chatwindow.cpp:1825 -#: kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Скрытие меню" -#: chat/chatwindow.cpp:1911 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Кисть для рисования" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1917 -#: rc.cpp:39 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Ластик" -#: chat/chatwindow.cpp:2110 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 печатает..." -#: chat/chatwindow.cpp:2120 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 и %2 печатают..." -#: chat/chatwindow.cpp:2124 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 и %3 другие печатают..." -#: chat/chatwindow.cpp:2603 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" -msgid "

      Chat Info

      Contacts:
      • %1
      Chat started on:
      %2
      Connected with account:
      %3
      " -msgstr "

      Информация о разговоре

      Контакты:
      • %1
      Начало разговора:
      %2
      Соединён с учётной записью:
      %3
      " +msgid "" +"

      Chat Info

      Contacts:
      • %1
      Chat started on:
      %2
      Connected with " +"account:
      %3
      " +msgstr "" +"

      Информация о разговоре

      Контакты:
      • %1
      Начало разговора:
      %2
      Соединён с учётной записью:
      %3
      " #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2737 -#: rc.cpp:9 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Рукописный режим" -#: chat/chatwindow.cpp:2746 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" -msgid "Handwriting is disabled: some of the contacts do not support receiving handwritten messages." -msgstr "Рукописный ввод отключён: некоторые контакты не поддерживают получение рукописных сообщений." +msgid "" +"Handwriting is disabled: some of the contacts do not support receiving " +"handwritten messages." +msgstr "" +"Рукописный ввод отключён: некоторые контакты не поддерживают получение " +"рукописных сообщений." -#: chat/chatwindow.cpp:2752 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" -msgid "Handwriting is disabled: this contact does not support receiving handwritten messages." -msgstr "Рукописный ввод отключён: этот контакт не поддерживает получение рукописных сообщений." +msgid "" +"Handwriting is disabled: this contact does not support receiving handwritten " +"messages." +msgstr "" +"Рукописный ввод отключён: этот контакт не поддерживает получение рукописных " +"сообщений." #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2760 -#: rc.cpp:27 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Подмигивания" -#: chat/chatwindow.cpp:2769 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" -msgid "Winks are disabled: some of the contacts do not support receiving winks." -msgstr "Подмигивания отключены: некоторые контакты не поддерживают получение подмигиваний." +msgid "" +"Winks are disabled: some of the contacts do not support receiving winks." +msgstr "" +"Подмигивания отключены: некоторые контакты не поддерживают получение " +"подмигиваний." -#: chat/chatwindow.cpp:2775 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." -msgstr "Подмигивания отключены: этот контакт не поддерживает получение подмигиваний." +msgstr "" +"Подмигивания отключены: этот контакт не поддерживает получение подмигиваний." -#: chat/contactframe.cpp:298 +#: chat/contactframe.cpp:354 msgid "&Start Private Chat" msgstr "&Начать приватный разговор" -#: chat/contactframe.cpp:299 -#: kmessview.cpp:604 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Отправить электронное письмо" -#: chat/contactframe.cpp:300 -#: kmessview.cpp:605 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Просмотреть профиль" -#: chat/contactframe.cpp:302 -#: chat/contactframe.cpp:355 -#: kmessview.cpp:607 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Свойства" -#: chat/contactframe.cpp:304 -#: kmessview.cpp:609 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Добавить контакт" -#: chat/contactframe.cpp:305 -#: kmessview.cpp:610 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Р&азрешить контакт" -#: chat/contactframe.cpp:306 -#: kmessview.cpp:613 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Удалить контакт" -#: chat/contactframe.cpp:308 -#: kmessview.cpp:611 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Блокировать контакт" -#: chat/contactframe.cpp:309 -#: kmessview.cpp:612 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Разблокировать контакт" -#: chat/contactframe.cpp:311 -#: kmessview.cpp:616 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Имя" -#: chat/contactframe.cpp:312 -#: kmessview.cpp:617 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Личное сообщение" -#: chat/contactframe.cpp:313 -#: kmessview.cpp:618 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "&Электронный адрес" -#: chat/contactframe.cpp:314 -#: kmessview.cpp:619 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "&Название песни" #. i18n: file: dialogs/contactpropertiesdialog.ui:24 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: chat/contactframe.cpp:316 -#: rc.cpp:136 +#: chat/contactframe.cpp:372 rc.cpp:138 msgid "&Information" msgstr "&Информация" -#: chat/contactframe.cpp:317 +#: chat/contactframe.cpp:373 msgid "Display Pictures" msgstr "Аватары" -#. i18n: file: dialogs/contactpropertiesdialog.ui:360 +#. i18n: file: dialogs/contactpropertiesdialog.ui:387 #. i18n: ectx: attribute (title), widget (QWidget, tab_3) -#: chat/contactframe.cpp:318 -#: rc.cpp:169 +#: chat/contactframe.cpp:374 rc.cpp:174 msgid "&Notes" msgstr "&Заметки" -#. i18n: file: dialogs/contactpropertiesdialog.ui:370 +#. i18n: file: dialogs/contactpropertiesdialog.ui:397 #. i18n: ectx: attribute (title), widget (QWidget, tab_4) -#: chat/contactframe.cpp:319 -#: rc.cpp:172 +#: chat/contactframe.cpp:375 rc.cpp:177 msgid "&Emoticons" msgstr "&Смайлы" -#: chat/contactframe.cpp:348 -#: kmessview.cpp:654 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Копировать" -#: chat/contactframe.cpp:759 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Заблокированный" -#: chat/contactframe.cpp:771 +#: chat/contactframe.cpp:824 #, kde-format -msgctxt "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, like 'Online'" +msgctxt "" +"Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " +"like 'Online'" msgid "The contact is %1" msgstr "Контакт %1" +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 +msgid "Downloading of display picture failed" +msgstr "Загрузка аватара не удалась" + +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 +msgid "KMess" +msgstr "KMess" + +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 +msgid "" +"An error occurred while trying to change the display picture.\n" +"Make sure that you have selected an existing image file." +msgstr "" +"Произошла ошибка при попытке изменения аватара.\n" +"Убедитесь, что вы выбрали существующий файл изображения." + #: chat/emoticonswidget.cpp:290 msgctxt "Informative label on the chat's emoticons bar" -msgid "

      You have not added any custom emoticons yet.

      To add new emoticons, click here!

      " -msgstr "

      Пользовательские смайлы отсутствуют.

      Чтобы добавить новые смайлы, нажмите здесь!

      " +msgid "" +"

      You have not added any custom emoticons yet.

      To add " +"new emoticons, click here!

      " +msgstr "" +"

      Пользовательские смайлы отсутствуют.

      Чтобы добавить " +"новые смайлы, нажмите здесь!

      " #: chat/emoticonswidget.cpp:439 msgid "Add to Chat" @@ -810,15 +957,15 @@ msgstr "Добавить новый" msgid "Edit" msgstr "Редактировать" -#: chat/emoticonswidget.cpp:442 -#: kmess.cpp:577 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Удалить" #: chat/winkswidget.cpp:94 -#, fuzzy msgctxt "Informative label on the chat's winks bar" -msgid "

      You do not have any winks yet.

      To add new ones, have your contacts send you some!

      " +msgid "" +"

      You do not have any winks yet.

      To add new ones, have " +"your contacts send you some!

      " msgstr "" #: contact/contactbase.cpp:290 @@ -826,17 +973,14 @@ msgid "Windows Mobile" msgstr "Windows Mobile" #: contact/contactbase.cpp:294 -#, fuzzy msgid "Web Messenger" msgstr "" #: contact/contactbase.cpp:298 -#, fuzzy msgid "Office Communicator" msgstr "" #: contact/contactbase.cpp:302 -#, fuzzy msgid "Messenger Bot" msgstr "" @@ -844,8 +988,7 @@ msgstr "" msgid "Windows Media Center" msgstr "Windows Media Center" -#: contact/contactbase.cpp:313 -#: contact/contactbase.cpp:318 +#: contact/contactbase.cpp:313 contact/contactbase.cpp:318 #, kde-format msgid "MSN Messenger %1 compatible" msgstr "MSN Messenger %1 совместимый" @@ -868,69 +1011,52 @@ msgstr "Windows Live Messenger %1 совместимый" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger совместимый" -#: contact/msnstatus.cpp:159 -#: contact/msnstatus.cpp:172 -#: initialview.cpp:85 -#: model/contactlist.cpp:1825 -#: settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "В сети" -#: contact/msnstatus.cpp:160 -#: initialview.cpp:88 -#: settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Занят" -#: contact/msnstatus.cpp:161 -#: initialview.cpp:86 -#: settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Недоступен" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Недоступен с авто-ответом" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Простаивает" -#: contact/msnstatus.cpp:164 -#: initialview.cpp:87 -#: settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Скоро вернусь" -#: contact/msnstatus.cpp:165 -#: initialview.cpp:90 -#: settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "На телефоне" -#: contact/msnstatus.cpp:166 -#: initialview.cpp:89 -#: settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Ем" -#: contact/msnstatus.cpp:167 -#: initialview.cpp:91 -#: settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Невидимый" -#: contact/msnstatus.cpp:168 -#: model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Отключён" -#: contact/msnstatus.cpp:195 -#: contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Мой статус" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Отключён" @@ -939,8 +1065,7 @@ msgstr "Отключён" msgid "Add a Contact" msgstr "Добавить контакт" -#: dialogs/addemoticondialog.cpp:61 -#: dialogs/addemoticondialog.cpp:304 +#: dialogs/addemoticondialog.cpp:61 dialogs/addemoticondialog.cpp:304 msgid "Add New Emoticon" msgstr "Добавить новый смайл" @@ -957,8 +1082,16 @@ msgid "Please, enter a text to associate with this emoticon" msgstr "Введите текст для ассоциации с этим смайлом" #: dialogs/addemoticondialog.cpp:203 -msgid "Shortcuts must not:
      • be longer than 7 characters,
      • start with \"/\" (they would interfere with irc-like commands),
      • contain square brackets with text within (like [b] or [color], which can be text formatting options)
      " -msgstr "Сокращения не должны:
      • быть длиннее 7-ми символов,
      • начинаться с \"/\" (они будут смешиваться с irc-подобными командами),
      • содержать квадратные скобки с текстом внутри (подобно [b] или [color], которые могут быть опциями форматирования)
      " +msgid "" +"Shortcuts must not:
      • be longer than 7 characters,
      • start with " +"\"/\" (they would interfere with irc-like commands),
      • contain square " +"brackets with text within (like [b] or [color], which can be text formatting " +"options)
      " +msgstr "" +"Сокращения не должны:
      • быть длиннее 7-ми символов,
      • начинаться " +"с \"/\" (они будут смешиваться с irc-подобными командами),
      • содержать " +"квадратные скобки с текстом внутри (подобно [b] или [color], которые могут " +"быть опциями форматирования)
      " #: dialogs/addemoticondialog.cpp:303 #, kde-format @@ -977,8 +1110,14 @@ msgstr "История разговоров" #: dialogs/chathistorydialog.cpp:305 #, kde-format msgctxt "Dialog box text" -msgid "There has been an error while opening your logs. This is commonly a permission problem, check if you have read/write access to directory "%1". Otherwise, your logs may be corrupted." -msgstr "Ошибка при открытии истории. Зачастую это проблема прав, поверьте наличие прав чтения/записи в директорию"%1". В противном случае, история может быть повреждена." +msgid "" +"There has been an error while opening your logs. This is commonly a " +"permission problem, check if you have read/write access to directory " +""%1". Otherwise, your logs may be corrupted." +msgstr "" +"Ошибка при открытии истории. Зачастую это проблема прав, поверьте наличие " +"прав чтения/записи в директорию"%1". В противном случае, " +"история может быть повреждена." #: dialogs/chathistorydialog.cpp:310 msgctxt "Dialog box title" @@ -1022,62 +1161,57 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Свойства контакта для %1" -#: dialogs/contactpropertiesdialog.cpp:399 -#: kmess.cpp:813 -#: kmessview.cpp:1205 -#: network/msnsockethttp.cpp:199 -#: network/msnsockettcp.cpp:386 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 +#: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Подключён" -#: dialogs/contactpropertiesdialog.cpp:403 -#: kmessview.cpp:1209 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Нет посещений" -#: dialogs/contactpropertiesdialog.cpp:412 -#: kmessview.cpp:1224 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Нет сообщений" -#: dialogs/contactpropertiesdialog.cpp:419 +#: dialogs/contactpropertiesdialog.cpp:423 #, kde-format msgctxt "Contact props dialog info" msgid "Last seen: %1" msgstr "Последний статус: %1" -#: dialogs/contactpropertiesdialog.cpp:420 +#: dialogs/contactpropertiesdialog.cpp:424 #, kde-format msgctxt "Contact props dialog info" msgid "Last message: %1" msgstr "Последнее сообщение: %1" -#: dialogs/contactpropertiesdialog.cpp:421 +#: dialogs/contactpropertiesdialog.cpp:425 #, kde-format msgctxt "Contact props dialog info" msgid "Email address: %1" msgstr "Электронный адрес: %1" -#: dialogs/contactpropertiesdialog.cpp:422 +#: dialogs/contactpropertiesdialog.cpp:426 #, kde-format msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Клиент: %1" -#: dialogs/contactpropertiesdialog.cpp:661 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Уверены, что хотите использовать аватар этого контакта?" -#: dialogs/contactpropertiesdialog.cpp:663 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Копировать изображение контакта" -#: dialogs/contactpropertiesdialog.cpp:716 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Выбранный тип файла не поддерживается Phonon." -#: dialogs/contactpropertiesdialog.cpp:716 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Неподдерживаемый тип файла" @@ -1114,10 +1248,8 @@ msgstr "Экспортирование списка контактов заве #. i18n: file: dialogs/networkwindow.ui:13 #. i18n: ectx: property (windowTitle), widget (QWidget, NetworkWindow) -#: dialogs/networkwindow.cpp:57 -#: dialogs/networkwindow.cpp:1281 -#: dialogs/networkwindow.cpp:1308 -#: rc.cpp:232 +#: dialogs/networkwindow.cpp:57 dialogs/networkwindow.cpp:1281 +#: dialogs/networkwindow.cpp:1308 rc.cpp:237 msgid "Network Window" msgstr "Сетевое окно" @@ -1142,32 +1274,38 @@ msgstr "" "Невозможно открыть сетевое окно." #: dialogs/networkwindow.cpp:1132 -msgid "Could not save the Network Window log. Make sure you have permission to write in the folder where it is being saved." -msgstr "Невозможно сохранить историю сетевого окна. Убедитесь в наличии прав на запись в папку, в которой она был сохранена." +msgid "" +"Could not save the Network Window log. Make sure you have permission to " +"write in the folder where it is being saved." +msgstr "" +"Невозможно сохранить историю сетевого окна. Убедитесь в наличии прав на " +"запись в папку, в которой она был сохранена." #: dialogs/networkwindow.cpp:1179 msgid "Cannot close the main connection tab." msgstr "Невозможно закрыть вкладку главного соединения." #: dialogs/networkwindow.cpp:1275 -#, fuzzy -msgid "Sending commands to the server is a risky operation.
      If you do not know how to exactly do it, you could be lucky and just get disconnected, or you may incur in more serious consequences.
      You have been warned!
      Do you want to continue sending this message?" +msgid "" +"Sending commands to the server is a risky operation.
      If you do not know " +"how to exactly do it, you could be lucky and just get disconnected, or " +"you may incur in more serious consequences.
      You have been warned!" +"
      Do you want to continue sending this message?" msgstr "" #: dialogs/networkwindow.cpp:1305 msgid "" -"The payload you are trying to send does not end with the required newline ('\\r\\n" -"')!
      Do you want KMess to add it for you?" +"The payload you are trying to send does not end with the required newline " +"('\\r\\n')!
      Do you want KMess to add it for you?" msgstr "" -"Полезная нагрузка, которую вы пытаетесь отправить, не заканчивается необходимой новой строкой ('\\r\\n" -"')!
      Хотите,чтобы KMess добавил её?" +"Полезная нагрузка, которую вы пытаетесь отправить, не заканчивается " +"необходимой новой строкой ('\\r\\n')!
      Хотите,чтобы KMess добавил её?" #: dialogs/networkwindow.cpp:1381 msgid "Cannot send commands to this kind of connection!" msgstr "Невозможно отправить команды для такого типа соединения!" -#: dialogs/transferentry.cpp:132 -#: network/applications/filetransfer.cpp:127 +#: dialogs/transferentry.cpp:132 network/applications/filetransfer.cpp:127 #: network/applications/filetransfer.cpp:658 #: network/applications/filetransferp2p.cpp:99 #: network/applications/filetransferp2p.cpp:766 @@ -1184,22 +1322,19 @@ msgstr "Завершено неудачно!" msgid "Completed" msgstr "Завершено" -#: dialogs/transferentry.cpp:270 -#: network/applications/filetransfer.cpp:635 +#: dialogs/transferentry.cpp:270 network/applications/filetransfer.cpp:635 #: network/applications/filetransferp2p.cpp:741 #, kde-format msgid "%1 MB" msgstr "%1 МБ" -#: dialogs/transferentry.cpp:275 -#: network/applications/filetransfer.cpp:640 +#: dialogs/transferentry.cpp:275 network/applications/filetransfer.cpp:640 #: network/applications/filetransferp2p.cpp:746 #, kde-format msgid "%1 kB" msgstr "%1 КБ" -#: dialogs/transferentry.cpp:279 -#: network/applications/filetransfer.cpp:644 +#: dialogs/transferentry.cpp:279 network/applications/filetransfer.cpp:644 #: network/applications/filetransferp2p.cpp:750 #, kde-format msgid "%1 bytes" @@ -1221,8 +1356,7 @@ msgstr "бесконечность" #. i18n: file: settings/miscellaneouspage.ui:285 #. i18n: ectx: attribute (title), widget (QWidget, tab_3) -#: dialogs/transferwindow.cpp:54 -#: rc.cpp:889 +#: dialogs/transferwindow.cpp:54 rc.cpp:894 msgid "File Transfers" msgstr "Передача файлов" @@ -1230,8 +1364,7 @@ msgstr "Передача файлов" msgid "&Use" msgstr "&Использовать" -#: dialogs/userpicturesdialog.cpp:44 -#: settings/accountsettingsdialog.cpp:60 +#: dialogs/userpicturesdialog.cpp:44 settings/accountsettingsdialog.cpp:60 msgid "&Delete" msgstr "&Удалить" @@ -1250,322 +1383,326 @@ msgstr "Удалить аватар" #: emoticontheme.cpp:627 #, kde-format -msgid "Could not save the emoticon theme. Make sure you have permission to write to the theme folder '%1'." -msgstr "Невозможно сохранить тему смайлов. Убедитесь в наличии прав на запись в папку с темами '%1'." +msgid "" +"Could not save the emoticon theme. Make sure you have permission to write to " +"the theme folder '%1'." +msgstr "" +"Невозможно сохранить тему смайлов. Убедитесь в наличии прав на запись в " +"папку с темами '%1'." -#: emoticontheme.cpp:833 +#: emoticontheme.cpp:823 msgid "Smile" msgstr "Улыбка" -#: emoticontheme.cpp:834 +#: emoticontheme.cpp:824 msgid "Wink" msgstr "Подмигивание" -#: emoticontheme.cpp:835 +#: emoticontheme.cpp:825 msgid "Tongue out" msgstr "Высунутый язык" -#: emoticontheme.cpp:836 +#: emoticontheme.cpp:826 msgid "Big smile" msgstr "Широкая улыбка" -#: emoticontheme.cpp:837 +#: emoticontheme.cpp:827 msgid "Sad" msgstr "Грустный" -#: emoticontheme.cpp:838 +#: emoticontheme.cpp:828 msgid "Crying" msgstr "Плачет" -#: emoticontheme.cpp:839 +#: emoticontheme.cpp:829 msgid "Angry" msgstr "Злой" -#: emoticontheme.cpp:840 +#: emoticontheme.cpp:830 msgid "Confused" msgstr "Смущённый" -#: emoticontheme.cpp:841 +#: emoticontheme.cpp:831 msgid "Embarrassed" msgstr "Растерянный" -#: emoticontheme.cpp:842 +#: emoticontheme.cpp:832 msgid "Disappointed" msgstr "Разочарованный" -#: emoticontheme.cpp:843 +#: emoticontheme.cpp:833 msgid "Hot" msgstr "Горячий" -#: emoticontheme.cpp:844 +#: emoticontheme.cpp:834 msgid "Baring teeth" msgstr "Скалит зубы" -#: emoticontheme.cpp:845 +#: emoticontheme.cpp:835 msgid "Nerd" msgstr "Ботан" -#: emoticontheme.cpp:846 +#: emoticontheme.cpp:836 msgid "Sick" msgstr "Болен" -#: emoticontheme.cpp:847 +#: emoticontheme.cpp:837 msgid "Surprised" msgstr "Удивлён" -#: emoticontheme.cpp:848 +#: emoticontheme.cpp:838 msgid "Party" msgstr "Вечеринка" -#: emoticontheme.cpp:849 +#: emoticontheme.cpp:839 msgid "Sleepy" msgstr "Сонный" -#: emoticontheme.cpp:850 +#: emoticontheme.cpp:840 msgid "Thinking" msgstr "Думаю" -#: emoticontheme.cpp:851 +#: emoticontheme.cpp:841 msgid "Don't tell anyone" msgstr "Никому не говори" -#: emoticontheme.cpp:852 +#: emoticontheme.cpp:842 msgid "Secret telling" msgstr "По секрету" -#: emoticontheme.cpp:853 +#: emoticontheme.cpp:843 msgid "Eye-rolling" msgstr "Закатывает глаза" -#: emoticontheme.cpp:854 +#: emoticontheme.cpp:844 msgid "Sarcastic" msgstr "Саркастический" -#: emoticontheme.cpp:855 +#: emoticontheme.cpp:845 msgid "I don't know" msgstr "Я не знаю" -#: emoticontheme.cpp:856 +#: emoticontheme.cpp:846 msgid "Be right back" msgstr "Скоро буду" -#: emoticontheme.cpp:857 +#: emoticontheme.cpp:847 msgid "Angel" msgstr "Ангел" -#: emoticontheme.cpp:858 +#: emoticontheme.cpp:848 msgid "Left hug" msgstr "Объятие" -#: emoticontheme.cpp:859 +#: emoticontheme.cpp:849 msgid "Boy" msgstr "Парень" -#: emoticontheme.cpp:860 +#: emoticontheme.cpp:850 msgid "Red heart" msgstr "Красное сердце" -#: emoticontheme.cpp:861 +#: emoticontheme.cpp:851 msgid "Red rose" msgstr "Красная роза" -#: emoticontheme.cpp:862 +#: emoticontheme.cpp:852 msgid "Thumbs up" msgstr "Недурно" -#: emoticontheme.cpp:863 +#: emoticontheme.cpp:853 msgid "Dog face" msgstr "Собачья морда" -#: emoticontheme.cpp:864 +#: emoticontheme.cpp:854 msgid "Sun" msgstr "Солнце" -#: emoticontheme.cpp:865 +#: emoticontheme.cpp:855 msgid "Devil" msgstr "Дьявол" -#: emoticontheme.cpp:866 +#: emoticontheme.cpp:856 msgid "Right hug" msgstr "Объятие" -#: emoticontheme.cpp:867 +#: emoticontheme.cpp:857 msgid "Girl" msgstr "Девушка" -#: emoticontheme.cpp:868 +#: emoticontheme.cpp:858 msgid "Broken heart" msgstr "Разбитое сердце" -#: emoticontheme.cpp:869 +#: emoticontheme.cpp:859 msgid "Wilted rose" msgstr "Завядшая роза" -#: emoticontheme.cpp:870 +#: emoticontheme.cpp:860 msgid "Thumbs down" msgstr "Неодобрение" -#: emoticontheme.cpp:871 +#: emoticontheme.cpp:861 msgid "Cat face" msgstr "Кошачья морда" -#: emoticontheme.cpp:872 +#: emoticontheme.cpp:862 msgid "Sleeping half-moon" msgstr "Спящий полумесяц" -#: emoticontheme.cpp:873 +#: emoticontheme.cpp:863 msgid "Red lips" msgstr "Красные губы" -#: emoticontheme.cpp:874 +#: emoticontheme.cpp:864 msgid "Clapping" msgstr "Аплодисменты" -#: emoticontheme.cpp:875 +#: emoticontheme.cpp:865 msgid "Crossed fingers" msgstr "Скрещенные пальцы" -#: emoticontheme.cpp:876 +#: emoticontheme.cpp:866 msgid "Auto" msgstr "Авто" -#: emoticontheme.cpp:877 +#: emoticontheme.cpp:867 msgid "Airplane" msgstr "Самолёт" -#: emoticontheme.cpp:878 +#: emoticontheme.cpp:868 msgid "Turtle" msgstr "Черепаха" -#: emoticontheme.cpp:879 +#: emoticontheme.cpp:869 msgid "Snail" msgstr "Улитка" -#: emoticontheme.cpp:880 +#: emoticontheme.cpp:870 msgid "Sheep" msgstr "Овца" -#: emoticontheme.cpp:881 +#: emoticontheme.cpp:871 msgid "Goat" msgstr "Коза" -#: emoticontheme.cpp:882 +#: emoticontheme.cpp:872 msgid "Vampire bat" msgstr "Летучая мышь" -#: emoticontheme.cpp:883 +#: emoticontheme.cpp:873 msgid "Pizza" msgstr "Пицца" -#: emoticontheme.cpp:884 +#: emoticontheme.cpp:874 msgid "Beer mug" msgstr "Кружка пива" -#: emoticontheme.cpp:885 +#: emoticontheme.cpp:875 msgid "Martini glass" msgstr "Стакан мартини" -#: emoticontheme.cpp:886 +#: emoticontheme.cpp:876 msgid "Coffee cup" msgstr "Чашка кофе" -#: emoticontheme.cpp:887 +#: emoticontheme.cpp:877 msgid "Birthday cake" msgstr "Торт" -#: emoticontheme.cpp:888 +#: emoticontheme.cpp:878 msgid "Plate" msgstr "Тарелка" -#: emoticontheme.cpp:889 +#: emoticontheme.cpp:879 msgid "Bowl" msgstr "Миска" -#: emoticontheme.cpp:890 +#: emoticontheme.cpp:880 msgid "Star" msgstr "Звезда" -#: emoticontheme.cpp:891 +#: emoticontheme.cpp:881 msgid "Rainbow" msgstr "Радуга" -#: emoticontheme.cpp:892 +#: emoticontheme.cpp:882 msgid "Stormy cloud" msgstr "Штормовое облако" -#: emoticontheme.cpp:893 +#: emoticontheme.cpp:883 msgid "Lightning" msgstr "Молния" -#: emoticontheme.cpp:894 +#: emoticontheme.cpp:884 msgid "Umbrella" msgstr "Зонтик" -#: emoticontheme.cpp:895 +#: emoticontheme.cpp:885 msgid "Island with a palm tree" msgstr "Остров с пальмовым деревом" -#: emoticontheme.cpp:896 +#: emoticontheme.cpp:886 msgid "Telephone receiver" msgstr "Телефонная трубка" -#: emoticontheme.cpp:897 +#: emoticontheme.cpp:887 msgid "Mobile Phone" msgstr "Мобильный телефон" -#: emoticontheme.cpp:898 +#: emoticontheme.cpp:888 msgid "Email" msgstr "Электронное письмо" -#: emoticontheme.cpp:899 +#: emoticontheme.cpp:889 msgid "Clock" msgstr "Часы" -#: emoticontheme.cpp:900 +#: emoticontheme.cpp:890 msgid "Camera" msgstr "Камера" -#: emoticontheme.cpp:901 +#: emoticontheme.cpp:891 msgid "Filmstrip" msgstr "Диафильм" -#: emoticontheme.cpp:902 +#: emoticontheme.cpp:892 msgid "Note" msgstr "Заметка" -#: emoticontheme.cpp:903 +#: emoticontheme.cpp:893 msgid "Handcuffs" msgstr "Наручники" -#: emoticontheme.cpp:904 +#: emoticontheme.cpp:894 msgid "Money" msgstr "Деньги" -#: emoticontheme.cpp:905 +#: emoticontheme.cpp:895 msgid "Light bulb" msgstr "Лампочка" -#: emoticontheme.cpp:906 +#: emoticontheme.cpp:896 msgid "Cigarette" msgstr "Сигарета" -#: emoticontheme.cpp:907 +#: emoticontheme.cpp:897 msgid "Football ball" msgstr "Футбольный мяч" -#: emoticontheme.cpp:908 +#: emoticontheme.cpp:898 msgid "Gift with a bow" msgstr "Подарок" -#: emoticontheme.cpp:909 +#: emoticontheme.cpp:899 msgid "X-Box" msgstr "X-Box" -#: emoticontheme.cpp:910 +#: emoticontheme.cpp:900 msgid "Computer" msgstr "Компьютер" -#: emoticontheme.cpp:911 +#: emoticontheme.cpp:901 msgid "KMess icon" msgstr "Иконка KMess" @@ -1577,14 +1714,19 @@ msgstr "Невозможно переподключиться: учётная з #: initialview.cpp:274 msgctxt "Status message on login screen" msgid "Cannot reconnect: this account has no saved password" -msgstr "Невозможно переподключиться: отсутствует сохранённый пароль к этой учётной записи" +msgstr "" +"Невозможно переподключиться: отсутствует сохранённый пароль к этой учётной " +"записи" -#: initialview.cpp:309 -#: initialview.cpp:417 +#: initialview.cpp:309 initialview.cpp:417 #, kde-format msgctxt "Status message on login screen" -msgid "Waiting for an Internet connection to reconnect...
      Reconnect now!" -msgstr "Ожидание интернет соединения для переподключения...
      Переподключаюсь!" +msgid "" +"Waiting for an Internet connection to reconnect...
      Reconnect now!" +msgstr "" +"Ожидание интернет соединения для переподключения...
      Переподключаюсь!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1594,11 +1736,20 @@ msgstr "Интернет соединение не доступно" #: initialview.cpp:443 #, kde-format msgctxt "Status message on login screen" -msgid "Waiting %1 second before reconnection...
      Reconnect now!" -msgid_plural "Waiting %1 seconds before reconnection...
      Reconnect now!" -msgstr[0] "Ожидаю %1 секунду перед переподключением...
      Пере подключаюсь!" -msgstr[1] "Ожидаю %1 секунд перед переподключением...
      Пере подключаюсь!" -msgstr[2] "Ожидаю %1 секунд перед переподключением...
      Пере подключаюсь!" +msgid "" +"Waiting %1 second before reconnection...
      Reconnect now!" +msgid_plural "" +"Waiting %1 seconds before reconnection...
      Reconnect now!" +msgstr[0] "" +"Ожидаю %1 секунду перед переподключением...
      Пере " +"подключаюсь!" +msgstr[1] "" +"Ожидаю %1 секунд перед переподключением...
      Пере " +"подключаюсь!" +msgstr[2] "" +"Ожидаю %1 секунд перед переподключением...
      Пере " +"подключаюсь!" #: initialview.cpp:662 msgctxt "Button label" @@ -1642,85 +1793,109 @@ msgstr "Добавить группу" msgid "Enter a name for the new group:" msgstr "Введите имя новой группы:" -#: kmess.cpp:574 +#: kmess.cpp:580 #, kde-format -msgid "Are you sure you want to remove the contact %1 from your contact list?" -msgstr "Уверены,что хотите удалить контакт%1 из списка контактов?" +msgid "" +"Are you sure you want to remove the contact %1 from your contact " +"list?" +msgstr "" +"Уверены,что хотите удалить контакт%1 из списка контактов?" -#: kmess.cpp:576 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Удалить контакт" -#: kmess.cpp:578 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Удалить и заблокировать" -#: kmess.cpp:624 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" -msgid "The group %1 is not empty! First remove all contacts from it, then try again!" -msgstr "Группа %1 не пуста! Сначала удалите все контакты, и повторите снова!" +msgid "" +"The group %1 is not empty! First remove all contacts from it, then " +"try again!" +msgstr "" +"Группа %1 не пуста! Сначала удалите все контакты, и повторите снова!" -#: kmess.cpp:626 -#: kmess.cpp:633 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Удаление группы" -#: kmess.cpp:631 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" -msgid "Are you sure you want to remove the group %1 from your contact list?" -msgstr "Уверены, что хотите удалить группу %1 из списка контактов?" +msgid "" +"Are you sure you want to remove the group %1 from your contact " +"list?" +msgstr "" +"Уверены, что хотите удалить группу %1 из списка контактов?" -#: kmess.cpp:634 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Удалить" -#: kmess.cpp:663 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Это специальная группа, которая не может быть изменена." -#: kmess.cpp:674 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Переименовать группу" -#: kmess.cpp:675 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Введите новое имя для этой группы:" -#: kmess.cpp:752 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" -msgid "

      Cannot login automatically with account %1:
      you must first save the account password!

      " -msgstr "

      Невозможно автоматически войти в учётную запись %1:
      Сперва, сохраните пароль для учётной записи!

      " +msgid "" +"

      Cannot login automatically with account %1:
      you must first " +"save the account password!

      " +msgstr "" +"

      Невозможно автоматически войти в учётную запись %1:
      Сперва, " +"сохраните пароль для учётной записи!

      " -#: kmess.cpp:755 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Автологин не удался" -#: kmess.cpp:1073 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Соединение может быть недоступно..." -#: kmess.cpp:1143 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Отключён" #: kmess.cpp:1482 #, kde-format -msgctxt "Paragraph to be added to the text of a message dialog box, but only when KDE gives a list of folders where to search for an application file" +msgctxt "" +"Paragraph to be added to the text of a message dialog box, but only when KDE " +"gives a list of folders where to search for an application file" msgid "

      KMess has searched for it in the following folders:
      %1

      " msgstr "

      KMess произвёл поиск в следующих папках:
      %1

      " #: kmess.cpp:1494 #, kde-format -msgctxt "Text for a message dialog box; %1 is an explanation about the list of folders where the file was searched for, which is only shown if any folders are found" -msgid "

      KMess will not be able to play sounds nor show notifications.

      The required file 'kmess.notifyrc' could not be found in any application folder.

      %1

      Please verify your installation.

      " -msgstr "

      KMess не будет иметь возможность воспроизводить звуки или показывать уведомления.

      Невозможно найти необходимый файл 'kmess.notifyrc' ни в одной из папок приложения.

      %1

      Проверьте вашу установку.

      " +msgctxt "" +"Text for a message dialog box; %1 is an explanation about the list of " +"folders where the file was searched for, which is only shown if any folders " +"are found" +msgid "" +"

      KMess will not be able to play sounds nor show notifications.

      The required file 'kmess.notifyrc' could not be found in any " +"application folder.

      %1

      Please verify your installation.

      " +msgstr "" +"

      KMess не будет иметь возможность воспроизводить звуки или " +"показывать уведомления.

      Невозможно найти необходимый файл 'kmess." +"notifyrc' ни в одной из папок приложения.

      %1

      Проверьте вашу установку." #: kmess.cpp:1500 msgctxt "Message box title" @@ -1729,218 +1904,212 @@ msgstr "Ошибка уведомлений" #: kmess.cpp:1778 #, kde-format -msgctxt "Main window caption: switched order to easily distinguish it from chats" +msgctxt "" +"Main window caption: switched order to easily distinguish it from chats" msgid "KMess - %1" msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 -#: rc.cpp:321 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Соединение" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Отключение" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Показать мой &профиль" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Показывать &разрешённые контакты " -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Показывать &отключенные контакты" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Показывать &удалённые контакты" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Показывать &журнал" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "&Показывать панель поиска" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Показывать &пустые группы" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Показывать размер изображений" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Сортировать контакты по" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Показывать &окно передачи файлов..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Новый &контакт..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Новая &группа..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Экспортировать список контактов..." -#: kmessinterface.cpp:183 -#: kmessview.cpp:606 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Показать &историю разговоров..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Новая &учётная запись..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Настроить учётную запись..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Настроить &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Показать &меню выбора" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Не показывать" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Маленький" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Средний" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Большой" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Группа" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "В сети/Отключён" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Смешанный" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Показывать &сетевое окно..." -#: kmessview.cpp:327 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] вошёл с %2" -#: kmessview.cpp:364 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 подключается" -#: kmessview.cpp:369 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 отключается" -#: kmessview.cpp:603 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Раз&говор" -#: kmessview.cpp:614 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "&Удалить из группы" -#: kmessview.cpp:647 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Копировать в группу" -#: kmessview.cpp:648 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Переместить в группу" -#: kmessview.cpp:699 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Переместить группу &вниз" -#: kmessview.cpp:700 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Переместить группу &вверх" -#: kmessview.cpp:701 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Уда&лить группу" -#: kmessview.cpp:702 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Пере&именовать группу" -#: kmessview.cpp:1152 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Вы не присутствуете в его или её списке контактов." - -#: kmessview.cpp:1170 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "Электронный адрес" -#: kmessview.cpp:1177 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Клиент" -#: kmessview.cpp:1189 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Да" -#: kmessview.cpp:1193 +#: kmessview.cpp:1296 msgid "No" msgstr "Нет" -#: kmessview.cpp:1196 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Заблокирован" -#: kmessview.cpp:1216 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Последний статус" -#: kmessview.cpp:1231 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Последнее сообщение" -#: kmessview.cpp:1241 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Группа %1" -#: kmessview.cpp:1249 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -1949,7 +2118,7 @@ msgstr[0] "%1 контакт, " msgstr[1] "%1 контакта, " msgstr[2] "%1 контактов, " -#: kmessview.cpp:1252 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -1958,7 +2127,7 @@ msgstr[0] "%1 в сети" msgstr[1] "%1 в сети" msgstr[2] "%1 в сети" -#: kmessview.cpp:1258 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -1967,30 +2136,46 @@ msgstr[0] "%1 контакт" msgstr[1] "%1 контакта" msgstr[2] "%1 контактов" -#: kmessview.cpp:1685 +#: kmessview.cpp:1786 +#, fuzzy +msgctxt "Default friendly name tooltip" +msgid "Click here to change your friendly name" +msgstr "Нажмите здесь, чтобы KMess сохранил ваш пароль" + +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" -msgid "<Enter your personal message here>" -msgstr "<Введите здесь персональное сообщение>" +msgid "[i]Click to set a personal message[/i]" +msgstr "" -#: kmessview.cpp:1686 +#: kmessview.cpp:1847 +#, fuzzy msgctxt "Default personal message tooltip" -msgid "Enter here a message to show to your contacts: they will see it along with your friendly name" -msgstr "Введите здесь сообщение, которое вы хотите показать вашим контактам: они увидят его рядом с вашим именем" +msgid "" +"Click here to insert a message to show to your contacts: they will see it " +"along with your friendly name" +msgstr "" +"Введите здесь сообщение, которое вы хотите показать вашим контактам: они " +"увидят его рядом с вашим именем" -#: kmessview.cpp:1873 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Невозможно найти историю разговора для этого контакта" -#: kmessview.cpp:1874 -#: kmessview.cpp:1880 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "История разговора не найдена" -#: kmessview.cpp:1879 -msgid "No chat logs could be found for this contact. Note that new chats are not logged; if you want your chats to be logged, you can enable it in your account settings." -msgstr "Невозможно найти историю разговоров для этого контакта. Обратите внимание, что история новых разговоров не ведётся; чтобы включить ведение истории разговоров, перейдите в настройки учётной записи." +#: kmessview.cpp:2033 +msgid "" +"No chat logs could be found for this contact. Note that new chats are not " +"logged; if you want your chats to be logged, you can enable it in your " +"account settings." +msgstr "" +"Невозможно найти историю разговоров для этого контакта. Обратите внимание, " +"что история новых разговоров не ведётся; чтобы включить ведение истории " +"разговоров, перейдите в настройки учётной записи." -#: kmessview.cpp:2073 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" @@ -1998,37 +2183,43 @@ msgstr[0] "%1 новое письмо" msgstr[1] "%1 новых писем" msgstr[2] "%1 новых писем" -#: kmessviewdelegate.cpp:289 +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Показывать контактам к&акую песню я слушаю" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Показывать контактам к&акую песню я слушаю" + +#: kmessviewdelegate.cpp:290 #, kde-format -msgctxt "Group name in the contact list with online/total contacts of that group" +msgctxt "" +"Group name in the contact list with online/total contacts of that group" msgid "%1 (%2/%3)" msgstr "%1 (%2/%3)" -#: kmessviewdelegate.cpp:297 +#: kmessviewdelegate.cpp:298 #, kde-format msgctxt "Group name in the contact list with total contacts of that group" msgid "%1 (%2)" msgstr "%1 (%2)" -#: main.cpp:43 -#: settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 -msgid "KMess" -msgstr "KMess" - #: main.cpp:45 msgid "A Live Messenger client for KDE" msgstr "Live Messenger клиент для KDE" #: main.cpp:47 +#, fuzzy msgid "" -"(c) 2002-2009, Mike K. Bennett\n" -"(c) 2005-2009, Diederik van der Boor\n" -"(c) 2007-2009, Valerio Pilo\n" -"(c) 2008-2009, Antonio Nastasi\n" -"(c) 2008-2009, Ruben Vandamme\n" -"(c) 2009, Sjors Gielen\n" -"(c) 2009, Adam Goossens\n" +"(c) 2002-2010, Mike K. Bennett\n" +"(c) 2005-2010, Diederik van der Boor\n" +"(c) 2007-2010, Valerio Pilo\n" +"(c) 2008-2010, Antonio Nastasi\n" +"(c) 2008-2010, Ruben Vandamme\n" +"(c) 2009-2010, Sjors Gielen\n" +"(c) 2009-2010, Adam Goossens\n" msgstr "" "© Mike K. Bennett, 2002-2009\n" "© Diederik van der Boor, 2005-2009\n" @@ -2054,8 +2245,7 @@ msgstr "Разработчик" msgid "Michael Curtis" msgstr "Michael Curtis" -#: main.cpp:65 -#: main.cpp:74 +#: main.cpp:65 main.cpp:74 msgid "Jan Tönjes" msgstr "Jan Tönjes" @@ -2063,22 +2253,15 @@ msgstr "Jan Tönjes" msgid "Project support" msgstr "Поддержка проекта" -#: main.cpp:66 -#: main.cpp:67 -#: main.cpp:68 -#: main.cpp:69 -#: main.cpp:70 -#: main.cpp:71 +#: main.cpp:66 main.cpp:67 main.cpp:68 main.cpp:69 main.cpp:70 main.cpp:71 msgid "Current developer" msgstr "Текущий разработчик" -#: main.cpp:66 -#: main.cpp:106 +#: main.cpp:66 main.cpp:106 msgid "Diederik van der Boor" msgstr "Diederik van der Boor" -#: main.cpp:67 -#: main.cpp:129 +#: main.cpp:67 main.cpp:129 msgid "Valerio Pilo" msgstr "Valerio Pilo" @@ -2090,19 +2273,20 @@ msgstr "Antonio Nastasi" msgid "Ruben Vandamme" msgstr "Ruben Vandamme" -#: main.cpp:70 -#: main.cpp:169 +#: main.cpp:70 main.cpp:169 msgid "Sjors Gielen" msgstr "Sjors Gielen" -#: main.cpp:71 -#: main.cpp:168 +#: main.cpp:71 main.cpp:168 msgid "Adam Goossens" msgstr "Adam Goossens" #: main.cpp:74 -msgid "German translation, testing, documentation, web master, project management, etc..." -msgstr "Немецкий перевод, тестирование, документация, управление проектом, и тд..." +msgid "" +"German translation, testing, documentation, web master, project management, " +"etc..." +msgstr "" +"Немецкий перевод, тестирование, документация, управление проектом, и тд..." #: main.cpp:75 msgid "Dane Harnett" @@ -2118,7 +2302,8 @@ msgstr "David Vignoni" #: main.cpp:76 msgid "Main and yellow/blue/violet emoticon sets, Italian translation" -msgstr "Главный и желтый/голубой/фиолетовый наборы смайлов, итальянский перевод" +msgstr "" +"Главный и желтый/голубой/фиолетовый наборы смайлов, итальянский перевод" #: main.cpp:77 msgid "Cartoon emoticons" @@ -2144,8 +2329,7 @@ msgstr "Иконка KMess в стиле Oxygen" msgid "Michael Anderton" msgstr "Michael Anderton" -#: main.cpp:83 -#: main.cpp:112 +#: main.cpp:83 main.cpp:112 msgid "Panagiotis Papadopoulos" msgstr "Panagiotis Papadopoulos" @@ -2155,7 +2339,8 @@ msgstr "Сопровождающий по переводам" #: main.cpp:85 msgid "Arabic translation, internationalization of file saving fix." -msgstr "Перевод на арабский язык, интернационализация исправления сохранения файлов." +msgstr "" +"Перевод на арабский язык, интернационализация исправления сохранения файлов." #: main.cpp:85 msgid "Mohamed Aser" @@ -2181,9 +2366,7 @@ msgstr "Mauricio Rother" msgid "Leonel Freire" msgstr "Leonel Freire" -#: main.cpp:89 -#: main.cpp:90 -#: main.cpp:91 +#: main.cpp:89 main.cpp:90 main.cpp:91 msgid "More Brazilian Portuguese translation" msgstr "Другие бразильско-португальские переводы" @@ -2192,7 +2375,8 @@ msgid "Sergio Rafael Lemke" msgstr "Sergio Rafael Lemke" #: main.cpp:91 -msgid "Maurício Arozi Moraes" +#, fuzzy +msgid "Morris Arozi Moraes" msgstr "Maurício Arozi Moraes" #: main.cpp:93 @@ -2217,15 +2401,15 @@ msgstr "Lin Haoxiang" #: main.cpp:96 msgid "Simplified Chinese translation, file send bug fix, proxy connect code" -msgstr "Перевод на упрощённый китайский язык, исправление ошибки отправки файлов, код для прокси соединения" +msgstr "" +"Перевод на упрощённый китайский язык, исправление ошибки отправки файлов, " +"код для прокси соединения" -#: main.cpp:97 -#: main.cpp:164 +#: main.cpp:97 main.cpp:164 msgid "Liu Sizhuang" msgstr "Liu Sizhuang" -#: main.cpp:97 -#: main.cpp:98 +#: main.cpp:97 main.cpp:98 msgid "More Simplified Chinese translation" msgstr "Другие переводы на упрощённый китайский язык" @@ -2273,11 +2457,7 @@ msgstr "Arend van Beelen Jr." msgid "Dutch translation" msgstr "Перевод на голландский язык" -#: main.cpp:106 -#: main.cpp:107 -#: main.cpp:108 -#: main.cpp:109 -#: main.cpp:110 +#: main.cpp:106 main.cpp:107 main.cpp:108 main.cpp:109 main.cpp:110 msgid "More Dutch translation" msgstr "Другие переводы на голландский язык" @@ -2329,9 +2509,7 @@ msgstr "Markus Vuori" msgid "Joonas Niilola" msgstr "Joonas Niilola" -#: main.cpp:117 -#: main.cpp:118 -#: main.cpp:119 +#: main.cpp:117 main.cpp:118 main.cpp:119 msgid "More Finnish translation" msgstr "Другие переводы на финский язык" @@ -2363,9 +2541,7 @@ msgstr "Vincent Fretin" msgid "Andrea Blankenstijn" msgstr "Andrea Blankenstijn" -#: main.cpp:123 -#: main.cpp:124 -#: main.cpp:125 +#: main.cpp:123 main.cpp:124 main.cpp:125 msgid "More French translation" msgstr "Другие переводы на французский язык" @@ -2393,8 +2569,7 @@ msgstr "Другие переводы на венгерский язык" msgid "Pauli Henrik" msgstr "Pauli Henrik" -#: main.cpp:129 -#: main.cpp:130 +#: main.cpp:129 main.cpp:130 msgid "More Italian translation" msgstr "Другие переводы на итальянский язык" @@ -2407,8 +2582,11 @@ msgid "Andrea Decorte" msgstr "Andrea Decorte" #: main.cpp:131 -msgid "More Italian translation, Group selection in 'contact added user' dialog" -msgstr "Другие переводы на итальянский язык, Выбор групп в диалоге 'contact added user'" +msgid "" +"More Italian translation, Group selection in 'contact added user' dialog" +msgstr "" +"Другие переводы на итальянский язык, Выбор групп в диалоге 'contact added " +"user'" #: main.cpp:133 msgid "Daniel E. Moctezuma" @@ -2470,14 +2648,8 @@ msgstr "Перевод на испанский язык" msgid "J.C.A. Javi" msgstr "J.C.A. Javi" -#: main.cpp:143 -#: main.cpp:144 -#: main.cpp:145 -#: main.cpp:146 -#: main.cpp:147 -#: main.cpp:148 -#: main.cpp:149 -#: main.cpp:150 +#: main.cpp:143 main.cpp:144 main.cpp:145 main.cpp:146 main.cpp:147 +#: main.cpp:148 main.cpp:149 main.cpp:150 msgid "More Spanish translation" msgstr "Другие переводы на испанский язык" @@ -2545,8 +2717,7 @@ msgstr "Перевод на турецкий язык" msgid "Barbaros Ulutas" msgstr "Barbaros Ulutas" -#: main.cpp:157 -#: main.cpp:158 +#: main.cpp:157 main.cpp:158 msgid "More Turkish translation" msgstr "Другие переводы на турецкий язык" @@ -2568,7 +2739,9 @@ msgstr "Guido Solinas" #: main.cpp:162 msgid "Pictures in contact list code, contact client info, chat font zoom" -msgstr "Код для отображения изображений в списке контактов, информация о клиенте контакта, увеличение шрифта разговора" +msgstr "" +"Код для отображения изображений в списке контактов, информация о клиенте " +"контакта, увеличение шрифта разговора" #: main.cpp:163 msgid "File transfer thumbnails" @@ -2607,8 +2780,12 @@ msgid "Matteo Nardi" msgstr "Matteo Nardi" #: main.cpp:168 -msgid "Notifications blocking option, winks disabling option, last message date feature" -msgstr "Опция блокировки уведомлений, опция отключения подмигиваний, возможность отображения даты последнего сообщения" +msgid "" +"Notifications blocking option, winks disabling option, last message date " +"feature" +msgstr "" +"Опция блокировки уведомлений, опция отключения подмигиваний, возможность " +"отображения даты последнего сообщения" #: main.cpp:169 msgid "IRC-like commands in the chat window" @@ -2647,7 +2824,6 @@ msgid "GnomeMeeting developer" msgstr "Разработчик GnomeMeeting" #: main.cpp:177 -#, fuzzy msgid "Guy with a bag over his head" msgstr "" @@ -2660,8 +2836,9 @@ msgid "Camille Begue" msgstr "Camille Begue" #: main.cpp:178 -#, fuzzy -msgid "Chat History functionality when disconnected, autologin checkbox on login screen" +msgid "" +"Chat History functionality when disconnected, autologin checkbox on login " +"screen" msgstr "" #: main.cpp:179 @@ -2685,59 +2862,86 @@ msgid "Anastasios Bourazanis" msgstr "Anastasios Bourazanis" #: main.cpp:181 -msgid "Emoticon preview in settings page,clickable contact properties dialog text" -msgstr "Предварительный просмотр смайлов на странице настроек, текст диалога настроек контакта с возможностью нажатия" +msgid "" +"Emoticon preview in settings page,clickable contact properties dialog text" +msgstr "" +"Предварительный просмотр смайлов на странице настроек, текст диалога " +"настроек контакта с возможностью нажатия" -#: main.cpp:184 +#: main.cpp:182 +msgid "Internationalization fixes, drag'n'drop of images into display pictures" +msgstr "" + +#: main.cpp:182 +#, fuzzy +msgid "Marco Mentasti" +msgstr "Саркастический" + +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Вдохновляющий и отсортированный код" -#: main.cpp:184 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:185 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:185 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" -msgstr "Код старых всплывающих сообщений, исходный код p2p, обработчик задач MSN" +msgstr "" +"Код старых всплывающих сообщений, исходный код p2p, обработчик задач MSN" -#: main.cpp:186 +#: main.cpp:188 msgid "Idle timer code" msgstr "Код таймера простаивания" -#: main.cpp:186 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:187 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:187 -#, fuzzy +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "" -#: main.cpp:188 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:188 -msgid "Custom crash handler implementation, System tray icon overlay implementation" -msgstr "Осуществление обработки пользовательских крахов приложения, осуществление перекрытия иконки системной панели задач" +#: main.cpp:190 +msgid "" +"Custom crash handler implementation, System tray icon overlay implementation" +msgstr "" +"Осуществление обработки пользовательских крахов приложения, осуществление " +"перекрытия иконки системной панели задач" -#: main.cpp:189 -msgid "KNotify not giving focus bug fix and KWin focus stealing prevention workaround" -msgstr "Исправление ошибки - KNotify не предоставляет фокус и работа над предотвращением перехватывания фокуса Kwin'ом" +#: main.cpp:191 +msgid "" +"KNotify not giving focus bug fix and KWin focus stealing prevention " +"workaround" +msgstr "" +"Исправление ошибки - KNotify не предоставляет фокус и работа над " +"предотвращением перехватывания фокуса Kwin'ом" -#: main.cpp:189 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:192 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2745,39 +2949,40 @@ msgstr "" "Вы можете отправлять исправления ошибок и патчи на форум KMess!\n" "Если вы считаете,что ваше имя было упущено, свяжитесь с нами!" -#: main.cpp:192 +#: main.cpp:194 msgid "Your name here?" msgstr "Твоё имя здесь?" -#: main.cpp:195 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Симбирятин Дмитрий" -#: main.cpp:196 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "slpiv@mail.ru" -#: main.cpp:202 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Не показывать окно списка контактов изначально " -#: main.cpp:203 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Автологин с предоставленным электронным адресом" -#: main.cpp:208 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Начать отладочный тест (только для разработчиков)" -#: main.cpp:210 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." msgstr "" "Соединиться с выбранным сервером вместо официального Live сервера .\n" -"Использовать \"localhost\" или \"127.0.0.1\" для соединения с локальным тестовым сервером KMess." +"Использовать \"localhost\" или \"127.0.0.1\" для соединения с локальным " +"тестовым сервером KMess." #: model/contactlist.cpp:1824 msgid "Individuals" @@ -2836,13 +3041,17 @@ msgstr "" #: network/applications/filetransfer.cpp:290 #: network/applications/filetransferp2p.cpp:376 #, kde-format -msgid "The transfer of the file "%1" failed. Could not save the file." +msgid "" +"The transfer of the file "%1" failed. Could not save the file." msgstr "Передача файла "%1" не удалась. Невозможно сохранить файл." #: network/applications/filetransfer.cpp:295 #, kde-format -msgid "The transfer of the file "%1" failed. Could not open the destination file." -msgstr "Передача файла "%1" не удалась. Невозможно открыть файл назначения." +msgid "" +"The transfer of the file "%1" failed. Could not open the " +"destination file." +msgstr "" +"Передача файла "%1" не удалась. Невозможно открыть файл назначения." #: network/applications/filetransfer.cpp:319 msgid "Transfer accepted." @@ -2892,13 +3101,15 @@ msgstr "Успешно получен файл "%1"." #: network/applications/filetransfer.cpp:742 #: network/applications/filetransferp2p.cpp:811 #, kde-format -msgid "The transfer of the file "%1" failed. The file does not exist." +msgid "" +"The transfer of the file "%1" failed. The file does not exist." msgstr "Передача файла "%1" не удалась. Файл не существует." #: network/applications/filetransfer.cpp:747 #: network/applications/filetransferp2p.cpp:816 #, kde-format -msgid "The transfer of the file "%1" failed. The file could not be read." +msgid "" +"The transfer of the file "%1" failed. The file could not be read." msgstr "Передача файла "%1" не удалась. Файл не может быть прочитан." #: network/applications/filetransfer.cpp:774 @@ -2924,7 +3135,8 @@ msgstr "Опции переговоров для соединения" #: network/applications/filetransferp2p.cpp:160 #: network/extra/msnftpconnection.cpp:132 msgid "The file transfer invitation was cancelled. Bad data was received." -msgstr "Приглашение на передачу файла было отменено. Были приняты неверные данные." +msgstr "" +"Приглашение на передачу файла было отменено. Были приняты неверные данные." #: network/applications/filetransferp2p.cpp:404 #, kde-format @@ -2938,8 +3150,12 @@ msgstr "Файл не может быть записан" #: network/applications/inktransferp2p.cpp:108 #, kde-format msgctxt "Error message shown in chat, %1 is the contact's friendly name" -msgid "%1 has tried to send you an handwritten message, but it could not be received." -msgstr "%1 пытался отправить рукописное сообщение, но оно не может быть принято." +msgid "" +"%1 has tried to send you an handwritten message, but it could not be " +"received." +msgstr "" +"%1 пытался отправить рукописное сообщение, но оно не может быть " +"принято." #: network/applications/inktransferp2p.cpp:114 #, kde-format @@ -2957,7 +3173,8 @@ msgstr "Приглашение было прервано. Внутренняя #: network/applications/mimeapplication.cpp:170 msgid "The invitation was aborted. Timeout while waiting for user to accept." -msgstr "Приглашение было прервано. Истекло время ожидания согласия от пользователя." +msgstr "" +"Приглашение было прервано. Истекло время ожидания согласия от пользователя." #: network/applications/mimeapplication.cpp:175 msgid "The invitation was aborted. Timeout while waiting for file data." @@ -2965,7 +3182,8 @@ msgstr "Приглашение было прервано. Истекло вре #: network/applications/mimeapplication.cpp:180 msgid "The invitation was aborted. The switchboard closed the chat connection." -msgstr "Приглашение было прервано. Панель переключения закрыла соединение разговора." +msgstr "" +"Приглашение было прервано. Панель переключения закрыла соединение разговора." #: network/applications/mimeapplication.cpp:186 msgid "The invitation was aborted." @@ -2973,7 +3191,9 @@ msgstr "Приглашение было прервано." #: network/applications/p2papplication.cpp:215 msgid "The contact has invited you to an activity not yet supported by KMess." -msgstr "Контакт приглашает присоединиться к деятельности, которая пока что не поддерживается KMess." +msgstr "" +"Контакт приглашает присоединиться к деятельности, которая пока что не " +"поддерживается KMess." #: network/applications/p2papplication.cpp:520 #: network/applications/p2papplication.cpp:687 @@ -2982,8 +3202,12 @@ msgstr "Контакт приглашает присоединиться к де #: network/applications/p2papplication.cpp:1763 #: network/applications/p2papplication.cpp:1887 #: network/applications/p2papplicationbase.cpp:706 -msgid "The invitation was cancelled. The contact sent bad data, or KMess does not support it." -msgstr "Приглашение было отменено. Контакт отправил повреждённые данные, или KMess не поддерживает их." +msgid "" +"The invitation was cancelled. The contact sent bad data, or KMess does not " +"support it." +msgstr "" +"Приглашение было отменено. Контакт отправил повреждённые данные, или KMess " +"не поддерживает их." #: network/applications/p2papplication.cpp:1085 msgid "The transfer failed. Data preparation failed." @@ -2996,8 +3220,11 @@ msgstr "Приглашение было отменено. Сообщение б #: network/applications/p2papplication.cpp:1744 #: network/applications/p2papplicationbase.cpp:855 #: network/applications/p2papplicationbase.cpp:935 -msgid "The transfer failed. The contact sent bad data, or KMess does not support it." -msgstr "Передача не удалась. Контакт отправил повреждённые данные или KMess не поддерживает их." +msgid "" +"The transfer failed. The contact sent bad data, or KMess does not support it." +msgstr "" +"Передача не удалась. Контакт отправил повреждённые данные или KMess не " +"поддерживает их." #: network/applications/p2papplication.cpp:1810 #: network/applications/p2papplication.cpp:1828 @@ -3014,19 +3241,26 @@ msgstr "Ожидание соединения с %1, порт %2" #: network/applications/p2papplication.cpp:2144 #: network/applications/p2papplication.cpp:3378 msgid "Reverting to indirect file transfer (this could be slow)." -msgstr "Возвращаюсь к непрямой передаче файлов ( это может занять некоторое время)." +msgstr "" +"Возвращаюсь к непрямой передаче файлов ( это может занять некоторое время)." #: network/applications/p2papplication.cpp:3169 msgid "Waiting for connection" msgstr "Ожидание соединения" #: network/applications/p2papplication.cpp:3423 -msgid "The invitation was cancelled. A timeout occurred waiting for the contact to accept." +msgid "" +"The invitation was cancelled. A timeout occurred waiting for the contact to " +"accept." msgstr "Приглашение было отменено. Истекло время ожидания согласия контакта." #: network/applications/p2papplication.cpp:3432 -msgid "The invitation was cancelled. A timeout occurred waiting for a connection to succeed or fail." -msgstr "Приглашение было отменено. Истекло время ожидания успешного или неудачного соединения." +msgid "" +"The invitation was cancelled. A timeout occurred waiting for a connection to " +"succeed or fail." +msgstr "" +"Приглашение было отменено. Истекло время ожидания успешного или неудачного " +"соединения." #: network/applications/p2papplication.cpp:3499 #: network/applications/p2papplication.cpp:3583 @@ -3072,8 +3306,12 @@ msgid "remote desktop" msgstr "удалённый рабочий стол" #: network/applications/unknownapplication.cpp:71 -msgid "You are invited to start a voice conversation but support for this was not installed" -msgstr "Вас пригласили начать голосовую беседу, но поддержка для этого не была установлена." +msgid "" +"You are invited to start a voice conversation but support for this was not " +"installed" +msgstr "" +"Вас пригласили начать голосовую беседу, но поддержка для этого не была " +"установлена." #: network/extra/msnftpconnection.cpp:120 #, kde-format @@ -3131,7 +3369,9 @@ msgstr "Неверный параметр команды" #: network/msnconnection.cpp:385 msgid "The email address you have tried to add is not a Live Messenger account" -msgstr "Электронный адрес, который вы пытались добавить, не является учётной записью Live Messenger" +msgstr "" +"Электронный адрес, который вы пытались добавить, не является учётной записью " +"Live Messenger" #: network/msnconnection.cpp:390 msgid "Domain name missing" @@ -3146,8 +3386,11 @@ msgid "The given account name is invalid" msgstr "Данное имя учётной записи неверно" #: network/msnconnection.cpp:401 -msgid "This account name is invalid, or your Passport account has not been confirmed yet" -msgstr "Имя учётной записи неверно, или учётная запись ещё не была подтверждена" +msgid "" +"This account name is invalid, or your Passport account has not been " +"confirmed yet" +msgstr "" +"Имя учётной записи неверно, или учётная запись ещё не была подтверждена" #: network/msnconnection.cpp:404 msgid "Your contact list is full" @@ -3176,15 +3419,25 @@ msgstr "Режим был ранее включён" #: network/msnconnection.cpp:429 msgctxt "MSN error" msgid "This contact cannot be added to both allow and block list" -msgstr "Контакт не может быть одновременно добавлен в список разрешённых и заблокированных контактов" +msgstr "" +"Контакт не может быть одновременно добавлен в список разрешённых и " +"заблокированных контактов" #: network/msnconnection.cpp:433 -msgid "The group name is already present in your contact list. Please use a different name" -msgstr "Группа с таким именем уже присутствует в списке контактов. Используйте другое имя" +msgid "" +"The group name is already present in your contact list. Please use a " +"different name" +msgstr "" +"Группа с таким именем уже присутствует в списке контактов. Используйте " +"другое имя" #: network/msnconnection.cpp:437 -msgid "Your contact list has too many groups; you are allowed to only have at most 30" -msgstr "В списке контактов слишком много групп; имеется возможность иметь не более 30 групп" +msgid "" +"Your contact list has too many groups; you are allowed to only have at most " +"30" +msgstr "" +"В списке контактов слишком много групп; имеется возможность иметь не более " +"30 групп" #: network/msnconnection.cpp:441 msgid "This group cannot be changed" @@ -3199,7 +3452,8 @@ msgid "This group is not empty" msgstr "Эта группа не пуста" #: network/msnconnection.cpp:454 -msgid "The group name is too long; it cannot be longer than 61 bytes" +#, fuzzy +msgid "The group name is too long; it cannot be longer than 61 characters" msgstr "Имя группы слишком длинное; оно не может быть длиннее чем 61 байт" #: network/msnconnection.cpp:459 @@ -3244,7 +3498,8 @@ msgid "Not logged in" msgstr "Не подключён" #: network/msnconnection.cpp:493 -msgctxt "MSN error, due to e.g. trying the beta service without an allowed account" +msgctxt "" +"MSN error, due to e.g. trying the beta service without an allowed account" msgid "This account was denied access to the Live Messenger service" msgstr "Учётная запись была лишена доступа к сервису Live Messenger" @@ -3301,8 +3556,8 @@ msgid "Not accepting new contacts" msgstr "Не принимает новые контакты" #: network/msnconnection.cpp:559 -#, fuzzy -msgid "You have a Kids Passport account, you need parental consent to chat online" +msgid "" +"You have a Kids Passport account, you need parental consent to chat online" msgstr "" #: network/msnconnection.cpp:562 @@ -3318,11 +3573,14 @@ msgid "Error accessing contact list, try again later" msgstr "Ошибка доступа к списку контактов, повторите попытку позже" #: network/msnconnection.cpp:585 -msgid "The Live Messenger service is temporarily unavailable. There was an internal server error" +msgid "" +"The Live Messenger service is temporarily unavailable. There was an internal " +"server error" msgstr "Сервис Live Messenger временно недоступен. Внутренняя ошибка сервера" #: network/msnconnection.cpp:596 -msgid "The Live Messenger service is temporarily unavailable. The server is too busy" +msgid "" +"The Live Messenger service is temporarily unavailable. The server is too busy" msgstr "Сервис Live Messenger временно недоступен. Сервер занят" #: network/msnconnection.cpp:600 @@ -3356,8 +3614,10 @@ msgstr "Проверка подлинности не удалась" #: network/msnconnection.cpp:635 #, kde-format -msgid "Unknown error code received from the server: %1
      Technical details: %2" -msgstr "Код неизвестной ошибки был получен от сервера: %1
      Технические детали: %2" +msgid "" +"Unknown error code received from the server: %1
      Technical details: %2" +msgstr "" +"Код неизвестной ошибки был получен от сервера: %1
      Технические детали: %2" #: network/msnconnection.cpp:657 #, kde-format @@ -3369,28 +3629,24 @@ msgstr "Ошибка MSN %1" msgid "Trying the HTTP fallback..." msgstr "Пробую запасной HTTP..." -#: network/msnnotificationconnection.cpp:832 -msgid "Triple DES encryption is not supported. This means you probably do not have installed the qca2 or qca2-plugin-ossl packages. Please install them and retry." -msgstr "Тройное DES шифрование не поддерживается. Это может означать, что пакеты qca2 или qca2-plugin-ossl не установлены. Установите их и повторите попытку снова." - -#: network/msnnotificationconnection.cpp:1410 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Проверка подлинности..." -#: network/msnnotificationconnection.cpp:1434 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Проверено на подлинность" -#: network/msnnotificationconnection.cpp:1873 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Соединение..." -#: network/msnnotificationconnection.cpp:2018 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Была получена неизвестная команда от сервера: %1" -#: network/msnnotificationconnection.cpp:2178 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3399,153 +3655,199 @@ msgstr[0] "%1 минута" msgstr[1] "%1 минут" msgstr[2] "%1 минут" -#: network/msnnotificationconnection.cpp:2181 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Сервер закрывается на обслуживание в %1!" -#: network/msnnotificationconnection.cpp:2186 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Сервер Live Messenger отключится для обслуживания в %1" -#: network/msnnotificationconnection.cpp:2387 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
      Details: %1" msgstr "KMess не смог обработать оффлайн сообщения.
      Детали: %1" -#: network/msnnotificationconnection.cpp:2388 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP клиент больше не действителен." -#: network/msnnotificationconnection.cpp:2658 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Превышен лимит времени на проверку подлинности" -#: network/msnnotificationconnection.cpp:2840 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Ожидание списка контактов..." -#: network/msnnotificationconnection.cpp:2886 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

      Warning: %1

      " msgstr "

      Предупреждение: %1

      " -#: network/msnnotificationconnection.cpp:2887 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Предупреждение от MSN" -#: network/msnnotificationconnection.cpp:2959 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
      Internal error reason: %1" msgstr "
      Причина внутренней ошибки: %1" -#: network/msnnotificationconnection.cpp:3011 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" -msgid "

      Authentication has failed, please verify your account email and password.

      " -msgstr "

      Проверка подлинности не удалась, проверьте электронный адрес и пароль.

      " +msgid "" +"

      Authentication has failed, please verify your account email and password." +"

      " +msgstr "" +"

      Проверка подлинности не удалась, проверьте электронный адрес и пароль.

      " -#: network/msnnotificationconnection.cpp:3013 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "Ошибка MSN" -#: network/msnnotificationconnection.cpp:3024 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

      The account %1 has been connected from another location.

      " msgstr "

      Учётная запись %1 была подключена в другом месте.

      " -#: network/msnnotificationconnection.cpp:3027 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      You have been disconnected: you have connected with the account %1 from another Messenger client, or from another location.

      " -msgstr "

      Вы были отключены: произошло подключение к учётной записи %1 с помощью другого клиента Live Messenger, или из другого места.

      " +msgid "" +"

      You have been disconnected: you have connected with the account %1 " +"from another Messenger client, or from another location.

      " +msgstr "" +"

      Вы были отключены: произошло подключение к учётной записи %1 с " +"помощью другого клиента Live Messenger, или из другого места.

      " -#: network/msnnotificationconnection.cpp:3039 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" -msgid "

      Unable to connect to the Live Messenger service.
      Maybe you need to authenticate before you can access the network?

      " -msgstr "

      Невозможно подключится к сервису Live Messenger.
      Возможно, вам необходимо пройти проверку подлинности перед получением доступа к сети?

      " +msgid "" +"

      Unable to connect to the Live Messenger service.
      Maybe you need to " +"authenticate before you can access the network?

      " +msgstr "" +"

      Невозможно подключится к сервису Live Messenger.
      Возможно, вам " +"необходимо пройти проверку подлинности перед получением доступа к сети?

      " -#: network/msnnotificationconnection.cpp:3042 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      KMess could not connect to the Live Messenger servers.
      There may be a problem with your Internet connection, or the Live Messenger servers may be temporarily unavailable.
      It is also possible that an authentication to a web page or proxy may be required to access the network.

      Click here to visit the Messenger service status page.

      " -msgstr "

      KMess не может подключится к серверам Live Messenger.
      Возможно, это проблема интернет соединения, или сервера Live Messenger временно недоступны.
      Также, возможно, необходима проверка подлинности веб-страницы или прокси-сервера для получения доступа к сети.

      Нажмите здесь для посещения страницы статуса сервиса Live Messenger.

      " +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.
      It is also possible that an authentication " +"to a web page or proxy may be required to access the network.

      Click here to visit the Messenger service status page.

      " +msgstr "" +"

      KMess не может подключится к серверам Live Messenger.
      Возможно, это " +"проблема интернет соединения, или сервера Live Messenger временно недоступны." +"
      Также, возможно, необходима проверка подлинности веб-страницы или " +"прокси-сервера для получения доступа к сети.

      Нажмите " +"здесь для посещения страницы статуса сервиса Live Messenger.

      " -#: network/msnnotificationconnection.cpp:3055 -msgid "

      Unable to resolve the authentication on the client
      Maybe you do not have installed qca2 and/or qca2-plugin-ossl?

      " -msgstr "

      Невозможно разрешить проверку подлинности в клиенте
      Возможно, пакеты qca2 и/или qca2-plugin-ossl не установлены?

      " +#: network/msnnotificationconnection.cpp:3146 +msgid "" +"

      Unable to resolve the authentication on the client
      Maybe you do not " +"have installed qca2 and/or qca2-plugin-ossl?

      " +msgstr "" +"

      Невозможно разрешить проверку подлинности в клиенте
      Возможно, пакеты " +"qca2 и/или qca2-plugin-ossl не установлены?

      " -#: network/msnnotificationconnection.cpp:3057 -msgid "

      KMess could not connect to the Live Messenger servers.
      You probably need to install qca2 and qca2-plugin-ossl to make KMess work.
      It is also possible that the MSN network is unavailable at the moment.

      " -msgstr "

      KMess не может соединиться с серверами Live Messenger.
      Возможно, необходима установка пакетов qca2 и qca2-plugin-ossl для работы KMess.
      Также, возможно, что сеть MSN не доступна в данный момент.

      " +#: network/msnnotificationconnection.cpp:3148 +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      You probably " +"need to install qca2 and qca2-plugin-ossl to make KMess work.
      It is also " +"possible that the MSN network is unavailable at the moment.

      " +msgstr "" +"

      KMess не может соединиться с серверами Live Messenger.
      Возможно, " +"необходима установка пакетов qca2 и qca2-plugin-ossl для работы KMess.
      Также, возможно, что сеть MSN не доступна в данный момент.

      " -#: network/msnnotificationconnection.cpp:3072 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

      Unable to connect to the Live Messenger service.

      " msgstr "

      Невозможно соединиться с сервером Live Messenger.

      " -#: network/msnnotificationconnection.cpp:3074 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      KMess could not connect to the Live Messenger servers.
      There may be a problem with your Internet connection, or the Live Messenger servers may be temporarily unavailable.

      Click here to visit the Messenger service status page.

      " -msgstr "

      KMess не может соединиться с серверами Live Messenger.
      Возможно, это проблема интернет соединения, или сервера Live Messenger временно не доступны.

      Нажмите здесь для посещения страницы статуса сервиса Live Messenger.

      " +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.

      Click here to visit the " +"Messenger service status page.

      " +msgstr "" +"

      KMess не может соединиться с серверами Live Messenger.
      Возможно, это " +"проблема интернет соединения, или сервера Live Messenger временно не " +"доступны.

      Нажмите здесь для посещения страницы " +"статуса сервиса Live Messenger.

      " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3176 #, kde-format -msgctxt "Connection error (Server-reported user error): passive notification message" +msgctxt "" +"Connection error (Server-reported user error): passive notification message" msgid "

      Error: %1

      " msgstr "

      Ошибка: %1

      " -#: network/msnnotificationconnection.cpp:3087 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

      The Live Messenger server has reported an error:

      %1

      " msgstr "

      Сервер Live Messenger сообщил об ошибке:

      %1

      " -#: network/msnnotificationconnection.cpp:3098 +#: network/msnnotificationconnection.cpp:3189 #, kde-format -msgctxt "Connection error (Server-reported server error): passive notification message" +msgctxt "" +"Connection error (Server-reported server error): passive notification message" msgid "

      Messenger Service Error: %1

      " msgstr "

      Ошибка сервиса Live Messenger: %1

      " -#: network/msnnotificationconnection.cpp:3100 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

      The Live Messenger server has reported an error:

      %1

      " msgstr "

      Сервер Live Messenger сообщил об ошибке:

      %1

      " -#: network/msnnotificationconnection.cpp:3108 +#: network/msnnotificationconnection.cpp:3199 #, kde-format -msgctxt "Connection error (Server-reported client error): passive notification message" +msgctxt "" +"Connection error (Server-reported client error): passive notification message" msgid "

      KMess Error: %1

      " msgstr "

      Ошибка KMess: %1

      " -#: network/msnnotificationconnection.cpp:3110 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

      KMess has encountered an internal error:

      %1

      " msgstr "

      KMess обнаружил внутреннюю ошибку:

      %1

      " -#: network/msnnotificationconnection.cpp:3121 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

      Network connection lost.

      " msgstr "

      Сетевое подключение потеряно.

      " -#: network/msnnotificationconnection.cpp:3123 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

      Connection to the Live Messenger server has been lost.

      " msgstr "

      Подключение к серверу Live Messenger было потеряно.

      " -#: network/msnnotificationconnection.cpp:3179 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" -msgid "

      Developer info:
      Error number: %1
      Error string: %2

      " -msgstr "

      Информация для разработчика:
      Номер ошибки: %1
      Строка ошибки: %2

      " +msgid "" +"

      Developer info:
      Error number: %1
      Error string: %2

      " +msgstr "" +"

      Информация для разработчика:
      Номер ошибки: %1
      Строка ошибки: %2

      " #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3561,8 +3863,12 @@ msgstr "%1 (Код внутренней ошибки: %2)" #: network/msnsockethttp.cpp:701 #, kde-format msgctxt "Error message shown with HTTP connection" -msgid "%1 (Internal error code: %2)
      Response: %3 %4
      Redirection target: %5" -msgstr "%1 (Код внутренней ошибки: %2)
      Ответ: %3 %4
      Цель перенаправления: %5" +msgid "" +"%1 (Internal error code: %2)
      Response: %3 %4
      Redirection " +"target: %5" +msgstr "" +"%1 (Код внутренней ошибки: %2)
      Ответ: %3 %4
      Цель " +"перенаправления: %5" #: network/msnsockettcp.cpp:366 msgid "Connection time limit exceeded" @@ -3580,54 +3886,59 @@ msgstr[2] "%1 пингов потеряно" msgid "The connection to the server was lost" msgstr "Соединение с сервером было потеряно" -#: network/soap/addressbookservice.cpp:777 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" -msgstr "Указанный электронный адрес, \"%1\", не является верным электронным адресом!" +msgstr "" +"Указанный электронный адрес, \"%1\", не является верным электронным адресом!" -#: network/soap/addressbookservice.cpp:787 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" -msgid "The specified email address, \"%1\", does not belong to a Live Messenger account!" -msgstr "Указанный электронный адрес, \"%1\", не принадлежит учётной записи Live Messenger!" +msgid "" +"The specified email address, \"%1\", does not belong to a Live Messenger " +"account!" +msgstr "" +"Указанный электронный адрес, \"%1\", не принадлежит учётной записи Live " +"Messenger!" -#: network/soap/addressbookservice.cpp:795 -#: network/soap/addressbookservice.cpp:818 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Неверный запрос веб-сервиса (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Веб-сервис недоступен (%1)" -#: network/soap/httpsoapconnection.cpp:510 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Слишком много перенаправлений веб-сервисом" -#: network/soap/httpsoapconnection.cpp:554 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Веб-сервис оффлайн сообщений в данный момент не доступен" -#: network/soap/httpsoapconnection.cpp:560 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Веб-сервис Live Messenger испытывает проблемы" -#: network/soap/httpsoapconnection.cpp:574 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Неверный ответ от веб-сервиса %1 (%2)" -#: network/soap/httpsoapconnection.cpp:613 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Нет ответа от веб-сервиса" @@ -3773,103 +4084,184 @@ msgstr "%1
      на телефоне" msgid "%1
      is out for lunch" msgstr "%1
      ест" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 новое письмо" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Для контактов в той же группе" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Контакт не в сети" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Контакт не в сети" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "Иконка KMess" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
      '%1'
      by '%2'" msgstr "Новый электронный адрес:
      '%1'
      by '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

      Closing the main window will keep KMess running in the system tray.

      You can open KMess again by clicking on the bird icon, which is now " +"flashing.
      Use 'Quit' from the 'Connect' menu to quit the application.

      " +msgstr "" +"При закрытии главного окна, KMess продолжает работать в системном трее. " +"Используйте \"Выход\" из меню \"Соединение\" для выхода из приложения." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Уменьшается в системный трей" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Соединение с %1, порт %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

      Connected as:
      %1 (%2)

      " +msgstr "
      %1 (%2)" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Подключён" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

      Not connected

      " +msgstr "

      Сетевое подключение потеряно.

      " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Начать разговор" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Оставить сообщение" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Просмотреть сообщение" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Подробнее" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Прочитать письмо" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Спрятать" -#: notification/systemtraywidget.cpp:79 -msgid "Closing the main window will keep KMess running in the system tray. Use 'Quit' from the 'Connect' menu to quit the application." -msgstr "При закрытии главного окна, KMess продолжает работать в системном трее. Используйте \"Выход\" из меню \"Соединение\" для выхода из приложения." +#: notification/systemtraywidget.cpp:85 +msgid "" +"Closing the main window will keep KMess running in the system tray. Use " +"'Quit' from the 'Connect' menu to quit the application." +msgstr "" +"При закрытии главного окна, KMess продолжает работать в системном трее. " +"Используйте \"Выход\" из меню \"Соединение\" для выхода из приложения." -#: notification/systemtraywidget.cpp:90 -#: notification/systemtraywidget.cpp:189 -#: notification/systemtraywidget.cpp:199 -msgid "Docking in System Tray" -msgstr "Уменьшается в системный трей" - -#: notification/systemtraywidget.cpp:242 +#: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" msgid "KMess %1" msgstr "KMess %1" -#: notification/systemtraywidget.cpp:248 -#, kde-format +#: notification/systemtraywidget.cpp:254 +#, fuzzy, kde-format msgctxt "Tray icon tooltip, HTML version" -msgid "
      %1 (%2)" +msgid "
      %1 (%2)%3" msgstr "
      %1 (%2)" -#: notification/systemtraywidget.cpp:254 +#: notification/systemtraywidget.cpp:258 #, kde-format +msgctxt "Tray icon email count, HTML version" +msgid "
      %1 emails" +msgstr "" + +#: notification/systemtraywidget.cpp:263 +#, fuzzy, kde-format msgctxt "Tray icon tooltip, text version" -msgid " - %1 (%2)" +msgid " - %1 (%2)%3" msgstr " - %1 (%2)" -#: settings/accountpage.cpp:81 +#: notification/systemtraywidget.cpp:267 +#, kde-format +msgctxt "Tray icon email count, text version" +msgid " - %1 emails" +msgstr "" + +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Обзор..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Обзор и кадрирование изображения..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Установить предыдущее изображение..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 -#: rc.cpp:384 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Аватар" -#: settings/accountpage.cpp:489 -msgid "Downloading of display picture failed" -msgstr "Загрузка аватара не удалась" - -#: settings/accountpage.cpp:548 -msgid "" -"An error occurred while trying to change the display picture.\n" -"Make sure that you have selected an existing image file." -msgstr "" -"Произошла ошибка при попытке изменения аватара.\n" -"Убедитесь, что вы выбрали существующий файл изображения." - -#: settings/accountsettingsdialog.cpp:62 -#: settings/globalsettingsdialog.cpp:69 +#: settings/accountsettingsdialog.cpp:62 settings/globalsettingsdialog.cpp:69 #: settings/globalsettingsdialog.cpp:70 msgid "Settings" msgstr "Настройки" @@ -3882,13 +4274,11 @@ msgstr "Учётная запись" msgid "My Account" msgstr "Моя учётная запись" -#: settings/accountsettingsdialog.cpp:85 -#: settings/accountsettingsdialog.cpp:86 +#: settings/accountsettingsdialog.cpp:85 settings/accountsettingsdialog.cpp:86 msgid "Contact List" msgstr "Список контактов" -#: settings/accountsettingsdialog.cpp:96 -#: settings/accountsettingsdialog.cpp:97 +#: settings/accountsettingsdialog.cpp:96 settings/accountsettingsdialog.cpp:97 msgid "Chatting" msgstr "Разговор" @@ -3901,15 +4291,21 @@ msgstr "История разговоров" msgctxt "Button tooltip text" msgid "" "Click here to delete this account from the list of registered accounts.\n" -"You cannot delete the currently connected account nor a guest account, which will be deleted when you disconnect." +"You cannot delete the currently connected account nor a guest account, which " +"will be deleted when you disconnect." msgstr "" -"Нажмите здесь, чтобы удалить эту учётную запись из списка зарегистрированных\n" -"учётных записей. Вы не можете удалить подключённую на данный момент учётную запись или гостевую учётную запись, которые будут удалены после отключения." +"Нажмите здесь, чтобы удалить эту учётную запись из списка " +"зарегистрированных\n" +"учётных записей. Вы не можете удалить подключённую на данный момент учётную " +"запись или гостевую учётную запись, которые будут удалены после отключения." #: settings/accountsettingsdialog.cpp:207 #, kde-format -msgid "The email address you have entered is not valid, and cannot be used as an account: '%1'" -msgstr "Введённый электронный адрес, не может использоваться как учётная запись: '%1'" +msgid "" +"The email address you have entered is not valid, and cannot be used as an " +"account: '%1'" +msgstr "" +"Введённый электронный адрес, не может использоваться как учётная запись: '%1'" #: settings/accountsettingsdialog.cpp:215 #, kde-format @@ -3926,8 +4322,12 @@ msgstr "Уверены, что хотите удалить эту учётную #: settings/accountsmanagerpage.cpp:160 #, kde-format -msgid "Are you sure you want to delete the account '%1' ?
      All settings of this account will be lost." -msgstr "Уверены, что хотите удалить учётную запись '%1' ?
      Все настройки этой учётной записи будут потеряны." +msgid "" +"Are you sure you want to delete the account '%1' ?
      All settings of " +"this account will be lost." +msgstr "" +"Уверены, что хотите удалить учётную запись '%1' ?
      Все настройки " +"этой учётной записи будут потеряны." #: settings/chatstylepage.cpp:371 msgid "Hi, how are you doing? :)" @@ -3959,13 +4359,11 @@ msgstr "Удалить смайл" msgid "KMess Settings" msgstr "Настройки KMess" -#: settings/globalsettingsdialog.cpp:61 -#: settings/globalsettingsdialog.cpp:62 +#: settings/globalsettingsdialog.cpp:61 settings/globalsettingsdialog.cpp:62 msgid "Accounts" msgstr "Учётные записи" -#: settings/globalsettingsdialog.cpp:65 -#: settings/globalsettingsdialog.cpp:67 +#: settings/globalsettingsdialog.cpp:65 settings/globalsettingsdialog.cpp:67 msgid "Notifications" msgstr "Уведомления" @@ -3983,17 +4381,31 @@ msgstr "Введите консольную команду для запуска #: settings/miscellaneouspage.cpp:291 #, c-format -msgid "The console command you have specified to launch a custom web browser does not contain the '%u' parameter. Without this, opening web sites will not work.
      Do you want KMess to add it for you?" -msgstr "Консольная команда, выбранная для запуска пользовательского веб-браузера, не содержит параметр '%u'. Без этого открытие веб-страниц не будет работать.
      Хотите, чтобы KMess добавил её?" +msgid "" +"The console command you have specified to launch a custom web browser " +"does not contain the '%u' parameter. Without this, opening web sites will " +"not work.
      Do you want KMess to add it for you?" +msgstr "" +"Консольная команда, выбранная для запуска пользовательского веб-" +"браузера, не содержит параметр '%u'. Без этого открытие веб-страниц не будет " +"работать.
      Хотите, чтобы KMess добавил её?" #: settings/miscellaneouspage.cpp:316 msgid "You have to specify a console command to launch a custom email client!" -msgstr "Введите консольную команду для запуска пользовательского клиента электронной почты!" +msgstr "" +"Введите консольную команду для запуска пользовательского клиента электронной " +"почты!" #: settings/miscellaneouspage.cpp:321 #, c-format -msgid "The console command you specified to launch a custom email client does not contain the '%u' parameter. Without this, composing emails will not work.
      Do you want KMess to add it for you?" -msgstr "Консольная команда, выбранная для запуска пользовательского клиента электронной почты, не содержит параметр '%u'. Без этого составление писем не будет работать.
      Хотите, чтобы KMess добавил её?" +msgid "" +"The console command you specified to launch a custom email client does " +"not contain the '%u' parameter. Without this, composing emails will not work." +"
      Do you want KMess to add it for you?" +msgstr "" +"Консольная команда, выбранная для запуска пользовательского клиента " +"электронной почты, не содержит параметр '%u'. Без этого составление писем не " +"будет работать.
      Хотите, чтобы KMess добавил её?" #: settings/miscellaneouspage.cpp:344 msgid "You have to select a directory for the received files!" @@ -4003,6 +4415,11 @@ msgstr "Выберите директорию для принятых файло msgid "Select Directory" msgstr "Выбрать директорию" +#: utils/inlineeditlabel.cpp:147 +#, fuzzy, kde-format +msgid "The text cannot be longer than %1 characters." +msgstr "Имя группы слишком длинное; оно не может быть длиннее чем 61 байт" + #: utils/kmess-send/kmesssendplugin.cpp:116 msgid "Send with KMess" msgstr "Отправить с помощью KMess" @@ -4033,24 +4450,50 @@ msgid "Welcome to %1." msgstr "Добро пожаловать в %1." #: utils/likeback/likeback.cpp:336 -msgctxt "Welcome dialog text, explanation for both the like and dislike buttons" -msgid "Each time you have a great or frustrating experience, please click on the appropriate face below the window title-bar, briefly describe what you like or dislike and click on 'Send'." -msgstr "Каждый раз, когда вы вы испытываете удовольствие или разочарование при использовании программы, нажмите на смайл с соответствующим выражением лица под заголовком окна, коротко опишите, что вам нравится или не нравится и нажмите на кнопку \"Отправить\"." +msgctxt "" +"Welcome dialog text, explanation for both the like and dislike buttons" +msgid "" +"Each time you have a great or frustrating experience, please click on the " +"appropriate face below the window title-bar, briefly describe what you like " +"or dislike and click on 'Send'." +msgstr "" +"Каждый раз, когда вы вы испытываете удовольствие или разочарование при " +"использовании программы, нажмите на смайл с соответствующим выражением лица " +"под заголовком окна, коротко опишите, что вам нравится или не нравится и " +"нажмите на кнопку \"Отправить\"." #: utils/likeback/likeback.cpp:343 msgctxt "Welcome dialog text, explanation for the like button alone" -msgid "Each time you have a great experience, please click on the smiling face below the window title-bar, briefly describe what you like and click on 'Send'." -msgstr "Каждый раз, когда вы испытываете удовольствие при использовании программы, нажмите на смайл с улыбающимся лицом под заголовком окна, коротко опишите, что вам нравится и нажмите на кнопку \"Отправить\"." +msgid "" +"Each time you have a great experience, please click on the smiling face " +"below the window title-bar, briefly describe what you like and click on " +"'Send'." +msgstr "" +"Каждый раз, когда вы испытываете удовольствие при использовании программы, " +"нажмите на смайл с улыбающимся лицом под заголовком окна, коротко опишите, " +"что вам нравится и нажмите на кнопку \"Отправить\"." #: utils/likeback/likeback.cpp:350 msgctxt "Welcome dialog text, explanation for the dislike button alone" -msgid "Each time you have a frustrating experience, please click on the frowning face below the window title-bar, briefly describe what you dislike and click on 'Send'." -msgstr "Каждый раз, когда вы испытываете разочарование в использовании программы, нажмите на смайл с хмурым лицом под заголовком окна, коротко опишите, что вам не нравится и нажмите на кнопку \"Отправить\"." +msgid "" +"Each time you have a frustrating experience, please click on the frowning " +"face below the window title-bar, briefly describe what you dislike and click " +"on 'Send'." +msgstr "" +"Каждый раз, когда вы испытываете разочарование в использовании программы, " +"нажмите на смайл с хмурым лицом под заголовком окна, коротко опишите, что " +"вам не нравится и нажмите на кнопку \"Отправить\"." #: utils/likeback/likeback.cpp:360 msgctxt "Welcome dialog text, explanation for the bug button" -msgid "If you experience an improper behavior in the application, just click on the broken-object icon in the top-right corner of the window, describe the behavior and click on 'Send'." -msgstr "Если вы испытываете ненадлежащее поведение приложения, просто нажмите на на иконку повреждённого объекта в верхнем правом углу окна, опишите поведение и нажмите на кнопку \"Отправить\"." +msgid "" +"If you experience an improper behavior in the application, just click on the " +"broken-object icon in the top-right corner of the window, describe the " +"behavior and click on 'Send'." +msgstr "" +"Если вы испытываете ненадлежащее поведение приложения, просто нажмите на на " +"иконку повреждённого объекта в верхнем правом углу окна, опишите поведение и " +"нажмите на кнопку \"Отправить\"." #: utils/likeback/likeback.cpp:372 msgctxt "Welcome dialog text, usage example" @@ -4059,23 +4502,33 @@ msgstr "Мне нравится новое оформление. Оче #: utils/likeback/likeback.cpp:380 msgctxt "Welcome dialog text, usage example" -msgid "I dislike the welcome page of this assistant. Too time consuming." -msgstr "Мне не нравится начальная страница этого помощника. Тратится слишком много времени." +msgid "" +"I dislike the welcome page of this assistant. Too time consuming." +msgstr "" +"Мне не нравится начальная страница этого помощника. Тратится слишком " +"много времени." #: utils/likeback/likeback.cpp:388 msgctxt "Welcome dialog text, usage example" -msgid "The application shows an improper behaviour when clicking the Add button. Nothing happens." -msgstr "Приложение показывает ненадлежащее поведение при нажатии кнопки Добавить. Ничего не происходит." +msgid "" +"The application shows an improper behaviour when clicking the Add " +"button. Nothing happens." +msgstr "" +"Приложение показывает ненадлежащее поведение при нажатии кнопки " +"Добавить. Ничего не происходит." #: utils/likeback/likeback.cpp:396 msgctxt "Welcome dialog text, usage example" msgid "I desire a new feature allowing me to send my work by email." -msgstr "Я хочу новую функцию , позволяющую мне отправлять мою работу по электронной почте." +msgstr "" +"Я хочу новую функцию , позволяющую мне отправлять мою работу по " +"электронной почте." #: utils/likeback/likeback.cpp:409 msgctxt "Welcome dialog text, us=the developers, it=the application" msgid "To help us improve it, your comments are important." -msgstr "Ваши комментарии важны для того, чтобы помочь нам улучшить это приложение." +msgstr "" +"Ваши комментарии важны для того, чтобы помочь нам улучшить это приложение." #: utils/likeback/likeback.cpp:412 msgctxt "Welcome dialog text, header for the examples" @@ -4096,41 +4549,80 @@ msgstr "Отправить комментарий разработчикам" #: utils/likeback/likebackdialog.cpp:140 #, kde-format -msgctxt "Feedback dialog text, message with one accepted language for the comments" -msgid "Please, write it in %1, or the developers will not be able to read your comment!
      You may want to use an online translation tool to translate your message.
      " -msgstr "Напишите его на %1,в противном случае разработчики не смогут прочитать ваш комментарий!
      Возможно, вы хотите воспользоваться инструментом онлайн перевода для того, чтобы перевести своё сообщение.
      " +msgctxt "" +"Feedback dialog text, message with one accepted language for the comments" +msgid "" +"Please, write it in %1, or the developers will not be able to read " +"your comment!
      You may want to use an online translation " +"tool to translate your message.
      " +msgstr "" +"Напишите его на %1,в противном случае разработчики не смогут " +"прочитать ваш комментарий!
      Возможно, вы хотите воспользоваться инструментом онлайн перевода для того, чтобы перевести своё " +"сообщение.
      " #: utils/likeback/likebackdialog.cpp:152 #, kde-format -msgctxt "Feedback dialog text, message with list of accepted languages for the comments" -msgid "Please, write it in %1 or %2, or the developers will not be able to read your comment!
      You may want to use an online translation tool to translate your message.
      " -msgstr "Напишите его на %1 или %2, в противном случае разработчики не смогут прочитать ваш комментарий!
      Возможно, вы хотите воспользоваться инструментом онлайн перевода для того, чтобы перевести своё сообщение.
      " +msgctxt "" +"Feedback dialog text, message with list of accepted languages for the " +"comments" +msgid "" +"Please, write it in %1 or %2, or the developers will not be able to " +"read your comment!
      You may want to use an online " +"translation tool to translate your message.
      " +msgstr "" +"Напишите его на %1 или %2, в противном случае разработчики не смогут " +"прочитать ваш комментарий!
      Возможно, вы хотите воспользоваться инструментом онлайн перевода для того, чтобы перевести своё " +"сообщение.
      " #: utils/likeback/likebackdialog.cpp:168 -msgctxt "Feedback dialog text, message to remind to balance the likes and dislikes" -msgid "To make the comments you send more useful in improving this application, try to send the same amount of positive and negative comments.
      " -msgstr "Для того, чтобы отправляемые сообщения были более полезными в улучшении приложения, попытайтесь отправить одинаковое кол-во как положительных, так и отрицательных комментариев.
      " +msgctxt "" +"Feedback dialog text, message to remind to balance the likes and dislikes" +msgid "" +"To make the comments you send more useful in improving this application, try " +"to send the same amount of positive and negative comments.
      " +msgstr "" +"Для того, чтобы отправляемые сообщения были более полезными в улучшении " +"приложения, попытайтесь отправить одинаковое кол-во как положительных, так и " +"отрицательных комментариев.
      " #: utils/likeback/likebackdialog.cpp:177 msgctxt "Feedback dialog text, text to disallow feature requests" -msgid "Please, do not ask for new features: this kind of request will be ignored.
      " -msgstr "Не запрашивайте новые возможности: запросы такого рода будут игнорироваться.
      " +msgid "" +"Please, do not ask for new features: this kind of request will be ignored." +"
      " +msgstr "" +"Не запрашивайте новые возможности: запросы такого рода будут игнорироваться." +"
      " #: utils/likeback/likebackdialog.cpp:183 #, kde-format -msgctxt "Feedback dialog text, %1=Application name,%2=message with list of accepted languages for the comment,%3=optional text to remind to balance the likes and dislikes,%4=optional text to disallow feature requests." -msgid "

      You can provide the developers a brief description of your opinions about %1.
      %2 %3%4

      " -msgstr "

      Вы можете предоставить разработчикам краткое описание своего мнения о %1.
      %2 %3%4

      " +msgctxt "" +"Feedback dialog text, %1=Application name,%2=message with list of accepted " +"languages for the comment,%3=optional text to remind to balance the likes " +"and dislikes,%4=optional text to disallow feature requests." +msgid "" +"

      You can provide the developers a brief description of your opinions about " +"%1.
      %2 %3%4

      " +msgstr "" +"

      Вы можете предоставить разработчикам краткое описание своего мнения о %1." +"
      %2 %3%4

      " #: utils/likeback/likebackdialog.cpp:225 #, kde-format -msgid "The email address you have entered is not valid, and cannot be used: '%1'" +msgid "" +"The email address you have entered is not valid, and cannot be used: '%1'" msgstr "Введённый электронный адрес неверен и не может использоваться: '%1'" #: utils/likeback/likebackdialog.cpp:299 msgctxt "Dialog box text" -msgid "

      Your comment has been sent successfully. It will help us improve the application!

      Thanks for your time.

      " -msgstr "

      Комментарий был успешно принят. Он поможет нам улучшить это приложение!

      Спасибо за потраченное время.

      " +msgid "" +"

      Your comment has been sent successfully. It will help us improve the " +"application!

      Thanks for your time.

      " +msgstr "" +"

      Комментарий был успешно принят. Он поможет нам улучшить это приложение!

      Спасибо за потраченное время.

      " #: utils/likeback/likebackdialog.cpp:302 msgctxt "Dialog box title" @@ -4139,799 +4631,913 @@ msgstr "Комментарий отправлен" #: utils/likeback/likebackdialog.cpp:313 msgctxt "Dialog box text" -msgid "

      There has been an error while trying to send the comment.

      Please, try again later.

      " -msgstr "

      Ошибка при попытке отправки комментария.

      Повторите попытку позже.

      " +msgid "" +"

      There has been an error while trying to send the comment.

      Please, " +"try again later.

      " +msgstr "" +"

      Ошибка при попытке отправки комментария.

      Повторите попытку позже." #: utils/likeback/likebackdialog.cpp:315 msgctxt "Dialog box title" msgid "Comment Sending Error" msgstr "Ошибка отправки комментария" +#: rc.cpp:2 +#, fuzzy +msgctxt "EMAIL OF TRANSLATORS" +msgid "Your emails" +msgstr "slpiv@mail.ru" + #. i18n: file: chat/chatwindow.ui:190 #. i18n: ectx: property (toolTip), widget (QToolButton, textButton_) -#: rc.cpp:3 +#: rc.cpp:5 msgid "Standard text mode" msgstr "Стандартный текстовый режим" #. i18n: file: chat/chatwindow.ui:193 #. i18n: ectx: property (whatsThis), widget (QToolButton, textButton_) -#: rc.cpp:6 +#: rc.cpp:8 msgid "Click this button to switch to the standard text mode." msgstr "Нажмите эту кнопку для переключения в стандартный текстовый режим." #. i18n: file: chat/chatwindow.ui:215 #. i18n: ectx: property (whatsThis), widget (QToolButton, inkButton_) -#: rc.cpp:12 -msgid "Click this button to switch to the handwriting mode, so you can write or paint a handwritten message." -msgstr "Нажмите эту кнопку для переключения в рукописный режим, таким образом вы сможете писать или рисовать рукописные сообщения." +#: rc.cpp:14 +msgid "" +"Click this button to switch to the handwriting mode, so you can write or " +"paint a handwritten message." +msgstr "" +"Нажмите эту кнопку для переключения в рукописный режим, таким образом вы " +"сможете писать или рисовать рукописные сообщения." #. i18n: file: chat/chatwindow.ui:238 #. i18n: ectx: property (toolTip), widget (QToolButton, standardEmoticonButton_) -#: rc.cpp:15 +#: rc.cpp:17 msgid "Standard emoticons" msgstr "Стандартные смайлы" #. i18n: file: chat/chatwindow.ui:241 #. i18n: ectx: property (whatsThis), widget (QToolButton, standardEmoticonButton_) -#: rc.cpp:18 -msgid "Click this button to show all default Live Messenger emoticons, so you can easily insert them in your messages." -msgstr "Нажмите эту кнопку для отображения всех стандартных смайлов Live Messenger, таким образом вы легко сможете вставить их в сообщение." +#: rc.cpp:20 +msgid "" +"Click this button to show all default Live Messenger emoticons, so you can " +"easily insert them in your messages." +msgstr "" +"Нажмите эту кнопку для отображения всех стандартных смайлов Live Messenger, " +"таким образом вы легко сможете вставить их в сообщение." #. i18n: file: chat/chatwindow.ui:257 #. i18n: ectx: property (toolTip), widget (QToolButton, customEmoticonButton_) -#: rc.cpp:21 +#: rc.cpp:23 msgid "Custom emoticons" msgstr "Пользовательские смайлы" #. i18n: file: chat/chatwindow.ui:260 #. i18n: ectx: property (whatsThis), widget (QToolButton, customEmoticonButton_) -#: rc.cpp:24 -msgid "Click this button to show all custom emoticons, so you can easily insert them in your messages." -msgstr "Нажмите эту кнопку для отображения всех пользовательских смайлов, таким образом вы сможете легко вставить их в сообщение." +#: rc.cpp:26 +msgid "" +"Click this button to show all custom emoticons, so you can easily insert " +"them in your messages." +msgstr "" +"Нажмите эту кнопку для отображения всех пользовательских смайлов, таким " +"образом вы сможете легко вставить их в сообщение." #. i18n: file: chat/chatwindow.ui:279 #. i18n: ectx: property (whatsThis), widget (QToolButton, winksButton_) -#: rc.cpp:30 +#: rc.cpp:32 msgid "Click this button to view the available winks." msgstr "Нажмите эту кнопку для просмотра доступных подмигиваний." #. i18n: file: chat/chatwindow.ui:332 #. i18n: ectx: property (toolTip), widget (QSlider, inkPenSize_) -#: rc.cpp:33 +#: rc.cpp:35 msgid "Pen size" msgstr "Размер ручки" #. i18n: file: chat/chatwindow.ui:354 #. i18n: ectx: property (toolTip), widget (QToolButton, inkColorButton_) -#: rc.cpp:36 +#: rc.cpp:38 msgid "Pen color" msgstr "Цвет ручки" #. i18n: file: chat/chatwindow.ui:377 #. i18n: ectx: property (toolTip), widget (QToolButton, inkClearButton_) -#: rc.cpp:42 +#: rc.cpp:44 msgid "Clear area" msgstr "Очистить область" #. i18n: file: chat/chatwindow.ui:409 #. i18n: ectx: property (toolTip), widget (QToolButton, fontButton_) -#: rc.cpp:45 +#: rc.cpp:47 msgid "Font" msgstr "Шрифт" #. i18n: file: chat/chatwindow.ui:412 #. i18n: ectx: property (whatsThis), widget (QToolButton, fontButton_) -#: rc.cpp:48 +#: rc.cpp:50 msgid "Click this button to change the font of your messages." msgstr "Нажмите эту кнопку для изменения шрифта сообщения." #. i18n: file: chat/chatwindow.ui:425 #. i18n: ectx: property (toolTip), widget (QToolButton, fontColorButton_) -#: rc.cpp:51 +#: rc.cpp:53 msgid "Text color" msgstr "Цвет текста" #. i18n: file: chat/chatwindow.ui:428 #. i18n: ectx: property (whatsThis), widget (QToolButton, fontColorButton_) -#: rc.cpp:54 +#: rc.cpp:56 msgid "Click this button to change the text color of your messages." msgstr "Нажмите эту кнопку для изменения цвета текста сообщений." #. i18n: file: chat/chatwindow.ui:466 #. i18n: ectx: property (text), widget (QPushButton, newLineButton_) -#: rc.cpp:57 +#: rc.cpp:59 msgid "Ne&w Line" msgstr "Но&вая строка" #. i18n: file: chat/chatwindow.ui:488 #. i18n: ectx: property (text), widget (QPushButton, sendButton_) -#: rc.cpp:63 +#: rc.cpp:65 msgid "S&end" msgstr "От&править" #. i18n: file: chat/chatwindowui.rc:5 #. i18n: ectx: Menu (file) -#: rc.cpp:69 +#: rc.cpp:71 msgctxt "@title:menu" msgid "&Chat" msgstr "&Разговор" #. i18n: file: chat/chatwindowui.rc:34 #. i18n: ectx: ToolBar (mainToolBar) -#: rc.cpp:72 +#: rc.cpp:74 msgctxt "@title:menu" msgid "Main Toolbar" msgstr "Главная панель инструментов" -#. i18n: file: chat/contactframe.ui:153 +#. i18n: file: chat/contactframe.ui:156 #. i18n: ectx: property (toolTip), widget (QLabel, contactPixmapLabel_) -#: rc.cpp:75 +#: rc.cpp:77 msgid "Click here to display the menu for this contact" msgstr "Нажмите здесь для отображения меню этого контакта" -#. i18n: file: chat/contactswidget.ui:107 +#. i18n: file: chat/contactswidget.ui:110 #. i18n: ectx: property (toolTip), widget (QLabel, userPixmapLabel_) -#: rc.cpp:78 +#: rc.cpp:80 msgid "Click here to open your account settings" msgstr "Нажмите здесь для открытия настроек учётной записи" #. i18n: file: dialogs/addcontactdialog.ui:33 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:81 +#: rc.cpp:83 msgid "Initial groups" msgstr "Первоначальные группы" #. i18n: file: dialogs/addcontactdialog.ui:47 #. i18n: ectx: property (whatsThis), widget (QLabel, label) -#: rc.cpp:84 -msgid "Enter here the email address of the person you wish to add to your contact list" -msgstr "Введите здесь электронный адрес человека, которого вы хотите добавить в список контактов" +#: rc.cpp:86 +msgid "" +"Enter here the email address of the person you wish to add to your contact " +"list" +msgstr "" +"Введите здесь электронный адрес человека, которого вы хотите добавить в " +"список контактов" #. i18n: file: dialogs/addcontactdialog.ui:50 #. i18n: ectx: property (text), widget (QLabel, label) #. i18n: file: initialview.ui:160 #. i18n: ectx: property (text), widget (QLabel, TextLabel2) -#: rc.cpp:87 -#: rc.cpp:279 +#: rc.cpp:89 rc.cpp:284 msgid "Email address:" msgstr "Электронный адрес:" #. i18n: file: dialogs/addemoticondialog.ui:97 #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: rc.cpp:90 +#: rc.cpp:92 msgid "Enter a shortcut for the emoticon:" msgstr "Введите имя для смайла:" #. i18n: file: dialogs/addemoticondialog.ui:114 #. i18n: ectx: property (text), widget (QLabel, textLabel2) -#: rc.cpp:93 +#: rc.cpp:95 msgid "Select an image file:" msgstr "Выберите файл изображения:" #. i18n: file: dialogs/awaymessagedialog.ui:19 #. i18n: ectx: property (whatsThis), widget (QLabel, label) -#: rc.cpp:99 -msgid "Enter a message to be automatically sent to people who try to message you." -msgstr "Введите сообщение, автоматически отправляемое людям, которые пытаются написать вам." +#: rc.cpp:101 +msgid "" +"Enter a message to be automatically sent to people who try to message you." +msgstr "" +"Введите сообщение, автоматически отправляемое людям, которые пытаются " +"написать вам." #. i18n: file: dialogs/awaymessagedialog.ui:22 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:102 +#: rc.cpp:104 msgid "&Specify an automatic away message:" msgstr "&Задайте автоматическое сообщение об отсутствии:" #. i18n: file: dialogs/chathistorydialog.ui:33 #. i18n: ectx: property (clickMessage), widget (KLineEdit, searchEdit_) -#: rc.cpp:105 +#: rc.cpp:107 msgid "Search through contacts..." msgstr "Поиск среди контактов..." #. i18n: file: dialogs/chathistorydialog.ui:73 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:108 +#: rc.cpp:110 msgid "Chat Log Filter" msgstr "Фильтр истории разговоров" #. i18n: file: dialogs/chathistorydialog.ui:87 #. i18n: ectx: property (text), widget (QRadioButton, conversationRadio_) -#: rc.cpp:111 +#: rc.cpp:113 msgid "Filter by &chat" msgstr "Фильтр по &разговорам" #. i18n: file: dialogs/chathistorydialog.ui:152 #. i18n: ectx: property (text), widget (QRadioButton, dateRadio_) -#: rc.cpp:115 +#: rc.cpp:117 msgid "Filter by &date" msgstr "Фильтр по &дате" #. i18n: file: dialogs/chathistorydialog.ui:167 #. i18n: ectx: property (text), widget (QCheckBox, fromBox_) -#: rc.cpp:118 +#: rc.cpp:120 msgid "from" msgstr "от" #. i18n: file: dialogs/chathistorydialog.ui:184 #. i18n: ectx: property (text), widget (QCheckBox, toBox_) -#: rc.cpp:121 +#: rc.cpp:123 msgid "to" msgstr "до" #. i18n: file: dialogs/contactaddeduserdialog.ui:52 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:124 +#: rc.cpp:126 msgid "What would you like to do?" msgstr "Что бы вы хотели сделать?" #. i18n: file: dialogs/contactaddeduserdialog.ui:58 #. i18n: ectx: property (text), widget (QRadioButton, addContactOption_) -#: rc.cpp:127 +#: rc.cpp:129 msgid "&Add this person to the following groups of your contact list:" msgstr "&Добавить этого человека в следующие группы списка контактов: " #. i18n: file: dialogs/contactaddeduserdialog.ui:114 #. i18n: ectx: property (text), widget (QRadioButton, allowContactOption_) -#: rc.cpp:130 +#: rc.cpp:132 msgid "&Do not add this person, but allow him or her to see your status" -msgstr "&Не добавлять этого человека, но разрешить ему или ей видеть ваш статус" +msgstr "" +"&Не добавлять этого человека, но разрешить ему или ей видеть ваш статус" #. i18n: file: dialogs/contactaddeduserdialog.ui:121 #. i18n: ectx: property (text), widget (QRadioButton, blockContactOption_) -#: rc.cpp:133 +#: rc.cpp:135 msgid "&Block this person from contacting you and seeing your status" -msgstr "&Заблокировать этого человека от возможности общаться с вами и видеть ваш статус" +msgstr "" +"&Заблокировать этого человека от возможности общаться с вами и видеть ваш " +"статус" -#. i18n: file: dialogs/contactpropertiesdialog.ui:65 +#. i18n: file: dialogs/contactpropertiesdialog.ui:48 +#. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) +#: rc.cpp:141 +#, fuzzy +msgid "Click or Drag&Drop to change the image for this contact" +msgstr "Нажмите здесь для отображения меню этого контакта" + +#. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) -#: rc.cpp:139 +#: rc.cpp:144 msgid "Click this button to restore the display picture of this contact" msgstr "Нажмите здесь для восстановления изображение этого контакта" -#. i18n: file: dialogs/contactpropertiesdialog.ui:68 +#. i18n: file: dialogs/contactpropertiesdialog.ui:75 #. i18n: ectx: property (text), widget (QPushButton, restoreButton_) -#: rc.cpp:142 +#: rc.cpp:147 msgid "&Restore" msgstr "&Восстановить" -#. i18n: file: dialogs/contactpropertiesdialog.ui:197 +#. i18n: file: dialogs/contactpropertiesdialog.ui:224 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:145 +#: rc.cpp:150 msgid "&Groups:" msgstr "&Группы:" -#. i18n: file: dialogs/contactpropertiesdialog.ui:235 +#. i18n: file: dialogs/contactpropertiesdialog.ui:262 #. i18n: ectx: property (text), widget (QCheckBox, alternativeNameCheckBox_) -#: rc.cpp:148 +#: rc.cpp:153 msgid "Use an &alternative name for this contact" msgstr "Использовать &другое имя для этого контакта" -#. i18n: file: dialogs/contactpropertiesdialog.ui:245 +#. i18n: file: dialogs/contactpropertiesdialog.ui:272 #. i18n: ectx: property (text), widget (QCheckBox, disableNotificationsCheckBox_) -#: rc.cpp:151 +#: rc.cpp:156 msgid "Disable notifications for this contact" msgstr "Отключить уведомления для этого контакта" -#. i18n: file: dialogs/contactpropertiesdialog.ui:254 +#. i18n: file: dialogs/contactpropertiesdialog.ui:281 #. i18n: ectx: property (text), widget (QLabel, soundSelectLabel_) -#: rc.cpp:154 +#: rc.cpp:159 msgid "&Sound:" msgstr "&Звук:" -#. i18n: file: dialogs/contactpropertiesdialog.ui:291 +#. i18n: file: dialogs/contactpropertiesdialog.ui:318 #. i18n: ectx: attribute (title), widget (QWidget, tab_2) -#: rc.cpp:157 +#: rc.cpp:162 msgid "&Display Pictures" msgstr "&Аватары" -#. i18n: file: dialogs/contactpropertiesdialog.ui:340 +#. i18n: file: dialogs/contactpropertiesdialog.ui:367 #. i18n: ectx: property (toolTip), widget (QPushButton, useButton_) -#: rc.cpp:160 +#: rc.cpp:165 msgid "Click here to use the selected picture as your display picture" msgstr "Нажмите здесь, чтобы использовать выбранное изображение как аватар" -#. i18n: file: dialogs/contactpropertiesdialog.ui:343 +#. i18n: file: dialogs/contactpropertiesdialog.ui:370 #. i18n: ectx: property (text), widget (QPushButton, useButton_) -#: rc.cpp:163 +#: rc.cpp:168 msgid "Use As Display Picture" msgstr "Использовать как аватар" -#. i18n: file: dialogs/contactpropertiesdialog.ui:350 +#. i18n: file: dialogs/contactpropertiesdialog.ui:377 #. i18n: ectx: property (text), widget (QPushButton, clearCacheButton_) -#: rc.cpp:166 +#: rc.cpp:171 msgid "&Clear Cache" msgstr "О&чистить кэш" -#. i18n: file: dialogs/contactpropertiesdialog.ui:376 +#. i18n: file: dialogs/contactpropertiesdialog.ui:403 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:175 -msgid "You can choose to hide any emoticon received from this contact. Just right-click on a received emoticon and choose \"Hide this Emoticon\". With this page, you can restore the hidden emoticons." -msgstr "Вы можете установить скрытие всех смайлов, полученных от этого контакта. Просто нажмите правой кнопкой мыши на полученном смайле и выберите \"Спрятать этот смайл\". С помощью этого диалога вы сможете восстановить спрятанные смайлы." +#: rc.cpp:180 +msgid "" +"You can choose to hide any emoticon received from this contact. Just " +"right-click on a received emoticon and choose \"Hide this Emoticon\". With " +"this page, you can restore the hidden emoticons." +msgstr "" +"Вы можете установить скрытие всех смайлов, полученных от этого " +"контакта. Просто нажмите правой кнопкой мыши на полученном смайле и выберите " +"\"Спрятать этот смайл\". С помощью этого диалога вы сможете восстановить " +"спрятанные смайлы." -#. i18n: file: dialogs/contactpropertiesdialog.ui:450 +#. i18n: file: dialogs/contactpropertiesdialog.ui:477 #. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) -#: rc.cpp:178 +#: rc.cpp:183 msgid "Click here to restore the selected emoticon" msgstr "Нажмите для восстановления выбранного смайла" -#. i18n: file: dialogs/contactpropertiesdialog.ui:453 +#. i18n: file: dialogs/contactpropertiesdialog.ui:480 #. i18n: ectx: property (text), widget (QPushButton, removeEmoticonButton_) -#: rc.cpp:181 +#: rc.cpp:186 msgid "Resto&re" msgstr "Восста&новить" #. i18n: file: dialogs/invitedialog.ui:19 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:187 +#: rc.cpp:192 msgid "Available Contacts" msgstr "Доступные контакты" #. i18n: file: dialogs/invitedialog.ui:70 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:190 +#: rc.cpp:195 msgid "Invite a person not on your contact list:" msgstr "Пригласить человека, который не находится в списке контактов:" #. i18n: file: dialogs/invitedialog.ui:82 #. i18n: ectx: property (toolTip), widget (QLineEdit, otherEdit_) -#: rc.cpp:193 +#: rc.cpp:198 msgid "Enter the email address of a person to invite" msgstr "Введите электронный адрес человека, которого вы хотите пригласить" #. i18n: file: dialogs/invitedialog.ui:101 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: rc.cpp:196 +#: rc.cpp:201 msgid "Invited Contacts" msgstr "Приглашенные контакты" #. i18n: file: dialogs/listexportdialog.ui:18 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:205 +#: rc.cpp:210 msgid "Items to export:" msgstr "Элементы для экспорта:" #. i18n: file: dialogs/listexportdialog.ui:31 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:208 +#: rc.cpp:213 msgid "Format" msgstr "Формат" #. i18n: file: dialogs/listexportdialog.ui:37 #. i18n: ectx: property (text), widget (QRadioButton, csvButton_) -#: rc.cpp:211 +#: rc.cpp:216 msgid "CSV" msgstr "CSV" #. i18n: file: dialogs/listexportdialog.ui:44 #. i18n: ectx: property (text), widget (QRadioButton, xmlButton_) -#: rc.cpp:214 +#: rc.cpp:219 msgid "XML" msgstr "XML" #. i18n: file: dialogs/listexportdialog.ui:71 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:217 +#: rc.cpp:222 msgid "Contacts:" msgstr "Контакты:" #. i18n: file: dialogs/listexportdialog.ui:83 #. i18n: ectx: property (text), widget (QPushButton, selectAllButton_) -#: rc.cpp:220 +#: rc.cpp:225 msgid "Select All" msgstr "Выделить всё" #. i18n: file: dialogs/listexportdialog.ui:90 #. i18n: ectx: property (text), widget (QPushButton, deselectAllButton_) -#: rc.cpp:223 +#: rc.cpp:228 msgid "Deselect All" msgstr "Отметить общее выделение" #. i18n: file: dialogs/listexportdialog.ui:116 #. i18n: ectx: property (text), widget (QPushButton, exportButton_) -#: rc.cpp:226 +#: rc.cpp:231 msgid "Export..." msgstr "Экспортировать..." #. i18n: file: dialogs/listexportdialog.ui:123 #. i18n: ectx: property (text), widget (QPushButton, closeButton_) -#: rc.cpp:229 +#: rc.cpp:234 msgid "Close" msgstr "Закрыть" #. i18n: file: dialogs/networkwindow.ui:25 #. i18n: ectx: property (title), widget (QGroupBox, commandSendingGroup_) -#: rc.cpp:235 +#: rc.cpp:240 msgid "Command to Current Tab" msgstr "Команда текущей вкладке" #. i18n: file: dialogs/networkwindow.ui:37 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:238 +#: rc.cpp:243 msgid "Command:" msgstr "Команда:" #. i18n: file: dialogs/networkwindow.ui:53 #. i18n: ectx: property (text), widget (QLabel, label_3) -#: rc.cpp:241 +#: rc.cpp:246 msgid "Type:" msgstr "Тип:" #. i18n: file: dialogs/networkwindow.ui:60 #. i18n: ectx: property (text), widget (QRadioButton, sendStandardCmdRadio_) -#: rc.cpp:244 +#: rc.cpp:249 msgid "Standard" msgstr "Стандарт" #. i18n: file: dialogs/networkwindow.ui:67 #. i18n: ectx: property (text), widget (QRadioButton, sendMimeCmdRadio_) -#: rc.cpp:247 +#: rc.cpp:252 msgid "MIME" msgstr "MIME" #. i18n: file: dialogs/networkwindow.ui:93 #. i18n: ectx: property (text), widget (QPushButton, sendCommandButton_) -#: rc.cpp:250 +#: rc.cpp:255 msgid "Send" msgstr "Отправить" #. i18n: file: dialogs/networkwindow.ui:132 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:253 +#: rc.cpp:258 msgid "Command payload (can be empty):" msgstr "Полезная нагрузка команды (может быть пустой):" #. i18n: file: dialogs/transferentry.ui:196 #. i18n: ectx: property (text), widget (KUrlLabel, openLabel_) -#: rc.cpp:258 +#: rc.cpp:263 msgid "Open" msgstr "Открыть" #. i18n: file: dialogs/transferentry.ui:215 #. i18n: ectx: property (text), widget (KUrlLabel, cancelLabel_) -#: rc.cpp:261 +#: rc.cpp:266 msgid "Cancel" msgstr "Отмена" #. i18n: file: dialogs/transferwindow.ui:77 #. i18n: ectx: property (text), widget (QPushButton, downloadButton_) -#: rc.cpp:264 +#: rc.cpp:269 msgid "&Download" msgstr "&Загрузка" #. i18n: file: dialogs/transferwindow.ui:96 #. i18n: ectx: property (text), widget (QPushButton, uploadButton_) -#: rc.cpp:267 +#: rc.cpp:272 msgid "&Upload" msgstr "&Отдача" #. i18n: file: dialogs/transferwindow.ui:122 #. i18n: ectx: property (text), widget (QPushButton, cleanupButton_) -#: rc.cpp:270 +#: rc.cpp:275 msgid "C&lean Up" msgstr "О&чистить" #. i18n: file: dialogs/transferwindow.ui:129 #. i18n: ectx: property (text), widget (QPushButton, closeButton_) -#: rc.cpp:273 +#: rc.cpp:278 msgid "&Close" msgstr "&Закрыть" #. i18n: file: initialview.ui:97 #. i18n: ectx: property (toolTip), widget (QLabel, pictureLabel_) -#: rc.cpp:276 -msgid "Click here to display the options for the currently selected account, or scroll using the mouse wheel to switch between the saved accounts" -msgstr "Нажмите здесь для отображения настроек выбранной учётной записи, или прокрутите колёсико мыши для переключения между сохранёнными учётными записями" +#: rc.cpp:281 +msgid "" +"Click here to display the options for the currently selected account, " +"or scroll using the mouse wheel to switch between the saved accounts" +msgstr "" +"Нажмите здесь для отображения настроек выбранной учётной записи, или " +"прокрутите колёсико мыши для переключения между сохранёнными учётными " +"записями" #. i18n: file: initialview.ui:179 #. i18n: ectx: property (toolTip), widget (KComboBox, handleCombobox_) -#: rc.cpp:282 -msgid "Enter here the email address of your registered Passport or Live account" +#: rc.cpp:287 +msgid "" +"Enter here the email address of your registered Passport or Live account" msgstr "" #. i18n: file: initialview.ui:195 #. i18n: ectx: property (text), widget (QLabel, TextLabel3) -#: rc.cpp:285 +#: rc.cpp:290 msgid "Password:" msgstr "Пароль:" #. i18n: file: initialview.ui:208 #. i18n: ectx: property (toolTip), widget (QLineEdit, passwordEdit_) -#: rc.cpp:288 +#: rc.cpp:293 msgid "Enter here your account's password" msgstr "Введите здесь пароль от учётной записи" #. i18n: file: initialview.ui:224 #. i18n: ectx: property (text), widget (QLabel, initialStatusLabel_) -#: rc.cpp:291 +#: rc.cpp:296 msgid "Status at login:" msgstr "Статус при входе:" #. i18n: file: initialview.ui:243 #. i18n: ectx: property (toolTip), widget (QComboBox, initialStatus_) -#: rc.cpp:294 +#: rc.cpp:299 msgid "Choose a status to set when successfully connected." -msgstr "Выберите статус, который необходимо установить при успешном подключении." +msgstr "" +"Выберите статус, который необходимо установить при успешном подключении." #. i18n: file: initialview.ui:269 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberAccountCheckBox_) -#: rc.cpp:297 +#: rc.cpp:302 msgid "If enabled, KMess will save your account" msgstr "Если включено, KMess сохранит учётную запись" #. i18n: file: initialview.ui:272 #. i18n: ectx: property (text), widget (QCheckBox, rememberAccountCheckBox_) -#: rc.cpp:300 +#: rc.cpp:305 msgid "Remem&ber account" msgstr "Запо&мнить учётную запись" #. i18n: file: initialview.ui:285 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) -#: rc.cpp:306 -msgid "If you choose to remember an account within KMess, you can also save its password" -msgstr "Если вы выбираете сохранение учётной записи в KMess, вы также можете сохранить и её пароль" +#: rc.cpp:311 +msgid "" +"If you choose to remember an account within KMess, you can also save its " +"password" +msgstr "" +"Если вы выбираете сохранение учётной записи в KMess, вы также можете " +"сохранить и её пароль" #. i18n: file: initialview.ui:288 #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) -#: rc.cpp:309 +#: rc.cpp:314 msgid "R&emember password" msgstr "З&апомнить пароль" #. i18n: file: initialview.ui:301 #. i18n: ectx: property (text), widget (QCheckBox, rememberAutoLoginCheckBox_) -#: rc.cpp:315 +#: rc.cpp:320 msgid "Log in automatically" msgstr "Входить автоматически" #. i18n: file: initialview.ui:345 #. i18n: ectx: property (toolTip), widget (QPushButton, connectButton_) -#: rc.cpp:318 -msgid "Click this button to start using KMess, or to cancel a connection attempt" -msgstr "Нажмите эту кнопку для начала использования KMess или отмены попытки соединения" +#: rc.cpp:323 +msgid "" +"Click this button to start using KMess, or to cancel a connection attempt" +msgstr "" +"Нажмите эту кнопку для начала использования KMess или отмены попытки " +"соединения" #. i18n: file: initialview.ui:444 #. i18n: ectx: property (text), widget (KUrlLabel, newAccountLabel_) -#: rc.cpp:324 +#: rc.cpp:329 msgid "New Account" msgstr "Новая учётная запись" #. i18n: file: initialview.ui:447 #. i18n: ectx: property (url), widget (KUrlLabel, newAccountLabel_) -#: rc.cpp:327 +#: rc.cpp:332 msgid "https://accountservices.passport.net/reg.srf" msgstr "https://accountservices.passport.net/reg.srf" #. i18n: file: initialview.ui:450 #. i18n: ectx: property (tipText), widget (KUrlLabel, newAccountLabel_) -#: rc.cpp:330 -msgid "Click here to register a new Live account, which you can use to connect to MSN.
      You can also use your existing email address" -msgstr " Нажмите здесь для регистрации новой учётной записи Live, которую можно использовать для соединения с MSN.
      Также, возможно использование существующего электронного адреса" +#: rc.cpp:335 +msgid "" +"Click here to register a new Live account, which you can use to " +"connect to MSN.
      You can also use your existing email address" +msgstr "" +" Нажмите здесь для регистрации новой учётной записи Live, которую " +"можно использовать для соединения с MSN.
      Также, возможно использование " +"существующего электронного адреса" #. i18n: file: initialview.ui:479 #. i18n: ectx: property (text), widget (KUrlLabel, forgottenPasswordLabel_) -#: rc.cpp:333 +#: rc.cpp:338 msgid "Password forgotten?" msgstr "Забыли пароль?" #. i18n: file: initialview.ui:482 #. i18n: ectx: property (url), widget (KUrlLabel, forgottenPasswordLabel_) -#: rc.cpp:336 +#: rc.cpp:341 msgid "https://login.live.com/resetpw.srf" msgstr "https://login.live.com/resetpw.srf" #. i18n: file: initialview.ui:485 #. i18n: ectx: property (tipText), widget (KUrlLabel, forgottenPasswordLabel_) -#: rc.cpp:339 -msgid "Click here to go to the Live web site, to reset your account's password" -msgstr "Нажмите здесь для перехода на веб-страницу Live и восстановления пароля учётной записи" +#: rc.cpp:344 +msgid "" +"Click here to go to the Live web site, to reset your account's " +"password" +msgstr "" +"Нажмите здесь для перехода на веб-страницу Live и восстановления " +"пароля учётной записи" #. i18n: file: kmessinterfaceui.rc:5 #. i18n: ectx: Menu (file) -#: rc.cpp:342 +#: rc.cpp:347 msgctxt "@title:menu" msgid "&Connect" msgstr "&Соединение" #. i18n: file: kmessinterfaceui.rc:16 #. i18n: ectx: Menu (view) -#: rc.cpp:345 +#: rc.cpp:350 msgctxt "@title:menu" msgid "&View" msgstr "%Вид" #. i18n: file: kmessinterfaceui.rc:34 #. i18n: ectx: Menu (settings) -#: rc.cpp:348 +#: rc.cpp:353 msgctxt "@title:menu" msgid "&Actions" msgstr "&Действия" #. i18n: file: settings/accountpage.ui:21 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: rc.cpp:351 +#: rc.cpp:356 msgid "Account &Info" msgstr "&Информация об учётной записи" #. i18n: file: settings/accountpage.ui:35 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_) -#: rc.cpp:354 +#: rc.cpp:359 msgid "Your Account Information" msgstr "Информация об учётной записи" #. i18n: file: settings/accountpage.ui:41 #. i18n: ectx: property (whatsThis), widget (QLabel, friendlyNameLabel_) -#: rc.cpp:357 +#: rc.cpp:362 msgid "Enter a name other contacts should see when you are connected." -msgstr "Введите имя, которое другие контакты должны видеть когда вы подключены." +msgstr "" +"Введите имя, которое другие контакты должны видеть когда вы подключены." #. i18n: file: settings/accountpage.ui:44 #. i18n: ectx: property (text), widget (QLabel, friendlyNameLabel_) -#: rc.cpp:360 +#: rc.cpp:365 msgid "&Friendly name:" msgstr "&Имя:" #. i18n: file: settings/accountpage.ui:60 #. i18n: ectx: property (whatsThis), widget (QLabel, handleLabel_4) -#: rc.cpp:363 -msgid "Enter the email address of your MSN Passport account. You can register a new account at http://register.passport.com/" -msgstr "Введите электронный адрес вашей учётной записи. Также, возможна регистрация новой учётной записи на http://register.passport.com/" +#: rc.cpp:368 +msgid "" +"Enter the email address of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" +"Введите электронный адрес вашей учётной записи. Также, возможна регистрация " +"новой учётной записи на http://register.passport.com/" #. i18n: file: settings/accountpage.ui:63 #. i18n: ectx: property (text), widget (QLabel, handleLabel_4) -#: rc.cpp:366 +#: rc.cpp:371 msgid "&Email address:" msgstr "&Электронный адрес:" #. i18n: file: settings/accountpage.ui:79 #. i18n: ectx: property (whatsThis), widget (QLabel, passwordLabel_) -#: rc.cpp:369 -msgid "Enter the password of your MSN Passport account. You can register a new account at http://register.passport.com/" -msgstr "Введите пароль от вашей учётной записи. Также, возможна регистрация новой учётной записи на http://register.passport.com/" +#: rc.cpp:374 +msgid "" +"Enter the password of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" +"Введите пароль от вашей учётной записи. Также, возможна регистрация новой " +"учётной записи на http://register.passport.com/" #. i18n: file: settings/accountpage.ui:82 #. i18n: ectx: property (text), widget (QLabel, passwordLabel_) -#: rc.cpp:372 +#: rc.cpp:377 msgid "&Password:" msgstr "&Пароль:" #. i18n: file: settings/accountpage.ui:111 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) -#: rc.cpp:375 +#: rc.cpp:380 msgid "Click here to have your password saved by KMess" msgstr "Нажмите здесь, чтобы KMess сохранил ваш пароль" #. i18n: file: settings/accountpage.ui:114 #. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberPasswordCheckBox_) -#: rc.cpp:378 -msgid "If you enable this option, KMess will save your account's password. This way you will not have to enter your password on every start up, in order to log in. Please keep in mind, that other persons that have access to this computer may easily log in to your account, if this option is enabled." -msgstr "Если вы включите эту опцию, KMess сохранит пароль от вашей учётной записи. В этом случае, вам не нужно будет вводить пароль при каждом подключении для входа в сеть. Помните, что другие лица имеющие доступ к этому компьютеру, могут легко войти в вашу учётную запись, если эта опция включена. " +#: rc.cpp:383 +msgid "" +"If you enable this option, KMess will save your account's password. This way " +"you will not have to enter your password on every start up, in order to log " +"in. Please keep in mind, that other persons that have access to this " +"computer may easily log in to your account, if this option is enabled." +msgstr "" +"Если вы включите эту опцию, KMess сохранит пароль от вашей учётной записи. В " +"этом случае, вам не нужно будет вводить пароль при каждом подключении для " +"входа в сеть. Помните, что другие лица имеющие доступ к этому компьютеру, " +"могут легко войти в вашу учётную запись, если эта опция включена. " #. i18n: file: settings/accountpage.ui:117 #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) -#: rc.cpp:381 +#: rc.cpp:386 msgid "&Remember password" msgstr "&Запомнить пароль" #. i18n: file: settings/accountpage.ui:233 #. i18n: ectx: property (text), widget (KPushButton, browseButton_) -#: rc.cpp:387 +#: rc.cpp:392 msgid "C&hange..." msgstr "&Изменить..." #. i18n: file: settings/accountpage.ui:258 #. i18n: ectx: property (toolTip), widget (QCheckBox, noPictureCheckbox_) -#: rc.cpp:393 +#: rc.cpp:398 msgid "Enable this option, if you do not want to use a display picture." msgstr "Включите эту опцию, если не хотите использовать аватар." #. i18n: file: settings/accountpage.ui:261 #. i18n: ectx: property (text), widget (QCheckBox, noPictureCheckbox_) -#: rc.cpp:396 +#: rc.cpp:401 msgid "&Do not use" msgstr "&Не использовать" #. i18n: file: settings/accountpage.ui:291 #. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberCheckbox_) -#: rc.cpp:402 +#: rc.cpp:407 msgid "" -"The option \"Remember account\" was left unchecked while logging in, so your settings will not be saved by default. Enable this option if you want to save your account settings permanently on this system.\n" +"The option \"Remember account\" was left unchecked while logging in, " +"so your settings will not be saved by default. Enable this option if you " +"want to save your account settings permanently on this system.\n" "\n" -"It is recommended to enable this option, unless you are using KMess as guest or you are using a public system (e.g. Internet cafe)." +"It is recommended to enable this option, unless you are using KMess as guest " +"or you are using a public system (e.g. Internet cafe)." msgstr "" -"Опция \"Запомнить учётную запись\" не была выбрана во время входа, настройки не будут сохранены по умолчанию. Включите эту опцию, если хотите постоянно хранить настройки вашей учётной записи на этом компьютере.\n" +"Опция \"Запомнить учётную запись\" не была выбрана во время входа, " +"настройки не будут сохранены по умолчанию. Включите эту опцию, если хотите " +"постоянно хранить настройки вашей учётной записи на этом компьютере.\n" "\n" -"Рекомендуется включить эту опцию, если вы не используете KMess как гость или не используете его в общественных местах (например, в интернет-кафе)." +"Рекомендуется включить эту опцию, если вы не используете KMess как гость или " +"не используете его в общественных местах (например, в интернет-кафе)." #. i18n: file: settings/accountpage.ui:294 #. i18n: ectx: property (text), widget (QCheckBox, rememberCheckbox_) -#: rc.cpp:407 +#: rc.cpp:412 msgid "Re&member the settings of this account" msgstr "Запо&мнить настройки этой учётной записи" #. i18n: file: settings/accountpage.ui:304 #. i18n: ectx: property (toolTip), widget (QCheckBox, autologinCheckBox_) -#: rc.cpp:410 +#: rc.cpp:415 msgid "If enabled, KMess automatically logs in with this account." msgstr "Если включено, KMess автоматически входит под этой учётной записью." #. i18n: file: settings/accountpage.ui:307 #. i18n: ectx: property (text), widget (QCheckBox, autologinCheckBox_) -#: rc.cpp:413 +#: rc.cpp:418 msgid "Log in &with this account automatically" msgstr "Входить с &помощью этой учётной записи автоматически" #. i18n: file: settings/accountpage.ui:319 #. i18n: ectx: property (text), widget (QLabel, textLabel1_) -#: rc.cpp:419 +#: rc.cpp:424 msgid "Login &as" msgstr "Войти &как" #. i18n: file: settings/accountpage.ui:332 #. i18n: ectx: property (whatsThis), widget (QComboBox, initialStatus_) -#: rc.cpp:422 +#: rc.cpp:427 msgid "Here you can select which status KMess should set, after logging in." -msgstr "Здесь вы можете выбрать статус, который KMess должен установить после входа." +msgstr "" +"Здесь вы можете выбрать статус, который KMess должен установить после входа." #. i18n: file: settings/accountpage.ui:375 #. i18n: ectx: property (whatsThis), widget (QLabel, verifyLabel_) -#: rc.cpp:425 -msgid "You need to connect to the Passport site to confirm that your email address exists." -msgstr "Вы должны соединиться с веб-сайтом Passport'a для подтверждения того, что ваш электронный адрес существует." +#: rc.cpp:430 +msgid "" +"You need to connect to the Passport site to confirm that your email address " +"exists." +msgstr "" +"Вы должны соединиться с веб-сайтом Passport'a для подтверждения того, что " +"ваш электронный адрес существует." #. i18n: file: settings/accountpage.ui:378 #. i18n: ectx: property (text), widget (QLabel, verifyLabel_) -#: rc.cpp:428 -msgid "You cannot change your friendly name because your Passport email address is not verified." +#: rc.cpp:433 +msgid "" +"You cannot change your friendly name because your Passport email address is " +"not verified." msgstr "Невозможно изменить имя, так как электронный адрес не подтверждён." #. i18n: file: settings/accountpage.ui:418 #. i18n: ectx: property (text), widget (KUrlLabel, verifyButton_) -#: rc.cpp:431 +#: rc.cpp:436 msgid "Request verification email" msgstr "Запрос проверки электронного адреса" #. i18n: file: settings/accountpage.ui:427 #. i18n: ectx: property (tipText), widget (KUrlLabel, verifyButton_) -#: rc.cpp:434 +#: rc.cpp:439 msgid "Go to accountservices.passport.net" msgstr "Перейдите на accountservices.passport.net" #. i18n: file: settings/accountpage.ui:446 #. i18n: ectx: property (whatsThis), widget (QLabel, registerLabel_) -#: rc.cpp:437 -msgid "You need a Passport account to connect to the Live Messenger network. You can register your current email address at register.passport.com or use a Live Mail account to connect." -msgstr "Необходима учётная запись для соединения с сетью Live Messenger. Вы можете зарегистрировать текущий электронный адрес на register.passport.com или использовать учётную запись Live Mail для соединения." +#: rc.cpp:442 +msgid "" +"You need a Passport account to connect to the Live Messenger network. " +"You can register your current email address at register.passport.com or use " +"a Live Mail account to connect." +msgstr "" +"Необходима учётная запись для соединения с сетью Live Messenger. Вы " +"можете зарегистрировать текущий электронный адрес на register.passport.com " +"или использовать учётную запись Live Mail для соединения." #. i18n: file: settings/accountpage.ui:449 #. i18n: ectx: property (text), widget (QLabel, registerLabel_) -#: rc.cpp:440 -msgid "To connect to the Live Messenger service, you will need to register an email address as Passport account." -msgstr "Для соединения с сервисом Live Messenger, необходимо зарегистрировать электронный адрес как учётную запись." +#: rc.cpp:445 +msgid "" +"To connect to the Live Messenger service, you will need to register an email " +"address as Passport account." +msgstr "" +"Для соединения с сервисом Live Messenger, необходимо зарегистрировать " +"электронный адрес как учётную запись." #. i18n: file: settings/accountpage.ui:489 #. i18n: ectx: property (text), widget (KUrlLabel, registerButton_) -#: rc.cpp:443 +#: rc.cpp:448 msgid "Register new account" msgstr "Зарегистрировать новую учётную запись" #. i18n: file: settings/accountpage.ui:498 #. i18n: ectx: property (tipText), widget (KUrlLabel, registerButton_) -#: rc.cpp:446 +#: rc.cpp:451 msgid "Go to register.passport.com" msgstr "Перейти на register.passport.com" #. i18n: file: settings/accountpage.ui:516 #. i18n: ectx: attribute (title), widget (QWidget, tab_2) -#: rc.cpp:449 +#: rc.cpp:454 msgid "&Status Options" msgstr "Свойства &статуса" #. i18n: file: settings/accountpage.ui:522 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useIdleTimerCheckBox_) -#: rc.cpp:452 -msgid "If enabled, your status will be changed automatically to \"Idle\" when you are not using the computer for a few minutes. If this option is not available, KMess was built without support for this feature." -msgstr "Если включено, статус будет автоматически изменяться на \"Простаивает\", когда вы не используете компьютер в течении нескольких минут. Если эта опция не доступна, это означает, что KMess собран без поддержки этой возможности." +#: rc.cpp:457 +msgid "" +"If enabled, your status will be changed automatically to \"Idle\" when you " +"are not using the computer for a few minutes. If this option is not " +"available, KMess was built without support for this feature." +msgstr "" +"Если включено, статус будет автоматически изменяться на \"Простаивает\", " +"когда вы не используете компьютер в течении нескольких минут. Если эта опция " +"не доступна, это означает, что KMess собран без поддержки этой возможности." #. i18n: file: settings/accountpage.ui:525 #. i18n: ectx: property (text), widget (QCheckBox, useIdleTimerCheckBox_) -#: rc.cpp:455 +#: rc.cpp:460 msgid "Change status to \"&Idle\" when inactive" msgstr "Изменять статус на \"&Простаивает\" когда неактивен" @@ -4941,662 +5547,807 @@ msgstr "Изменять статус на \"&Простаивает\" когд #. i18n: ectx: property (whatsThis), widget (QSpinBox, idleTimeSpinBox_) #. i18n: file: settings/accountpage.ui:582 #. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel2_) -#: rc.cpp:461 -#: rc.cpp:467 -#: rc.cpp:470 -msgid "Controls the number of minutes before KMess changes the status to \"Idle\"." -msgstr "Контролирует кол-во минут перед тем, как KMess изменяет статус на \"Простаивает\"." +#: rc.cpp:466 rc.cpp:472 rc.cpp:475 +msgid "" +"Controls the number of minutes before KMess changes the status to \"Idle\"." +msgstr "" +"Контролирует кол-во минут перед тем, как KMess изменяет статус на " +"\"Простаивает\"." #. i18n: file: settings/accountpage.ui:559 #. i18n: ectx: property (text), widget (QLabel, idleLabel1_) -#: rc.cpp:464 +#: rc.cpp:469 msgid "Become idle after" msgstr "Начать простаивать после" #. i18n: file: settings/accountpage.ui:585 #. i18n: ectx: property (text), widget (QLabel, idleLabel2_) -#: rc.cpp:473 +#: rc.cpp:478 msgid "minutes" msgstr "минут" #. i18n: file: settings/accountpage.ui:618 #. i18n: ectx: property (toolTip), widget (QLabel, needXScreensaverLabel_) -#: rc.cpp:476 -msgid "This happens because KMess was built without support for the \"XScreenSaver\" Xorg extension, which is used to detect user activity. Refer to your package manager for more details." -msgstr "Это случается потому, что KMess был собран без поддержки расширения \"XScreenSaver\", которое используется для определения деятельности пользователя. Обратитесь к своему менеджеру пакетов за более детальной информацией." +#: rc.cpp:481 +msgid "" +"This happens because KMess was built without support for the " +"\"XScreenSaver\" Xorg extension, which is used to detect user activity. " +"Refer to your package manager for more details." +msgstr "" +"Это случается потому, что KMess был собран без поддержки расширения " +"\"XScreenSaver\", которое используется для определения деятельности " +"пользователя. Обратитесь к своему менеджеру пакетов за более детальной " +"информацией." #. i18n: file: settings/accountpage.ui:621 #. i18n: ectx: property (text), widget (QLabel, needXScreensaverLabel_) -#: rc.cpp:479 +#: rc.cpp:484 msgid "Cannot enable auto idle: KMess was built without inactivity detection." -msgstr "Невозможно включить авто переход в режим простаивания: KMess был собран без поддержки определения отсутствия активности." +msgstr "" +"Невозможно включить авто переход в режим простаивания: KMess был собран без " +"поддержки определения отсутствия активности." #. i18n: file: settings/accountpage.ui:647 #. i18n: ectx: property (toolTip), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) -#: rc.cpp:482 -msgid "If enabled, you will not receive any notifications when your status is set to \"Busy\"." -msgstr "Если включено, вы не будете получать уведомления когда установлен статус \"Занят\"." +#: rc.cpp:487 +msgid "" +"If enabled, you will not receive any notifications when your status is set " +"to \"Busy\"." +msgstr "" +"Если включено, вы не будете получать уведомления когда установлен статус " +"\"Занят\"." #. i18n: file: settings/accountpage.ui:650 #. i18n: ectx: property (text), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) -#: rc.cpp:485 +#: rc.cpp:490 msgid "&Disable notifications when your status is set to \"Busy\"" msgstr "&Отключить уведомления, когда установлен статус \"Занят\"" #. i18n: file: settings/accountsmanagerpage.ui:26 #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: rc.cpp:488 +#: rc.cpp:493 msgid "Saved accounts:" msgstr "Сохранённые учётные записи:" #. i18n: file: settings/accountsmanagerpage.ui:76 #. i18n: ectx: property (toolTip), widget (QPushButton, addAccountButton_) -#: rc.cpp:491 -msgid "Click here to create a new KMess account for an email already associated to a Live account" -msgstr "Нажмите здесь, чтобы создать новую учётную запись KMess для электронного адреса , который уже был ассоциирован с учётной записью Live." +#: rc.cpp:496 +msgid "" +"Click here to create a new KMess account for an email already associated to " +"a Live account" +msgstr "" +"Нажмите здесь, чтобы создать новую учётную запись KMess для электронного " +"адреса , который уже был ассоциирован с учётной записью Live." #. i18n: file: settings/accountsmanagerpage.ui:79 #. i18n: ectx: property (text), widget (QPushButton, addAccountButton_) -#: rc.cpp:494 +#: rc.cpp:499 msgid "&Add Account..." msgstr "&Добавить учётную запись" #. i18n: file: settings/accountsmanagerpage.ui:92 #. i18n: ectx: property (toolTip), widget (QPushButton, configureAccountButton_) -#: rc.cpp:500 +#: rc.cpp:505 msgid "Select an account and click here to modify it" msgstr "Выберите учётную запись и нажмите здесь, чтобы изменить её" #. i18n: file: settings/accountsmanagerpage.ui:95 #. i18n: ectx: property (text), widget (QPushButton, configureAccountButton_) -#: rc.cpp:503 +#: rc.cpp:508 msgid "&Edit" msgstr "&Редактировать" #. i18n: file: settings/accountsmanagerpage.ui:108 #. i18n: ectx: property (toolTip), widget (QPushButton, removeAccountButton_) -#: rc.cpp:509 +#: rc.cpp:514 msgid "Select an account and click here to remove it" msgstr "Выберите учётную запись и нажмите здесь, чтобы удалить её" #. i18n: file: settings/accountsmanagerpage.ui:111 #. i18n: ectx: property (text), widget (QPushButton, removeAccountButton_) -#: rc.cpp:512 +#: rc.cpp:517 msgid "&Remove" msgstr "&Удалить" #. i18n: file: settings/chatloggingpage.ui:17 #. i18n: ectx: property (toolTip), widget (QCheckBox, logChatsCheckBox_) -#: rc.cpp:518 +#: rc.cpp:523 msgid "Enable this option to have your chats saved for later viewing" -msgstr "Включите эту опцию, чтобы сохранить свой разговор для последующего просмотра" +msgstr "" +"Включите эту опцию, чтобы сохранить свой разговор для последующего просмотра" #. i18n: file: settings/chatloggingpage.ui:23 #. i18n: ectx: property (whatsThis), widget (QCheckBox, logChatsCheckBox_) -#: rc.cpp:521 +#: rc.cpp:526 msgid "" -"

      If you enable chat logging, every chat you have will be saved in a certain place (which can be specified below).

      \n" -"

      The chat logs will allow you to find something in your old discussions, like a link, or you may use them to remember what you did say in a certain occasion to someone.

      \n" -"

      They may also pose some privacy issues though, because unauthorized people who use your account may read your chat logs.

      \n" -"

      Be sure to keep this option disabled on publicly accessible computers!

      " +"

      If you enable chat logging, every chat you have will be saved in a " +"certain place (which can be specified below).

      \n" +"

      The chat logs will allow you to find something in your old discussions, " +"like a link, or you may use them to remember what you did say in a certain " +"occasion to someone.

      \n" +"

      They may also pose some privacy issues though, because unauthorized " +"people who use your account may read your chat logs.

      \n" +"

      Be sure to keep this option disabled on publicly accessible computers!" +"

      " msgstr "" -"

      Если ведение истории разговора включено, каждый разговор будет сохранён в определённом месте (которое может быть задано ниже).

      \n" -"

      История разговоров поможет найти что-либо в старых разговорах, как ссылка, либо её можно использовать для того, чтобы вспомнить что вы сказали кому-то в определенный момент.

      \n" -"

      Она также может вызвать определённые проблемы с конфиденциальностью, так как не авторизованные лица, которые используют вашу учётную запись, могут прочитать историю разговоров.

      \n" -"

      Обязательно отключайте эту опцию на общественно доступных компьютерах!

      " +"

      Если ведение истории разговора включено, каждый разговор будет " +"сохранён в определённом месте (которое может быть задано ниже).

      \n" +"

      История разговоров поможет найти что-либо в старых разговорах, как " +"ссылка, либо её можно использовать для того, чтобы вспомнить что вы сказали " +"кому-то в определенный момент.

      \n" +"

      Она также может вызвать определённые проблемы с конфиденциальностью, так " +"как не авторизованные лица, которые используют вашу учётную запись, могут " +"прочитать историю разговоров.

      \n" +"

      Обязательно отключайте эту опцию на общественно доступных компьютерах!" +"

      " #. i18n: file: settings/chatloggingpage.ui:26 #. i18n: ectx: property (text), widget (QCheckBox, logChatsCheckBox_) -#: rc.cpp:527 +#: rc.cpp:532 msgid "Enable chat logging" msgstr "Включить историю разговоров" #. i18n: file: settings/chatloggingpage.ui:36 #. i18n: ectx: property (toolTip), widget (QGroupBox, saveChatsToFileCheckBox_) -#: rc.cpp:530 -msgid "If enabled, KMess additionaly saves your chat logs as HTML or plain text files" -msgstr "Если включено, KMess дополнительно сохраняет историю разговоров в HTML формат или в простой текстовый файл" +#: rc.cpp:535 +msgid "" +"If enabled, KMess additionaly saves your chat logs as HTML or plain text " +"files" +msgstr "" +"Если включено, KMess дополнительно сохраняет историю разговоров в HTML " +"формат или в простой текстовый файл" #. i18n: file: settings/chatloggingpage.ui:39 #. i18n: ectx: property (title), widget (QGroupBox, saveChatsToFileCheckBox_) -#: rc.cpp:533 +#: rc.cpp:538 msgid "Additionally save chat logs to file" msgstr "Дополнительно сохранять историю разговоров в файл" #. i18n: file: settings/chatloggingpage.ui:51 #. i18n: ectx: property (toolTip), widget (QLabel, label_2) -#: rc.cpp:536 +#: rc.cpp:541 msgid "With this option, you can choose how KMess will save your chats" msgstr "С этой опцией, можно выбирать как KMess будет сохранять разговоры" #. i18n: file: settings/chatloggingpage.ui:54 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:539 +#: rc.cpp:544 msgid "Save chat logs as:" msgstr "Сохранить историю разговоров как:" #. i18n: file: settings/chatloggingpage.ui:86 #. i18n: ectx: property (whatsThis), widget (QComboBox, fileFormatComboBox_) -#: rc.cpp:542 +#: rc.cpp:547 msgid "" "\n" "

      The file format you choose here is important.

      \n" -"

      Chat logs saved in the HTML format can be easily read in any web browser, but if they are opened on another computer, display pictures and emoticons cannot not be displayed.

      \n" -"

      Chat logs saved as plain text, on the other side, can be perfectly read everywhere, but they will not contain any text formatting, display pictures, or emoticons.

      \n" +"

      Chat logs saved in the HTML format can be easily read in any web browser, " +"but if they are opened on another computer, display pictures and emoticons " +"cannot not be displayed.

      \n" +"

      Chat logs saved as plain text, on the other side, can be perfectly read " +"everywhere, but they will not contain any text formatting, display pictures, " +"or emoticons.

      \n" "" msgstr "" "\n" "

      Формат файла, выбранный здесь, является важным.

      \n" -"

      История разговоров, сохранённая в формат HTML может быть легко прочитана в любом веб-браузере, но если вы откроете её на другом компьютере, изображения и смайлы могут быть не показаны.

      \n" -"

      История разговоров,сохранённая в простой текстовый файл, с одной стороны, превосходно может быть прочитана где угодно, но она не будет содержать текстового форматирования, изображений или смайлов.

      \n" +"

      История разговоров, сохранённая в формат HTML может быть легко прочитана " +"в любом веб-браузере, но если вы откроете её на другом компьютере, " +"изображения и смайлы могут быть не показаны.

      \n" +"

      История разговоров,сохранённая в простой текстовый файл, с одной стороны, " +"превосходно может быть прочитана где угодно, но она не будет содержать " +"текстового форматирования, изображений или смайлов.

      \n" "" #. i18n: file: settings/chatloggingpage.ui:90 #. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) -#: rc.cpp:549 +#: rc.cpp:554 msgid "Web Pages (HTML)" msgstr "Веб-страницы (HTML)" #. i18n: file: settings/chatloggingpage.ui:95 #. i18n: ectx: property (text), item, widget (QComboBox, fileFormatComboBox_) -#: rc.cpp:552 +#: rc.cpp:557 msgid "Plain Text" msgstr "Обычный текст" #. i18n: file: settings/chatloggingpage.ui:134 #. i18n: ectx: property (toolTip), widget (QLabel, label) -#: rc.cpp:555 -msgid "These options allow you to choose how KMess will organize your chat logs within the directory specified below." -msgstr "Эти опции позволяют выбрать то, как KMess будет организовывать историю разговоров в директории, заданной ниже." +#: rc.cpp:560 +msgid "" +"These options allow you to choose how KMess will organize your chat logs " +"within the directory specified below." +msgstr "" +"Эти опции позволяют выбрать то, как KMess будет организовывать историю " +"разговоров в директории, заданной ниже." #. i18n: file: settings/chatloggingpage.ui:137 #. i18n: ectx: property (whatsThis), widget (QLabel, label) -#: rc.cpp:558 -msgid "Depending on which option you choose here, KMess will create some directories to help you keep your chat logs organized. Use the \"What's This?\" feature on a specific option for more details." -msgstr "В зависимости от того, какая опция выбрана, KMess создаст директории необходимые для поддержания истории разговоров в порядке. Используйте возможность \"Что это?\" на конкретной опции для детальной информации." +#: rc.cpp:563 +msgid "" +"Depending on which option you choose here, KMess will create some " +"directories to help you keep your chat logs organized. Use the \"What's This?" +"\" feature on a specific option for more details." +msgstr "" +"В зависимости от того, какая опция выбрана, KMess создаст директории " +"необходимые для поддержания истории разговоров в порядке. Используйте " +"возможность \"Что это?\" на конкретной опции для детальной информации." #. i18n: file: settings/chatloggingpage.ui:140 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:561 +#: rc.cpp:566 msgid "Separate logged chats by:" msgstr "Разделить историю разговоров по:" #. i18n: file: settings/chatloggingpage.ui:156 #. i18n: ectx: property (toolTip), widget (QRadioButton, yearRadioButton_) -#: rc.cpp:564 +#: rc.cpp:569 msgid "Create a directory to organize chats by year" msgstr "Создать директорию для организации истории разговоров по году" #. i18n: file: settings/chatloggingpage.ui:163 #. i18n: ectx: property (whatsThis), widget (QRadioButton, yearRadioButton_) -#: rc.cpp:567 +#: rc.cpp:572 msgid "" "

      This option tells KMess to divide your chat logs by year only.\n" -"You will find directories for each year of logged chatting; those will contain all of that year's chat logs, grouped together.

      \n" +"You will find directories for each year of logged chatting; those will " +"contain all of that year's chat logs, grouped together.

      \n" "\n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/date-and-contact-name.html

      " +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/date-and-contact-name.html

      " msgstr "" -"

      Эта опция говорит KMess разделить историю разговоров только по году.\n" -"Вы обнаружите директории для каждого года истории разговоров; те в свою очередь, содержат все разговоры за данный год, сгруппированные вместе.

      \n" +"

      Эта опция говорит KMess разделить историю разговоров только по " +"году.\n" +"Вы обнаружите директории для каждого года истории разговоров; те в свою " +"очередь, содержат все разговоры за данный год, сгруппированные вместе.

      \n" "\n" -"

      Разговор, который был 29 Ноября, 2008 года будет сохранён в директорию истории разговоров как:

      \n" -"

      <Директория истории разговоров>/2008/дата-и-имя-контакта.html

      " +"

      Разговор, который был 29 Ноября, 2008 года будет сохранён в директорию " +"истории разговоров как:

      \n" +"

      <Директория истории разговоров>/2008/дата-и-имя-контакта.html

      " #. i18n: file: settings/chatloggingpage.ui:166 #. i18n: ectx: property (text), widget (QRadioButton, yearRadioButton_) -#: rc.cpp:574 +#: rc.cpp:579 msgid "Year" msgstr "Год" #. i18n: file: settings/chatloggingpage.ui:182 #. i18n: ectx: property (toolTip), widget (QRadioButton, monthRadioButton_) -#: rc.cpp:577 +#: rc.cpp:582 msgid "Create directories to organize chats by year then by month" -msgstr "Создать директории для организации истории разговоров по году и затем по месяцу" +msgstr "" +"Создать директории для организации истории разговоров по году и затем по " +"месяцу" #. i18n: file: settings/chatloggingpage.ui:188 #. i18n: ectx: property (whatsThis), widget (QRadioButton, monthRadioButton_) -#: rc.cpp:580 +#: rc.cpp:585 msgid "" -"

      This option tells KMess to divide your chat logs by year, then by month.\n" -"You will find some directories for each year of logged chatting. Each will contain a directory for each month where chats have been logged; and within those, you will find all of that month's chat logs grouped together.

      \n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/11/date-and-contact-name.html

      " +"

      This option tells KMess to divide your chat logs by year, then by " +"month.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, you will find all of that month's chat logs grouped together.

      \n" +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/11/date-and-contact-name.html

      " msgstr "" -"

      Эта опция говорит KMess разделить историю разговоров по году, и затем по месяцу.\n" -"Вы обнаружите директории для каждого года истории разговоров. Каждая из которых будет содержать директорию для каждого месяца в котором велась история разговоров; и вместе с этим, вы обнаружите всю историю разговоров для этого месяца,сгруппированную вместе.

      \n" -"

      Разговор, который был 29 Ноября, 2008 года будет сохранён в директорию истории разговоров как:

      \n" -"

      <Директория истории разговоров>/2008/11/дата-и-имя-контакта.html

      " +"

      Эта опция говорит KMess разделить историю разговоров по году, и " +"затем по месяцу.\n" +"Вы обнаружите директории для каждого года истории разговоров. Каждая из " +"которых будет содержать директорию для каждого месяца в котором велась " +"история разговоров; и вместе с этим, вы обнаружите всю историю разговоров " +"для этого месяца,сгруппированную вместе.

      \n" +"

      Разговор, который был 29 Ноября, 2008 года будет сохранён в директорию " +"истории разговоров как:

      \n" +"

      <Директория истории разговоров>/2008/11/дата-и-имя-контакта.html" #. i18n: file: settings/chatloggingpage.ui:191 #. i18n: ectx: property (text), widget (QRadioButton, monthRadioButton_) -#: rc.cpp:586 +#: rc.cpp:591 msgid "Year then Month" msgstr "Год, затем месяц" #. i18n: file: settings/chatloggingpage.ui:204 #. i18n: ectx: property (toolTip), widget (QRadioButton, dayRadioButton_) -#: rc.cpp:589 +#: rc.cpp:594 msgid "Create directories to organize chats by year, by month, then by day" -msgstr "Создать директории для организации истории разговоров по году, месяцу и затем по дню" +msgstr "" +"Создать директории для организации истории разговоров по году, месяцу и " +"затем по дню" #. i18n: file: settings/chatloggingpage.ui:211 #. i18n: ectx: property (whatsThis), widget (QRadioButton, dayRadioButton_) -#: rc.cpp:592 +#: rc.cpp:597 msgid "" -"

      This option tells KMess to divide your chat logs by year, then by month, then again by day.\n" -"You will find some directories for each year of logged chatting. Each will contain a directory for each month where chats have been logged; and within those, the chats will be further divided in a directory for each day.

      \n" +"

      This option tells KMess to divide your chat logs by year, then by " +"month, then again by day.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, the chats will be further divided in a directory for each day.

      \n" "\n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/11/29/date-and-contact-name.html

      " +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/11/29/date-and-contact-name.html" msgstr "" -"

      Эта опция говорит KMess разделить Вашу историю разговоров по году, затем по месяцу, и затем по дню.\n" -"Вы обнаружите директории для каждого года истории разговоров. Каждая из которых будет содержать директорию для каждого месяца в которых велась история разговоров; и вместе с тем, разговоры будут поделены на директории для каждого дня.

      \n" +"

      Эта опция говорит KMess разделить Вашу историю разговоров по году, " +"затем по месяцу, и затем по дню.\n" +"Вы обнаружите директории для каждого года истории разговоров. Каждая из " +"которых будет содержать директорию для каждого месяца в которых велась " +"история разговоров; и вместе с тем, разговоры будут поделены на директории " +"для каждого дня.

      \n" "\n" -"

      Разговор,который был 29 Ноября, 2008 года будет сохранён в директорию истории разговоров как:

      \n" -"

      <Директория истории разговоров>/2008/11/29/дата-и-имя-контакта.html

      " +"

      Разговор,который был 29 Ноября, 2008 года будет сохранён в директорию " +"истории разговоров как:

      \n" +"

      <Директория истории разговоров>/2008/11/29/дата-и-имя-контакта." +"html

      " #. i18n: file: settings/chatloggingpage.ui:214 #. i18n: ectx: property (text), widget (QRadioButton, dayRadioButton_) -#: rc.cpp:599 +#: rc.cpp:604 msgid "Year, Month then Day" msgstr "Год, месяц и затем день" #. i18n: file: settings/chatloggingpage.ui:224 #. i18n: ectx: property (toolTip), widget (QRadioButton, singleDirectoryRadioButton_) -#: rc.cpp:602 +#: rc.cpp:607 msgid "Place all saved chat logs directly in the directory specified below" -msgstr "Поместить всю сохранённую историю разговоров в директорию, указанную ниже" +msgstr "" +"Поместить всю сохранённую историю разговоров в директорию, указанную ниже" #. i18n: file: settings/chatloggingpage.ui:227 #. i18n: ectx: property (whatsThis), widget (QRadioButton, singleDirectoryRadioButton_) -#: rc.cpp:605 -msgid "This option tells KMess to save all your chat logs in the same folder, without organizing them at all." -msgstr "Эта опция говорит KMess сохранить всю историю разговоров в ту же папку, без её упорядочивания." +#: rc.cpp:610 +msgid "" +"This option tells KMess to save all your chat logs in the same folder, " +"without organizing them at all." +msgstr "" +"Эта опция говорит KMess сохранить всю историю разговоров в ту же папку, без " +"её упорядочивания." #. i18n: file: settings/chatloggingpage.ui:230 #. i18n: ectx: property (text), widget (QRadioButton, singleDirectoryRadioButton_) -#: rc.cpp:608 +#: rc.cpp:613 msgid "Do not organize files" msgstr "Не упорядочивать файлы" #. i18n: file: settings/chatloggingpage.ui:273 #. i18n: ectx: property (toolTip), widget (QToolButton, chatSavePathButton_) -#: rc.cpp:611 +#: rc.cpp:616 msgid "Click here to choose a directory" msgstr "Нажмите здесь для выбора директории" #. i18n: file: settings/chatloggingpage.ui:302 #. i18n: ectx: property (toolTip), widget (QLabel, chatSavePathLabel_) -#: rc.cpp:617 +#: rc.cpp:622 msgid "The directory where all your chat logs will be saved" msgstr "Директория где будет сохранена вся история разговоров" #. i18n: file: settings/chatloggingpage.ui:305 #. i18n: ectx: property (whatsThis), widget (QLabel, chatSavePathLabel_) -#: rc.cpp:620 +#: rc.cpp:625 msgid "Choose a directory where you would like to save your chat logs." -msgstr "Выберите директорию, в которой вы хотите сохранить всю историю разговоров." +msgstr "" +"Выберите директорию, в которой вы хотите сохранить всю историю разговоров." #. i18n: file: settings/chatloggingpage.ui:308 #. i18n: ectx: property (text), widget (QLabel, chatSavePathLabel_) -#: rc.cpp:623 +#: rc.cpp:628 msgid "Save chat logs in the following directory:" msgstr "Сохранить историю разговоров в следующей директории:" #. i18n: file: settings/chatstylepage.ui:27 #. i18n: ectx: attribute (title), widget (QWidget, styleTab_) -#: rc.cpp:626 +#: rc.cpp:631 msgid "St&yle" msgstr "Ст&иль" #. i18n: file: settings/chatstylepage.ui:38 #. i18n: ectx: property (whatsThis), widget (QLabel, textLabel1) -#: rc.cpp:629 +#: rc.cpp:634 msgid "Allows you to change the theme KMess uses to display all chat messages." -msgstr "Позволяет изменять тему KMess, которая используется для отображения всех сообщений разговора." +msgstr "" +"Позволяет изменять тему KMess, которая используется для отображения всех " +"сообщений разговора." #. i18n: file: settings/chatstylepage.ui:41 #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: rc.cpp:632 +#: rc.cpp:637 msgid "&Chat style:" msgstr "Стиль &разговора:" #. i18n: file: settings/chatstylepage.ui:64 #. i18n: ectx: property (text), widget (KPushButton, newStylesButton_) -#: rc.cpp:635 +#: rc.cpp:640 msgid "Get &New Styles..." msgstr "Получить новые стили..." #. i18n: file: settings/chatstylepage.ui:120 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:638 +#: rc.cpp:643 msgid "Chat Settings" msgstr "Настройка разговора" #. i18n: file: settings/chatstylepage.ui:128 #. i18n: ectx: property (toolTip), widget (QCheckBox, useEmoticonsCheckBox_) -#: rc.cpp:641 +#: rc.cpp:646 msgid "Enables the appearance of emoticons in the chat window." msgstr "Включает присутствие смайлов в окне разговора." #. i18n: file: settings/chatstylepage.ui:131 #. i18n: ectx: property (text), widget (QCheckBox, useEmoticonsCheckBox_) -#: rc.cpp:644 +#: rc.cpp:649 msgid "&Show emoticons" msgstr "&Показывать смайлы" #. i18n: file: settings/chatstylepage.ui:243 #. i18n: ectx: property (toolTip), widget (QCheckBox, showWinksCheckBox_) -#: rc.cpp:650 +#: rc.cpp:655 msgid "Enables the appearance of winks in the chat window." msgstr "Включает присутствие подмигиваний в окне разговора." #. i18n: file: settings/chatstylepage.ui:246 #. i18n: ectx: property (whatsThis), widget (QCheckBox, showWinksCheckBox_) -#: rc.cpp:653 -msgid "If enabled, winks you send or receive will be displayed in the chat window. Please note that in order to use this feature, you need to have a working Flash-plugin installed." -msgstr "Если включено, подмигивания, которые вы отправляете или принимаете будут показаны в окне разговора. Обратите внимание, что для использования этой возможности необходимо иметь установленный Flash-плагин." +#: rc.cpp:658 +msgid "" +"If enabled, winks you send or receive will be displayed in the chat window. " +"Please note that in order to use this feature, you need to have a working " +"Flash-plugin installed." +msgstr "" +"Если включено, подмигивания, которые вы отправляете или принимаете будут " +"показаны в окне разговора. Обратите внимание, что для использования этой " +"возможности необходимо иметь установленный Flash-плагин." #. i18n: file: settings/chatstylepage.ui:249 #. i18n: ectx: property (text), widget (QCheckBox, showWinksCheckBox_) -#: rc.cpp:656 +#: rc.cpp:661 msgid "Show &winks" msgstr "Показывать &подмигивания" #. i18n: file: settings/chatstylepage.ui:256 #. i18n: ectx: property (whatsThis), widget (QCheckBox, groupFollowupCheckbox_) -#: rc.cpp:659 -msgid "This option enables the grouping of messages from the same contact. Whenever a contact sends you multiple messages, KMess will group those messages to one single message. The exact appearance depends on the chosen chat style." -msgstr "Эта опция включает группировку сообщений от того же контакта. Всякий раз, когда контакт отправляет вам несколько сообщений, KMess сгруппирует эти сообщения в одно. Точный внешний вид зависит от выбранного стиля разговора." +#: rc.cpp:664 +msgid "" +"This option enables the grouping of messages from the same contact. Whenever " +"a contact sends you multiple messages, KMess will group those messages to " +"one single message. The exact appearance depends on the chosen chat style." +msgstr "" +"Эта опция включает группировку сообщений от того же контакта. Всякий раз, " +"когда контакт отправляет вам несколько сообщений, KMess сгруппирует эти " +"сообщения в одно. Точный внешний вид зависит от выбранного стиля разговора." #. i18n: file: settings/chatstylepage.ui:259 #. i18n: ectx: property (text), widget (QCheckBox, groupFollowupCheckbox_) -#: rc.cpp:662 +#: rc.cpp:667 msgid "&Group follow-up messages from the same contact" msgstr "&Группировать последующие сообщения от одного и того же контакта" #. i18n: file: settings/chatstylepage.ui:285 #. i18n: ectx: property (toolTip), widget (QCheckBox, showTimeCheckbox_) -#: rc.cpp:668 +#: rc.cpp:673 msgid "Enables the appearance of a timestamp in each chat message." msgstr "Включает появление временных меток в каждом сообщении разговора." #. i18n: file: settings/chatstylepage.ui:288 #. i18n: ectx: property (text), widget (QCheckBox, showTimeCheckbox_) -#: rc.cpp:671 +#: rc.cpp:676 msgid "S&how timestamp" msgstr "П&оказывать временные метки" #. i18n: file: settings/chatstylepage.ui:319 #. i18n: ectx: property (text), widget (QCheckBox, showDateCheckbox_) -#: rc.cpp:677 +#: rc.cpp:682 msgid "Show &date" msgstr "Показывать &дату" #. i18n: file: settings/chatstylepage.ui:349 #. i18n: ectx: property (text), widget (QCheckBox, showSecondsCheckbox_) -#: rc.cpp:680 +#: rc.cpp:685 msgid "Show s&econds" msgstr "Показывать с&екунды" #. i18n: file: settings/chatstylepage.ui:362 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: rc.cpp:683 +#: rc.cpp:688 msgid "&Text" msgstr "&Текст" #. i18n: file: settings/chatstylepage.ui:374 #. i18n: ectx: property (whatsThis), widget (QLabel, textLabel2) -#: rc.cpp:686 +#: rc.cpp:691 msgid "This is the font style and color used in your chat messages." msgstr "Это стиль и цвет шрифта, используемый в сообщениях." #. i18n: file: settings/chatstylepage.ui:377 #. i18n: ectx: property (text), widget (QLabel, textLabel2) -#: rc.cpp:689 +#: rc.cpp:694 msgid "Your &message font:" msgstr "Шрифт &сообщения:" #. i18n: file: settings/chatstylepage.ui:458 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useContactFontCheckBox_) -#: rc.cpp:692 -msgid "This option allows you to override the font style and color of your contacts' messages with the chosen font style and color below." -msgstr "Эта опция позволяет переопределить стиль и цвет шрифта сообщений ваших контактов, с выбранным ниже стилем и цветом." +#: rc.cpp:697 +msgid "" +"This option allows you to override the font style and color of your " +"contacts' messages with the chosen font style and color below." +msgstr "" +"Эта опция позволяет переопределить стиль и цвет шрифта сообщений ваших " +"контактов, с выбранным ниже стилем и цветом." #. i18n: file: settings/chatstylepage.ui:461 #. i18n: ectx: property (text), widget (QCheckBox, useContactFontCheckBox_) -#: rc.cpp:695 +#: rc.cpp:700 msgid "&Force messages from your contacts to use this font:" msgstr "&Заставить сообщения от контактов использовать этот шрифт:" #. i18n: file: settings/chatstylepage.ui:536 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_4) -#: rc.cpp:698 +#: rc.cpp:703 msgid "Chat Window Formatting" msgstr "Форматирование окна разговора" #. i18n: file: settings/chatstylepage.ui:542 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useFontEffectsCheckBox_) -#: rc.cpp:701 -msgid "Enables the use of font effects. Typing *bold*, /italic/, and _underline_ causes those words to appear in a bold, italic or underlined font respectively." -msgstr "Включает использование эффектов шрифта. Использование *жирный*, /курсив/, и _подчёркнутый_ является причиной появления этих слов с жирным, курсивным или подчёркнутым шрифтом, соответственно." +#: rc.cpp:706 +msgid "" +"Enables the use of font effects. Typing *bold*, /italic/, and " +"_underline_ causes those words to appear in a bold, italic or underlined " +"font respectively." +msgstr "" +"Включает использование эффектов шрифта. Использование *жирный*, /" +"курсив/, и _подчёркнутый_ является причиной появления этих слов с жирным, " +"курсивным или подчёркнутым шрифтом, соответственно." #. i18n: file: settings/chatstylepage.ui:545 #. i18n: ectx: property (text), widget (QCheckBox, useFontEffectsCheckBox_) -#: rc.cpp:704 +#: rc.cpp:709 msgid "Use font &effects in messages, like *bold*, /italic/, and _underline_" -msgstr "Использовать в сообщении такие &эффекты шрифта как *жирный*, /курсив/, и _подчёркнутый_" +msgstr "" +"Использовать в сообщении такие &эффекты шрифта как *жирный*, /курсив/, и " +"_подчёркнутый_" #. i18n: file: settings/chatstylepage.ui:555 #. i18n: ectx: property (whatsThis), widget (QCheckBox, enableChatFormattingCheckBox_) #. i18n: file: settings/contactlistpage.ui:68 #. i18n: ectx: property (whatsThis), widget (QCheckBox, enableListFormattingCheckBox_) -#: rc.cpp:710 -#: rc.cpp:777 -msgid "Enables the use of \"Messenger Plus!\" formattings in the chat window. For example, [b]this text[/b] will be replaced with this text." -msgstr "Включает использование в окне разговора форматирования \"Messenger Plus!\" . К примеру, [b]этот текст[/b] будет заменён на этот текст." +#: rc.cpp:715 rc.cpp:782 +msgid "" +"Enables the use of \"Messenger Plus!\" formattings in the chat window. " +"For example, [b]this text[/b] will be replaced with this text." +msgstr "" +"Включает использование в окне разговора форматирования \"Messenger " +"Plus!\" . К примеру, [b]этот текст[/b] будет заменён на этот текст." #. i18n: file: settings/chatstylepage.ui:558 #. i18n: ectx: property (text), widget (QCheckBox, enableChatFormattingCheckBox_) -#: rc.cpp:713 +#: rc.cpp:718 msgid "Enable \"Messenger Plus!\" formatting" msgstr "Включить форматирование \"Messenger Plus!\"" #. i18n: file: settings/chatstylepage.ui:582 #. i18n: ectx: attribute (title), widget (QWidget, tab_2) -#: rc.cpp:716 +#: rc.cpp:721 msgid "&Behavior" msgstr "&Внешний вид" #. i18n: file: settings/chatstylepage.ui:589 #. i18n: ectx: property (whatsThis), widget (QCheckBox, shakeNudgeCheckBox_) -#: rc.cpp:719 +#: rc.cpp:724 msgid "" -"

      When contacts would like to have your attention they can send you a nudge. By default the chat window shakes when a nudge is received or sent. Disable this option if the shaking effect is too obtrusive.

      \n" -"

      Even if this option is enabled KMess still limits the shaking effect. Contacts may send multiple nudges at once, but KMess only shakes the chat window with the first nudge.

      " +"

      When contacts would like to have your attention they can send you a " +"nudge. By default the chat window shakes when a nudge is received or sent. " +"Disable this option if the shaking effect is too obtrusive.

      \n" +"

      Even if this option is enabled KMess still limits the shaking effect. " +"Contacts may send multiple nudges at once, but KMess only shakes the chat " +"window with the first nudge.

      " msgstr "" -"

      Когда контакт хочет вашего внимания,он может толкнуть вас. По умолчанию, окно разговора трясётся при получении или отправке толчка. Отключите эту опцию,если эффект тряски слишком навязчив.

      \n" -"

      Даже в том случае, когда эта опция включена, KMess ограничивает эффект тряски. Контакты могут отправлять несколько толчков за 1 раз, но KMess трясёт окно разговора только при первом толчке.

      " +"

      Когда контакт хочет вашего внимания,он может толкнуть вас. По " +"умолчанию, окно разговора трясётся при получении или отправке толчка. " +"Отключите эту опцию,если эффект тряски слишком навязчив.

      \n" +"

      Даже в том случае, когда эта опция включена, KMess ограничивает эффект " +"тряски. Контакты могут отправлять несколько толчков за 1 раз, но KMess " +"трясёт окно разговора только при первом толчке.

      " #. i18n: file: settings/chatstylepage.ui:592 #. i18n: ectx: property (text), widget (QCheckBox, shakeNudgeCheckBox_) -#: rc.cpp:723 +#: rc.cpp:728 msgid "Shake the chat &window when a nudge is received or sent" msgstr "Трясти окно &разговора при получении или отправке толчка" #. i18n: file: settings/chatstylepage.ui:602 #. i18n: ectx: property (whatsThis), widget (QCheckBox, displayChatUserPictureCheckBox_) -#: rc.cpp:729 -msgid "If this option is enabled, your own display picture will be shown in the contacts panel, along with the pictures of the contacts in that chat." -msgstr "Если эта опция включена, ваш аватар будет показан в панели контактов, вместе с изображениями контактов в этом разговоре. " +#: rc.cpp:734 +msgid "" +"If this option is enabled, your own display picture will be shown in the " +"contacts panel, along with the pictures of the contacts in that chat." +msgstr "" +"Если эта опция включена, ваш аватар будет показан в панели контактов, вместе " +"с изображениями контактов в этом разговоре. " #. i18n: file: settings/chatstylepage.ui:605 #. i18n: ectx: property (text), widget (QCheckBox, displayChatUserPictureCheckBox_) -#: rc.cpp:732 +#: rc.cpp:737 msgid "Display your own &display picture in the chat window" msgstr "Показывать собственное &изображение в окне разговора" #. i18n: file: settings/chatstylepage.ui:630 #. i18n: ectx: property (text), widget (QLabel, textLabel1_2) -#: rc.cpp:735 +#: rc.cpp:740 msgid "G&roup chats in the same window:" msgstr "Гр&уппировать разговоры в одном и том же окне:" #. i18n: file: settings/chatstylepage.ui:650 #. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) -#: rc.cpp:738 +#: rc.cpp:743 msgid "Always" msgstr "Всегда" #. i18n: file: settings/chatstylepage.ui:655 #. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) -#: rc.cpp:741 +#: rc.cpp:746 msgid "For contacts in the same group" msgstr "Для контактов в той же группе" #. i18n: file: settings/chatstylepage.ui:660 #. i18n: ectx: property (text), item, widget (QComboBox, tabbedChatMode_) -#: rc.cpp:744 +#: rc.cpp:749 msgid "Never" msgstr "Никогда" #. i18n: file: settings/contactlistpage.ui:17 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: rc.cpp:747 +#: rc.cpp:752 msgid "Display Options" msgstr "Опции отображения" #. i18n: file: settings/contactlistpage.ui:23 #. i18n: ectx: property (whatsThis), widget (QCheckBox, showEmailInfoCheckBox_) -#: rc.cpp:750 -msgid "If enabled, a notification is shown when an email message is received in your inbox. The number of unread email messages is shown above the contact list. This option is only available for Live Mail accounts." -msgstr "Если включено, будет показано уведомление при получении новых электронных писем во входящие. Кол-во непрочитанных электронных писем отображается над списком контактов. Эта опция доступна только для учётных записей Live Mail." +#: rc.cpp:755 +msgid "" +"If enabled, a notification is shown when an email message is received in " +"your inbox. The number of unread email messages is shown above the contact " +"list. This option is only available for Live Mail accounts." +msgstr "" +"Если включено, будет показано уведомление при получении новых электронных " +"писем во входящие. Кол-во непрочитанных электронных писем отображается над " +"списком контактов. Эта опция доступна только для учётных записей Live Mail." #. i18n: file: settings/contactlistpage.ui:26 #. i18n: ectx: property (text), widget (QCheckBox, showEmailInfoCheckBox_) -#: rc.cpp:753 +#: rc.cpp:758 msgid "Display a count of &unread mail" msgstr "Показывать кол-во &непрочитанных писем" #. i18n: file: settings/contactlistpage.ui:33 #. i18n: ectx: property (whatsThis), widget (QCheckBox, nowListeningCheckBox_) -#: rc.cpp:756 -msgid "If enabled, your contacts can see which song you are listening to. This information is retrieved from the currently active media player." -msgstr "Если включено, ваши контакты могут видеть песню, которую вы слушаете. Эта информация извлекается из активного на данный момент медиаплеера." +#: rc.cpp:761 +msgid "" +"If enabled, your contacts can see which song you are listening to. This " +"information is retrieved from the currently active media player." +msgstr "" +"Если включено, ваши контакты могут видеть песню, которую вы слушаете. Эта " +"информация извлекается из активного на данный момент медиаплеера." #. i18n: file: settings/contactlistpage.ui:36 #. i18n: ectx: property (text), widget (QCheckBox, nowListeningCheckBox_) -#: rc.cpp:759 +#: rc.cpp:764 msgid "Show contacts w&hich song I am listening to" msgstr "Показывать контактам к&акую песню я слушаю" #. i18n: file: settings/contactlistpage.ui:46 #. i18n: ectx: property (toolTip), widget (QCheckBox, showBirdCheckBox_) -#: rc.cpp:765 -msgid "If enabled, the KMess logo will be displayed in the background of the contact list." +#: rc.cpp:770 +msgid "" +"If enabled, the KMess logo will be displayed in the background of the " +"contact list." msgstr "Если включено, лого KMess будет отображено на фоне списка контактов." #. i18n: file: settings/contactlistpage.ui:49 #. i18n: ectx: property (text), widget (QCheckBox, showBirdCheckBox_) -#: rc.cpp:768 +#: rc.cpp:773 msgid "Show background &image" msgstr "Показывать фоновое &изображение" #. i18n: file: settings/contactlistpage.ui:62 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:774 +#: rc.cpp:779 msgid "List Formatting" msgstr "Форматирование списка" #. i18n: file: settings/contactlistpage.ui:71 #. i18n: ectx: property (text), widget (QCheckBox, enableListFormattingCheckBox_) -#: rc.cpp:780 +#: rc.cpp:785 msgid "Enable \"Messenger &Plus!\" formatting" msgstr "Включить форматирование \"Messenger &Plus!\"" #. i18n: file: settings/contactlistpage.ui:78 #. i18n: ectx: property (text), widget (QCheckBox, showContactEmailCheckBox_) -#: rc.cpp:783 +#: rc.cpp:788 msgid "Show the &email address of contacts instead of their friendly name" msgstr "Показывать &электронные адреса контактов вместо их имён" #. i18n: file: settings/emoticonspage.ui:24 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: rc.cpp:786 +#: rc.cpp:791 msgid "&Emoticon Themes" msgstr "Темы &смайлов" #. i18n: file: settings/emoticonspage.ui:36 #. i18n: ectx: property (text), widget (QLabel, textLabel1) -#: rc.cpp:789 +#: rc.cpp:794 msgid "Available emoticon themes:" msgstr "Доступные темы смайлов:" #. i18n: file: settings/emoticonspage.ui:73 #. i18n: ectx: attribute (title), widget (QWidget, tab_2) -#: rc.cpp:792 +#: rc.cpp:797 msgid "&Custom Emoticons" msgstr "&Пользовательские смайлы" #. i18n: file: settings/emoticonspage.ui:110 #. i18n: ectx: property (toolTip), widget (QPushButton, addEmoticonButton_) -#: rc.cpp:795 +#: rc.cpp:800 msgid "Click here to add a new custom emoticon" msgstr "Нажмите здесь для добавления новый пользовательских смайлов" #. i18n: file: settings/emoticonspage.ui:113 #. i18n: ectx: property (text), widget (QPushButton, addEmoticonButton_) -#: rc.cpp:798 +#: rc.cpp:803 msgid "Add Ne&w..." msgstr "Добавить но&вый..." #. i18n: file: settings/emoticonspage.ui:142 #. i18n: ectx: property (toolTip), widget (QPushButton, renameEmoticonButton_) -#: rc.cpp:804 +#: rc.cpp:809 msgid "Click here to rename the selected emoticon" msgstr "Нажмите здесь для переименования выбранного смайла" #. i18n: file: settings/emoticonspage.ui:145 #. i18n: ectx: property (text), widget (QPushButton, renameEmoticonButton_) -#: rc.cpp:807 +#: rc.cpp:812 msgid "Re&name" msgstr "Пере&именовать" #. i18n: file: settings/emoticonspage.ui:158 #. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) -#: rc.cpp:813 +#: rc.cpp:818 msgid "Click here to remove the selected emoticon" msgstr "Нажмите здесь для удаления выбранного смайла" #. i18n: file: settings/emoticonspage.ui:161 #. i18n: ectx: property (text), widget (QPushButton, removeEmoticonButton_) -#: rc.cpp:816 +#: rc.cpp:821 msgid "Remo&ve" msgstr "Удал&ить" #. i18n: file: settings/emoticonspage.ui:173 #. i18n: ectx: property (text), widget (QLabel, textLabel1_2) -#: rc.cpp:822 +#: rc.cpp:827 msgid "Available custom emoticons:" msgstr "Доступные пользовательские смайлы:" #. i18n: file: settings/miscellaneouspage.ui:27 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: rc.cpp:825 +#: rc.cpp:830 msgid "Web Browser" msgstr "Веб-браузер" #. i18n: file: settings/miscellaneouspage.ui:33 #. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEBrowserRadio_) -#: rc.cpp:828 +#: rc.cpp:833 msgid "Choose this option to use the browser used by the rest of KDE." msgstr "Выберите эту опцию для использования браузера, выбранного в KDE." #. i18n: file: settings/miscellaneouspage.ui:36 #. i18n: ectx: property (text), widget (QRadioButton, useKDEBrowserRadio_) -#: rc.cpp:831 +#: rc.cpp:836 msgid "&Use the KDE default browser" msgstr "&Использовать браузер KDE по умолчанию:" @@ -5604,14 +6355,13 @@ msgstr "&Использовать браузер KDE по умолчанию:" #. i18n: ectx: property (toolTip), widget (QRadioButton, useListedBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:177 #. i18n: ectx: property (toolTip), widget (QRadioButton, useListedMailClientRadio_) -#: rc.cpp:834 -#: rc.cpp:869 +#: rc.cpp:839 rc.cpp:874 msgid "Select this option to choose from a list of installed browsers." msgstr "Выберите эту опцию, чтобы выбрать из списка установленных браузеров." #. i18n: file: settings/miscellaneouspage.ui:46 #. i18n: ectx: property (text), widget (QRadioButton, useListedBrowserRadio_) -#: rc.cpp:837 +#: rc.cpp:842 msgid "&Use an installed browser:" msgstr "Ис&пользовать установленный браузер:" @@ -5619,8 +6369,7 @@ msgstr "Ис&пользовать установленный браузер:" #. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:214 #. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomMailClientRadio_) -#: rc.cpp:840 -#: rc.cpp:875 +#: rc.cpp:845 rc.cpp:880 msgid "Choose this option to enter the path to your favorite browser." msgstr "Выберите эту опцию для ввода пути к любимому браузеру." @@ -5628,8 +6377,7 @@ msgstr "Выберите эту опцию для ввода пути к люб #. i18n: ectx: property (text), widget (QRadioButton, useCustomBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:217 #. i18n: ectx: property (text), widget (QRadioButton, useCustomMailClientRadio_) -#: rc.cpp:843 -#: rc.cpp:878 +#: rc.cpp:848 rc.cpp:883 msgid "&Specify a custom command:" msgstr "&Установить пользовательскую команду:" @@ -5637,91 +6385,107 @@ msgstr "&Установить пользовательскую команду:" #. i18n: ectx: property (whatsThis), widget (QLineEdit, customBrowserEdit_) #. i18n: file: settings/miscellaneouspage.ui:247 #. i18n: ectx: property (whatsThis), widget (QLineEdit, customMailClientEdit_) -#: rc.cpp:847 -#: rc.cpp:882 +#: rc.cpp:852 rc.cpp:887 #, no-c-format -msgid "Specify the path of a program to use to open links; a '%u' here will be replaced with the links' URL." -msgstr "Задайте путь к программе, которую необходимо использовать для открытия ссылок; '%u' будет заменено ссылками URL." +msgid "" +"Specify the path of a program to use to open links; a '%u' here will be " +"replaced with the links' URL." +msgstr "" +"Задайте путь к программе, которую необходимо использовать для открытия " +"ссылок; '%u' будет заменено ссылками URL." #. i18n: file: settings/miscellaneouspage.ui:126 #. i18n: ectx: property (text), widget (QLabel, customBrowserInfo_) -#: rc.cpp:851 +#: rc.cpp:856 #, no-c-format msgid "Use '%u' to insert the URL in the command line." msgstr "Используйте '%u' для вставки ссылки в командную строку." #. i18n: file: settings/miscellaneouspage.ui:151 #. i18n: ectx: attribute (title), widget (QWidget, tab_2) -#: rc.cpp:854 +#: rc.cpp:859 msgid "Email Client" msgstr "Клиент электронной почты" #. i18n: file: settings/miscellaneouspage.ui:157 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useLiveMailCheckbox_) -#: rc.cpp:857 -msgid "Check this box to use the Live Mail webmail site when you connect with accounts compatible with Live Mail." -msgstr "Поставьте флажок для использования сайта Live Mail webmail, когда производится соединение с помощью учётной записи Live Mail." +#: rc.cpp:862 +msgid "" +"Check this box to use the Live Mail webmail site when you connect with " +"accounts compatible with Live Mail." +msgstr "" +"Поставьте флажок для использования сайта Live Mail webmail, когда " +"производится соединение с помощью учётной записи Live Mail." #. i18n: file: settings/miscellaneouspage.ui:160 #. i18n: ectx: property (text), widget (QCheckBox, useLiveMailCheckbox_) -#: rc.cpp:860 +#: rc.cpp:865 msgid "Use &Live Mail if the account supports it" msgstr "Использовать &Live Mail если учётная запись поддерживает его." #. i18n: file: settings/miscellaneouspage.ui:167 #. i18n: ectx: property (toolTip), widget (QRadioButton, useKDEMailClientRadio_) -#: rc.cpp:863 +#: rc.cpp:868 msgid "Choose this option to use the email client used by the rest of KDE." -msgstr "Выберите эту опцию для использования клиента электронной почты, выбранного в KDE." +msgstr "" +"Выберите эту опцию для использования клиента электронной почты, выбранного в " +"KDE." #. i18n: file: settings/miscellaneouspage.ui:170 #. i18n: ectx: property (text), widget (QRadioButton, useKDEMailClientRadio_) -#: rc.cpp:866 +#: rc.cpp:871 msgid "Use the &KDE default email client" msgstr "Использовать клиент электронной почты &KDE по умолчанию" #. i18n: file: settings/miscellaneouspage.ui:180 #. i18n: ectx: property (text), widget (QRadioButton, useListedMailClientRadio_) -#: rc.cpp:872 +#: rc.cpp:877 msgid "Use an &installed email client:" msgstr "Использовать &установленный клиент электронной почты:" #. i18n: file: settings/miscellaneouspage.ui:260 #. i18n: ectx: property (text), widget (QLabel, customMailClientInfo_) -#: rc.cpp:886 +#: rc.cpp:891 #, no-c-format msgid "Use '%u' to insert the email address in the command line." msgstr "Используйте '%u' для вставки электронного адреса в командную строку." #. i18n: file: settings/miscellaneouspage.ui:294 #. i18n: ectx: property (text), widget (QCheckBox, useReceivedFilesDir_) -#: rc.cpp:892 +#: rc.cpp:897 msgid "&Save all received files in one directory:" msgstr "&Сохранить все принятые файлы в одной директории:" #. i18n: file: settings/miscellaneouspage.ui:343 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:898 +#: rc.cpp:903 msgid "&Use ports between" msgstr "&Использовать порты между" #. i18n: file: settings/miscellaneouspage.ui:369 #. i18n: ectx: property (text), widget (QLabel, label_3) -#: rc.cpp:901 +#: rc.cpp:906 msgid "and" msgstr "и" #. i18n: file: settings/miscellaneouspage.ui:398 #. i18n: ectx: property (text), widget (QLabel, label_4) -#: rc.cpp:904 +#: rc.cpp:909 msgid "for file transfers" msgstr "для передачи файлов" +#. i18n: file: utils/inlineeditlabel.ui:14 +#. i18n: ectx: property (windowTitle), widget (QWidget, InlineEditLabel) +#: rc.cpp:912 +msgid "InlineEditLabel" +msgstr "" + #. i18n: file: utils/likeback/likebackbar.ui:32 #. i18n: ectx: property (toolTip), widget (QToolButton, m_likeButton) -#: rc.cpp:907 +#: rc.cpp:915 msgid "Click here to tell the developers about something you liked" -msgstr "Нажмите здесь, чтобы сообщить разработчикам о чем-то, что вам понравилось" +msgstr "" +"Нажмите здесь, чтобы сообщить разработчикам о чем-то, что вам понравилось" #. i18n: file: utils/likeback/likebackbar.ui:36 #. i18n: ectx: property (whatsThis), widget (QToolButton, m_likeButton) @@ -5731,85 +6495,112 @@ msgstr "Нажмите здесь, чтобы сообщить разработ #. i18n: ectx: property (whatsThis), widget (QToolButton, m_bugButton) #. i18n: file: utils/likeback/likebackbar.ui:87 #. i18n: ectx: property (whatsThis), widget (QToolButton, m_featureButton) -#: rc.cpp:910 -#: rc.cpp:917 -#: rc.cpp:924 -#: rc.cpp:931 +#: rc.cpp:918 rc.cpp:925 rc.cpp:932 rc.cpp:939 msgid "" -"Click on one of these icons to send your feedback to the developers of this application. You can disable the icons with the \"Show Feedback Icons\" checkbox in the Help menu.\n" +"Click on one of these icons to send your feedback to the developers of " +"this application. You can disable the icons with the \"Show Feedback Icons\" " +"checkbox in the Help menu.\n" " " msgstr "" -"Нажмите на одной из этих иконок для отправки вашего мнения об этом приложении разработчикам. Вы можете отключить отображение иконок с помощью флажка \"Показать иконки обратной связи\" в меню справки.\n" +"Нажмите на одной из этих иконок для отправки вашего мнения об этом " +"приложении разработчикам. Вы можете отключить отображение иконок с помощью " +"флажка \"Показать иконки обратной связи\" в меню справки.\n" " " #. i18n: file: utils/likeback/likebackbar.ui:49 #. i18n: ectx: property (toolTip), widget (QToolButton, m_dislikeButton) -#: rc.cpp:914 +#: rc.cpp:922 msgid "Click here to tell the developers about something you did not like" -msgstr "Нажмите здесь, чтобы сообщить разработчикам о чём-то,что вам не понравилось" +msgstr "" +"Нажмите здесь, чтобы сообщить разработчикам о чём-то,что вам не понравилось" #. i18n: file: utils/likeback/likebackbar.ui:66 #. i18n: ectx: property (toolTip), widget (QToolButton, m_bugButton) -#: rc.cpp:921 +#: rc.cpp:929 msgid "Click here to tell the developers about a problem in the application" msgstr "Нажмите здесь, чтобы сообщить разработчикам о проблеме в приложении" #. i18n: file: utils/likeback/likebackbar.ui:83 #. i18n: ectx: property (toolTip), widget (QToolButton, m_featureButton) -#: rc.cpp:928 -msgid "Click here to tell the developers about new features you would like to have in this application" -msgstr "Нажмите здесь, чтобы сообщить разработчикам о новых возможностях, которые вы бы хотели иметь в этом приложении" +#: rc.cpp:936 +msgid "" +"Click here to tell the developers about new features you would like to have " +"in this application" +msgstr "" +"Нажмите здесь, чтобы сообщить разработчикам о новых возможностях, которые вы " +"бы хотели иметь в этом приложении" #. i18n: file: utils/likeback/likebackdialog.ui:48 #. i18n: ectx: property (text), widget (QLabel, label_2) -#: rc.cpp:935 +#: rc.cpp:943 msgid "Your comment:" msgstr "Ваш комментарий:" #. i18n: file: utils/likeback/likebackdialog.ui:74 #. i18n: ectx: property (title), widget (QGroupBox, groupBox) -#: rc.cpp:938 +#: rc.cpp:946 msgid "Your comment is about:" msgstr "Ваш комментарий о:" #. i18n: file: utils/likeback/likebackdialog.ui:86 #. i18n: ectx: property (text), widget (QRadioButton, likeRadio_) -#: rc.cpp:941 +#: rc.cpp:949 msgid "Something you like" msgstr "Том, что вам нравится" #. i18n: file: utils/likeback/likebackdialog.ui:99 #. i18n: ectx: property (text), widget (QRadioButton, dislikeRadio_) -#: rc.cpp:944 +#: rc.cpp:952 msgid "Something you dislike" msgstr "Том, что вам не нравится" #. i18n: file: utils/likeback/likebackdialog.ui:112 #. i18n: ectx: property (text), widget (QRadioButton, bugRadio_) -#: rc.cpp:947 +#: rc.cpp:955 msgid "An improper behavior of the application" msgstr "Ненадлежащем поведении приложения" #. i18n: file: utils/likeback/likebackdialog.ui:125 #. i18n: ectx: property (text), widget (QRadioButton, featureRadio_) -#: rc.cpp:950 +#: rc.cpp:958 msgid "A new feature you desire" msgstr "Новой возможности, которую вы хотите" #. i18n: file: utils/likeback/likebackdialog.ui:141 #. i18n: ectx: property (text), widget (QCheckBox, specifyEmailCheckBox_) -#: rc.cpp:953 +#: rc.cpp:961 msgid "Specify an email address to be contacted back:" msgstr "Введите электронный адрес для обратной связи:" #. i18n: file: utils/likeback/likebackdialog.ui:188 #. i18n: ectx: property (text), widget (QLabel, label) -#: rc.cpp:956 +#: rc.cpp:964 msgid "" -"Specifying an email address will allow the developers to ask you for more information on your report, or to tell you when your feature will be implemented.
      \n" -"Your email address will not be used for anything else but this report." +"Specifying an email address will allow the developers to ask you for " +"more information on your report, or to tell you when your feature will be " +"implemented.
      \n" +"Your email address will not be used for anything else but this report." msgstr "" -"Наличие электронного адреса позволит разработчикам расспросить об информации, которую вы оставили или сказать, когда будет будет реализована новая возможность.
      \n" -"Ваш электронный адрес не будет использоваться для чего-либо, кроме ответа." +"Наличие электронного адреса позволит разработчикам расспросить об " +"информации, которую вы оставили или сказать, когда будет будет реализована " +"новая возможность.
      \n" +"Ваш электронный адрес не будет использоваться для чего-либо, кроме ответа." +"" +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Вы не присутствуете в его или её списке контактов." +#~ msgctxt "Default personal message shown in the contact list" +#~ msgid "<Enter your personal message here>" +#~ msgstr "<Введите здесь персональное сообщение>" + +#~ msgid "" +#~ "Triple DES encryption is not supported. This means you probably do not " +#~ "have installed the qca2 or qca2-plugin-ossl packages. Please install them " +#~ "and retry." +#~ msgstr "" +#~ "Тройное DES шифрование не поддерживается. Это может означать, что пакеты " +#~ "qca2 или qca2-plugin-ossl не установлены. Установите их и повторите " +#~ "попытку снова." diff --git a/po/sk.po b/po/sk.po index a6a8360..ebcf262 100644 --- a/po/sk.po +++ b/po/sk.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: kmess\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-03-04 13:13+0100\n" "Last-Translator: Rastislav Krupanský \n" "Language-Team: Slovak \n" +"Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,8 +20,7 @@ msgstr "" "X-Poedit-Country: SLOVAKIA\n" "X-Generator: KBabel 1.11.4\n" -#: account.cpp:45 -#: account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Som preč od počítača" @@ -28,16 +28,26 @@ msgstr "Som preč od počítača" msgid "Your name" msgstr "Vaše meno" -#: account.cpp:57 -#: settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "" #: accountsmanager.cpp:559 #, kde-format -msgid "Some insecurely stored account passwords have been found.
      Do you want to import the passwords to the KDE Wallet named '%1', keep the insecurely stored passwords, or delete them permanently?

      Note: it is not recommended to keep insecurely stored passwords if the KDE Wallet is available, because your passwords will be easily readable in the KMess configuration files." -msgstr "Boli nájdené nie bezpečne uložené heslá konta.
      Chcete importovať heslá do KDE Wallet nazvaného '%1', ponechať heslá, alebo ich zmazať?

      Poznámka: nie je odporúčané ponechať heslá, ak je dostupný KDE Wallet, pretože Vaše heslá budú ľahko čitateľné v KMess konfiguračnom súbore." +msgid "" +"Some insecurely stored account passwords have been found.
      Do you " +"want to import the passwords to the KDE Wallet named '%1', keep the " +"insecurely stored passwords, or delete them permanently?

      Note: " +"it is not recommended to keep insecurely stored passwords if the KDE Wallet " +"is available, because your passwords will be easily readable in the KMess " +"configuration files." +msgstr "" +"Boli nájdené nie bezpečne uložené heslá konta.
      Chcete importovať " +"heslá do KDE Wallet nazvaného '%1', ponechať heslá, alebo ich zmazať?

      Poznámka: nie je odporúčané ponechať heslá, ak je dostupný KDE " +"Wallet, pretože Vaše heslá budú ľahko čitateľné v KMess konfiguračnom súbore." +"" #: accountsmanager.cpp:567 msgctxt "Dialog box caption" @@ -61,8 +71,14 @@ msgstr "Ponechať" #: chat/chat.cpp:112 msgctxt "Error dialog box text" -msgid "You cannot send invitations when there are multiple contacts in a chat. Please start a separate chat with the contact you wanted to send the invitation to." -msgstr "Nemôžete spustiť toto privítanie, pretože je v tejto konverzácii viacej kontaktov. Spustite oddelenú konverzáciu s kontaktom, ktorému chcete odoslať pozvanie." +msgid "" +"You cannot send invitations when there are multiple contacts in a chat. " +"Please start a separate chat with the contact you wanted to send the " +"invitation to." +msgstr "" +"Nemôžete spustiť toto privítanie, pretože je v tejto konverzácii viacej " +"kontaktov. Spustite oddelenú konverzáciu s kontaktom, ktorému chcete odoslať " +"pozvanie." #: chat/chat.cpp:136 #, kde-format @@ -101,8 +117,12 @@ msgstr "%1 (Táto správa bola odoslaná automaticky)" #: chat/chat.cpp:827 #, kde-format -msgid "KMess could not save the log for this chat:
      The chat logs directory, "%1", does not exist." -msgstr "KMess nemohol uložiť záznam pre túto konverzáciu:
      Priečinok záznamov, "%1", neexistuje." +msgid "" +"KMess could not save the log for this chat:
      The chat logs " +"directory, "%1", does not exist." +msgstr "" +"KMess nemohol uložiť záznam pre túto konverzáciu:
      Priečinok " +"záznamov, "%1", neexistuje." #: chat/chat.cpp:969 msgctxt "Message shown in the chat window (when the wink name is unknown)" @@ -116,7 +136,9 @@ msgid "You have sent the "%1" wink!" msgstr "Odoslali ste "%1" žmurknutie!" #: chat/chat.cpp:1007 -msgid "The chat has been disabled because you are no longer connected to the Live Messenger server." +msgid "" +"The chat has been disabled because you are no longer connected to the Live " +"Messenger server." msgstr "Konverzácia bola zrušená, pretože už nie ste pripojení k MSN serveru." #: chat/chat.cpp:1164 @@ -126,20 +148,29 @@ msgstr "Bol problém s pripojením." #: chat/chat.cpp:1174 msgctxt "Warning message shown in chat" -msgid "There were too many different custom emoticons in your last message. Only the first 7 will be sent." -msgstr "Bolo príliš veľa rozličných emotikon vo Vašej poslednej správe. Iba prvých 7 bude odoslaných." +msgid "" +"There were too many different custom emoticons in your last message. Only " +"the first 7 will be sent." +msgstr "" +"Bolo príliš veľa rozličných emotikon vo Vašej poslednej správe. Iba prvých 7 " +"bude odoslaných." #: chat/chat.cpp:1187 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you a voice clip, but KMess does not support voice clips yet." -msgstr "%1 Vám odoslal/a hlasový klip, ale KMess zatiaľ nepodporuje hlasové klipy." +msgid "" +"%1 has sent you a voice clip, but KMess does not support voice clips yet." +msgstr "" +"%1 Vám odoslal/a hlasový klip, ale KMess zatiaľ nepodporuje hlasové klipy." #: chat/chat.cpp:1201 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you an action message, but KMess does not support action messages yet." -msgstr "%1 Vám odoslal/a hlásenie akcie, ale KMess zatiaľ nepodporuje hlásenia akcií." +msgid "" +"%1 has sent you an action message, but KMess does not support action " +"messages yet." +msgstr "" +"%1 Vám odoslal/a hlásenie akcie, ale KMess zatiaľ nepodporuje hlásenia akcií." #: chat/chat.cpp:1212 msgctxt "Warning message shown in chat" @@ -149,20 +180,34 @@ msgstr "Jeden, alebo viac kontaktov nepodporujú správu písanú rukou." #: chat/chat.cpp:1226 #, kde-format msgctxt "Warning message shown in chat, %1 is the contact's friendly name" -msgid "%1 has sent you a Live Messenger feature that KMess does not support yet." -msgstr "%1 Vám odoslal/a funkciu Live Messengera, ktorú KMess zatiaľ nepodporuje." +msgid "" +"%1 has sent you a Live Messenger feature that KMess does not support yet." +msgstr "" +"%1 Vám odoslal/a funkciu Live Messengera, ktorú KMess zatiaľ nepodporuje." #: chat/chat.cpp:1252 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but displaying winks has been disabled. You can re-enable it in the account settings." -msgstr "Prijali ste žmurknutie od %1, ale zobrazenie žmurknutí je zakázané. Môžete ich povoliť v nastaveniach konta." +msgid "" +"You received a wink from %1, but displaying winks has been disabled. You can " +"re-enable it in the account settings." +msgstr "" +"Prijali ste žmurknutie od %1, ale zobrazenie žmurknutí je zakázané. Môžete " +"ich povoliť v nastaveniach konta." #: chat/chat.cpp:1262 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but displaying winks has been disabled. You can re-enable it in the account settings." -msgstr "Prijali ste "%2" žmurknutie od %1, ale zobrazenie žmurknutí je zakázané. Môžete ich povoliť v nastaveniach konta." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but displaying winks has been " +"disabled. You can re-enable it in the account settings." +msgstr "" +"Prijali ste "%2" žmurknutie od %1, ale zobrazenie žmurknutí je " +"zakázané. Môžete ich povoliť v nastaveniach " +"konta." #: chat/chat.cpp:1292 #, kde-format @@ -172,50 +217,86 @@ msgstr "%1 Vám odoslal/a žmurknutie!" #: chat/chat.cpp:1299 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" msgid "%1 has sent you a wink: "%2"!" msgstr "%1 Vám odoslal/a žmurknutie: "%2"!" #: chat/chat.cpp:1321 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. Make sure you have the "cabextract" program installed." -msgstr "Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Uistite sa, že máte nainštalovaný program "cabextract"." +msgid "" +"You received a wink from %1, but it could not be displayed. Make sure you " +"have the "cabextract" program installed." +msgstr "" +"Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Uistite sa, že máte " +"nainštalovaný program "cabextract"." #: chat/chat.cpp:1330 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. Make sure you have the "cabextract" program installed." -msgstr "Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. Uistite sa, že máte nainštalovaný program "cabextract"." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Make sure you have the "cabextract" program installed." +msgstr "" +"Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. " +"Uistite sa, že máte nainštalovaný program "cabextract"." #: chat/chat.cpp:1342 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. Extracting the wink package with "cabextract" has failed." -msgstr "Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Rozbalenie žmurknutia s "cabextract" zlyhalo." +msgid "" +"You received a wink from %1, but it could not be displayed. Extracting the " +"wink package with "cabextract" has failed." +msgstr "" +"Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Rozbalenie " +"žmurknutia s "cabextract" zlyhalo." #: chat/chat.cpp:1351 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. Extracting the wink package with "cabextract" has failed." -msgstr "Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. Rozbalenie žmurknutia s "cabextract" zlyhalo." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"Extracting the wink package with "cabextract" has failed." +msgstr "" +"Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. " +"Rozbalenie žmurknutia s "cabextract" zlyhalo." #: chat/chat.cpp:1363 #, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" -msgid "You received a wink from %1, but it could not be displayed. The data could not be read." -msgstr "Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Dáta sa nedali prečítať." +msgid "" +"You received a wink from %1, but it could not be displayed. The data could " +"not be read." +msgstr "" +"Prijali ste žmurknutie od %1, ale nemôže byť zobrazené. Dáta sa nedali " +"prečítať." #: chat/chat.cpp:1372 #, kde-format -msgctxt "Message shown in the chat window, %1 is the contact's friendly name, %2 is the wink name" -msgid "You received the "%2" wink from %1, but it could not be displayed. The data could not be read." -msgstr "Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. Dáta sa nedali prečítať." +msgctxt "" +"Message shown in the chat window, %1 is the contact's friendly name, %2 is " +"the wink name" +msgid "" +"You received the "%2" wink from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" +"Prijali ste "%2" žmurknutie od %1, ale nemôže byť zobrazené. Dáta " +"sa nedali prečítať." #: chat/chat.cpp:1414 #, kde-format -msgid "%1 has gone offline. Any messages you send will be delivered the next time he or she logs in." -msgstr "%1 sa odpojil/a. Správy, ktoré ste odoslali, budú doručené pri jeho/jej nasledujúcom prihlásení." +msgid "" +"%1 has gone offline. Any messages you send will be delivered the next time " +"he or she logs in." +msgstr "" +"%1 sa odpojil/a. Správy, ktoré ste odoslali, budú doručené pri jeho/jej " +"nasledujúcom prihlásení." #: chat/chat.cpp:1419 #, kde-format @@ -233,7 +314,9 @@ msgid "%1 has sent you a nudge!" msgstr "%1 Vám odoslal/a štuchanec!" #: chat/chat.cpp:1493 -msgctxt "Phrase to be inserted in place of a contact name, when a message can't be delivered to any of the recipients" +msgctxt "" +"Phrase to be inserted in place of a contact name, when a message can't be " +"delivered to any of the recipients" msgid "all contacts" msgstr "všetky kontakty" @@ -257,14 +340,19 @@ msgstr "Zlyhalo odoslanie správy písanej rukou %1." #: chat/chat.cpp:1536 #, kde-format -msgctxt "Error message shown in chat, %1 is the sent message, %2 is the contact's friendly name" +msgctxt "" +"Error message shown in chat, %1 is the sent message, %2 is the contact's " +"friendly name" msgid "Failed to send the message to %2:
      %1" msgstr "Zlyhalo odoslanie správy %2:
      %1" #: chat/chat.cpp:1619 #, kde-format -msgid "The file "%1" could not be found on your computer, and the download failed." -msgstr "Súbor "%1" sa nepodarilo nájsť na počítači, a zlyhalo stiahnutie." +msgid "" +"The file "%1" could not be found on your computer, and the " +"download failed." +msgstr "" +"Súbor "%1" sa nepodarilo nájsť na počítači, a zlyhalo stiahnutie." #: chat/chat.cpp:1656 #, kde-format @@ -278,20 +366,32 @@ msgstr "Poslali ste štuchanec!" #: chat/chat.cpp:1728 #, kde-format -msgid "%1 is currently offline. Any messages you send will be delivered the next time he or she logs in." -msgstr "%1 je momentálne offline. Správy, ktoré ste odoslali, budú doručené pri jeho/jej nasledujúcom prihlásení." +msgid "" +"%1 is currently offline. Any messages you send will be delivered the next " +"time he or she logs in." +msgstr "" +"%1 je momentálne offline. Správy, ktoré ste odoslali, budú doručené pri jeho/" +"jej nasledujúcom prihlásení." #: chat/chatmaster.cpp:1316 #, kde-format msgctxt "Error message shown in chat, %1 is the name of the contact" -msgid "You received an handwritten message from %1, but it could not be displayed. This version of KMess was built without ISF support." -msgstr "Prijali ste od %1 správu písanú rukou, ale nemôže byť zobrazená. Táto verzia KMess bola vytvorená bez podpory ISF." +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"This version of KMess was built without ISF support." +msgstr "" +"Prijali ste od %1 správu písanú rukou, ale nemôže byť zobrazená. Táto verzia " +"KMess bola vytvorená bez podpory ISF." #: chat/chatmaster.cpp:1338 #, kde-format msgctxt "Error message shown in chat, %1 is the name of the contact" -msgid "You received an handwritten message from %1, but it could not be displayed. The data could not be read." -msgstr "Prijali ste od %1 správu písanú rukou, ale nemôže byť zobrazená. Dáta sa nedali prečítať." +msgid "" +"You received an handwritten message from %1, but it could not be displayed. " +"The data could not be read." +msgstr "" +"Prijali ste od %1 správu písanú rukou, ale nemôže byť zobrazená. Dáta sa " +"nedali prečítať." #: chat/chatmaster.cpp:1467 #, kde-format @@ -305,13 +405,16 @@ msgstr "%1 hovorí:" #: chat/chatmessageview.cpp:345 #, kde-format -msgctxt "Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" +msgctxt "" +"Header of a chat file saved in HTML: %1 is the contact, %2 the date and time" msgid "Chat with %1
      Started on: %2" msgstr "Konverzácia s %1
      začatá: %2" #: chat/chatmessageview.cpp:392 #, kde-format -msgctxt "Header of a single chat saved as plain text chat log: %1 is the chat date and time" +msgctxt "" +"Header of a single chat saved as plain text chat log: %1 is the chat date " +"and time" msgid "Chat started on: %1" msgstr "Konverzácia začatá: %1" @@ -321,8 +424,7 @@ msgctxt "Header of a chat file saved in plain text: %1 is the contact" msgid "Saved KMess chats with %1" msgstr "Uložiť KMess konverzáciu s %1" -#: chat/chatmessageview.cpp:1095 -#: utils/richtextparser.cpp:658 +#: chat/chatmessageview.cpp:1095 utils/richtextparser.cpp:658 #, kde-format msgid "Add this emoticon: %1" msgstr "Pridať túto emotikonu: %1" @@ -348,7 +450,8 @@ msgstr "Opäť pripojiť" #, kde-format msgid "" "Could not save chat log in directory '%1'.\n" -"Make sure you have permission to write in the folder where logs are being saved." +"Make sure you have permission to write in the folder where logs are being " +"saved." msgstr "" "Nedal sa uložiť záznam konverzácie '%1'.\n" "Uistite sa, že máte právo zapisovať do priečinka, kde sú ukladané záznamy." @@ -373,52 +476,49 @@ msgstr "" "Súbor '%1' už existuje.\n" "Chcete ho prepísať?" -#: chat/chatview.cpp:568 -#: network/applications/filetransfer.cpp:261 +#: chat/chatview.cpp:568 network/applications/filetransfer.cpp:261 #: network/applications/filetransferp2p.cpp:347 msgid "Overwrite File" msgstr "Prepísať súbor" -#: chat/chatview.cpp:569 -#: network/applications/filetransfer.cpp:261 +#: chat/chatview.cpp:569 network/applications/filetransfer.cpp:261 #: network/applications/filetransferp2p.cpp:347 msgid "Over&write" msgstr "Pre&písať" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Pridať túto &emotikonu..." -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Skryť túto &emotikonu" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "Odoslať &e-mail" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Pridať &kontakt" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "Kopírovať e-&mailové adresy" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Navštíviť &odkaz" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "Kopírovať &adresu" -#: chat/chatview.cpp:965 -#: chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "V&yčistiť konverzáciu" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Uložiť konverzáciu do &súboru..." @@ -426,8 +526,7 @@ msgstr "Uložiť konverzáciu do &súboru..." msgid "Contacts" msgstr "Kontakty" -#: chat/chatwindow.cpp:130 -#: settings/accountsettingsdialog.cpp:90 +#: chat/chatwindow.cpp:130 settings/accountsettingsdialog.cpp:90 #: settings/accountsettingsdialog.cpp:91 msgid "Emoticons" msgstr "Emotikony" @@ -437,8 +536,14 @@ msgid "My Emoticons" msgstr "Moje emotikony" #: chat/chatwindow.cpp:376 -msgid "There are multiple tabs open in this chat window. Do you want to close the current tab only, or all tabs?

      Note: You can close all tabs at once by pressing Alt+F4." -msgstr "V konverzačnom okne je otvorených viac kariet. Chcete zatvoriť iba aktuálnu kartu, alebo všetky karty?

      Poznámka: Všetky karty môžete naraz zatvoriť použitím Alt+F4." +msgid "" +"There are multiple tabs open in this chat window. Do you want to close " +"the current tab only, or all tabs?

      Note: You can close all " +"tabs at once by pressing Alt+F4." +msgstr "" +"V konverzačnom okne je otvorených viac kariet. Chcete zatvoriť iba " +"aktuálnu kartu, alebo všetky karty?

      Poznámka: Všetky karty " +"môžete naraz zatvoriť použitím Alt+F4." #: chat/chatwindow.cpp:380 msgctxt "Dialog box caption: closing a chatwindow with a single tab" @@ -505,13 +610,11 @@ msgstr "Štuchanec" msgid "Send a &File" msgstr "Odoslať &súbor" -#: chat/chatwindow.cpp:493 -#: chat/chatwindow.cpp:494 +#: chat/chatwindow.cpp:493 chat/chatwindow.cpp:494 msgid "P&revious Tab" msgstr "P&edchádzajúca karta" -#: chat/chatwindow.cpp:495 -#: chat/chatwindow.cpp:496 +#: chat/chatwindow.cpp:495 chat/chatwindow.cpp:496 msgid "Ne&xt Tab" msgstr "N&asledujúca karta" @@ -519,8 +622,7 @@ msgstr "N&asledujúca karta" msgid "Enable or disable the contacts panel" msgstr "Povoliť, alebo zakázať panel kontaktov" -#: chat/chatwindow.cpp:512 -#: chat/chatwindow.cpp:513 +#: chat/chatwindow.cpp:512 chat/chatwindow.cpp:513 msgctxt "Toolbar button" msgid "Contacts" msgstr "Kontakty" @@ -529,8 +631,7 @@ msgstr "Kontakty" msgid "Enable or disable the standard emoticons panel" msgstr "Povoliť, alebo zakázať štandardný panel kontaktov" -#: chat/chatwindow.cpp:518 -#: chat/chatwindow.cpp:519 +#: chat/chatwindow.cpp:518 chat/chatwindow.cpp:519 msgctxt "Toolbar button" msgid "Emoticons" msgstr "Emotikony" @@ -539,8 +640,7 @@ msgstr "Emotikony" msgid "Enable or disable the custom emoticons panel" msgstr "Povoliť, alebo zakázať vlastný panel kontaktov" -#: chat/chatwindow.cpp:524 -#: chat/chatwindow.cpp:525 +#: chat/chatwindow.cpp:524 chat/chatwindow.cpp:525 msgctxt "Toolbar button" msgid "My Emoticons" msgstr "Moje emotikony" @@ -557,139 +657,168 @@ msgstr "&Farba písma" msgid "C&lear Chat Window" msgstr "V&yčistiť okno konverzácie" -#: chat/chatwindow.cpp:1106 -msgid "You used an incorrect syntax for the /status command. The correct syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible.
      You can also use shortcuts like /online or /phone." -msgstr "Použili ste nesprávnu syntax pre príkaz /stav. Správna syntax je: /stav online|preč|nečinný|hsv|zaneprázdnený|obed|telefón|neviditeľný.
      Alebo môžete použiť skratky ako /online, alebo /telefón." +#: chat/chatwindow.cpp:1149 +msgid "" +"You used an incorrect syntax for the /status command. The correct " +"syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." +"
      You can also use shortcuts like /online or /phone." +msgstr "" +"Použili ste nesprávnu syntax pre príkaz /stav. Správna syntax je: /" +"stav online|preč|nečinný|hsv|zaneprázdnený|obed|telefón|neviditeľný.
      Alebo môžete použiť skratky ako /online, alebo /telefón." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Nesprávna /stav syntax " -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "Nemôžete použiť príkaz /block v skupinovej konverzácii." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "Nedá sa použiť /block príkaz" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "Nemôžete použiť príkaz /unblock v skupinovej konverzácii." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "Nedá sa použiť /unblock príkaz!" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format -msgid "Unknown command %1. If you did not want this message to be a command, prepend your message with another /." -msgstr "Neznámy príkaz %1. Ak ste nechceli, aby táto správa bola príkaz, použite správu s iným /." +msgid "" +"Unknown command %1. If you did not want this message to be a " +"command, prepend your message with another /." +msgstr "" +"Neznámy príkaz %1. Ak ste nechceli, aby táto správa bola " +"príkaz, použite správu s iným /." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Neznámy príkaz" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "Zlyhalo odoslanie správy písanej rukou: kontakty ju nepodporujú." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" -msgid "Failed to send the handwritten message: an error has occurred while creating it." -msgstr "Zlyhalo odoslanie správy písanej rukou: počas písania sa objavila sa chyba." +msgid "" +"Failed to send the handwritten message: an error has occurred while creating " +"it." +msgstr "" +"Zlyhalo odoslanie správy písanej rukou: počas písania sa objavila sa chyba." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Konverzácia" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Konverzácia" -#: chat/chatwindow.cpp:1848 -#: kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" -msgid "Are you sure you want to hide the menu bar? You will be able to show it again by using this keyboard shortcut: %1" -msgstr "Ste si istí, že chcete skryť panel ponuky? Znovu ho môžete zobraziť použitím klávesovej skratky: %1" +msgid "" +"Are you sure you want to hide the menu bar? You will be able to show " +"it again by using this keyboard shortcut: %1" +msgstr "" +"Ste si istí, že chcete skryť panel ponuky? Znovu ho môžete zobraziť " +"použitím klávesovej skratky: %1" -#: chat/chatwindow.cpp:1852 -#: kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Skrývanie ponuky" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Kresliaci štetec" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 -#: rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Mazací štetec" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 píše..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 a %2 píšu..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 a %3 iní píšu..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" -msgid "

      Chat Info

      Contacts:
      • %1
      Chat started on:
      %2
      Connected with account:
      %3
      " -msgstr "

      Info konverzácie

      Kontakty:
      • %1
      Konverzácia začatá:
      %2
      Pripojené s kontom:
      %3
      " +msgid "" +"

      Chat Info

      Contacts:
      • %1
      Chat started on:
      %2
      Connected with " +"account:
      %3
      " +msgstr "" +"

      Info konverzácie

      Kontakty:
      • %1
      Konverzácia začatá:
      %2
      Pripojené " +"s kontom:
      %3
      " #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 -#: rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Režim ručného písania" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" -msgid "Handwriting is disabled: some of the contacts do not support receiving handwritten messages." -msgstr "Písanie rukou je zakázané: niektoré kontakty nepodporujú príjem správ písaných rukou." +msgid "" +"Handwriting is disabled: some of the contacts do not support receiving " +"handwritten messages." +msgstr "" +"Písanie rukou je zakázané: niektoré kontakty nepodporujú príjem správ " +"písaných rukou." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" -msgid "Handwriting is disabled: this contact does not support receiving handwritten messages." -msgstr "Písanie rukou je zakázané: tento kontak nepodporuje príjem správ písaných rukou." +msgid "" +"Handwriting is disabled: this contact does not support receiving handwritten " +"messages." +msgstr "" +"Písanie rukou je zakázané: tento kontak nepodporuje príjem správ písaných " +"rukou." #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 -#: rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Žmurknutia" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" -msgid "Winks are disabled: some of the contacts do not support receiving winks." -msgstr "Žmurknutia sú zakázané: niektoré kontakty nepodporujú príjem žmurknutí." +msgid "" +"Winks are disabled: some of the contacts do not support receiving winks." +msgstr "" +"Žmurknutia sú zakázané: niektoré kontakty nepodporujú príjem žmurknutí." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "Žmurknutia sú zakázané: tento kontakt nepodporuje príjem žmurknutí." @@ -698,71 +827,57 @@ msgstr "Žmurknutia sú zakázané: tento kontakt nepodporuje príjem žmurknut msgid "&Start Private Chat" msgstr "&Spustiť súkromnú konverzáciu" -#: chat/contactframe.cpp:355 -#: kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "&Odoslať e-mail" -#: chat/contactframe.cpp:356 -#: kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Zobraziť profil" -#: chat/contactframe.cpp:358 -#: chat/contactframe.cpp:411 -#: kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Vlastnosti" -#: chat/contactframe.cpp:360 -#: kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "&Pridať kontakt" -#: chat/contactframe.cpp:361 -#: kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "P&ovoliť kontakt" -#: chat/contactframe.cpp:362 -#: kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Zmazať kontakt" -#: chat/contactframe.cpp:364 -#: kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "&Blokovať kontakt" -#: chat/contactframe.cpp:365 -#: kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "&Odblokovať kontakt" -#: chat/contactframe.cpp:367 -#: kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Meno" -#: chat/contactframe.cpp:368 -#: kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Súkromná správa" -#: chat/contactframe.cpp:369 -#: kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "&E-mailová dresa" -#: chat/contactframe.cpp:370 -#: kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "&Názov skladby" #. i18n: file: dialogs/contactpropertiesdialog.ui:24 #. i18n: ectx: attribute (title), widget (QWidget, tab) -#: chat/contactframe.cpp:372 -#: rc.cpp:138 +#: chat/contactframe.cpp:372 rc.cpp:138 msgid "&Information" msgstr "&Informácia" @@ -772,52 +887,44 @@ msgstr "Zobraziť obrázky" #. i18n: file: dialogs/contactpropertiesdialog.ui:387 #. i18n: ectx: attribute (title), widget (QWidget, tab_3) -#: chat/contactframe.cpp:374 -#: rc.cpp:174 +#: chat/contactframe.cpp:374 rc.cpp:174 msgid "&Notes" msgstr "&Poznámky" #. i18n: file: dialogs/contactpropertiesdialog.ui:397 #. i18n: ectx: attribute (title), widget (QWidget, tab_4) -#: chat/contactframe.cpp:375 -#: rc.cpp:177 +#: chat/contactframe.cpp:375 rc.cpp:177 msgid "&Emoticons" msgstr "&Emotikony" -#: chat/contactframe.cpp:404 -#: kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "&Kopírovať" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Blokovaný" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format -msgctxt "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, like 'Online'" +msgctxt "" +"Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " +"like 'Online'" msgid "The contact is %1" msgstr "Kontakt je %1" -#: chat/contactswidget.cpp:298 -#: kmessview.cpp:523 -#: settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "Sťahovanie obrázka zlyhalo" -#: chat/contactswidget.cpp:298 -#: chat/contactswidget.cpp:334 -#: kmessview.cpp:523 -#: kmessview.cpp:560 -#: main.cpp:43 -#: settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 -#: kmessview.cpp:558 -#: settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -827,8 +934,12 @@ msgstr "" #: chat/emoticonswidget.cpp:290 msgctxt "Informative label on the chat's emoticons bar" -msgid "

      You have not added any custom emoticons yet.

      To add new emoticons, click here!

      " -msgstr "

      Zatiaľ ste nepridali žiadne vlastné emotikony.

      Pre pridanie nových emotikon, kliknite sem!

      " +msgid "" +"

      You have not added any custom emoticons yet.

      To add " +"new emoticons, click here!

      " +msgstr "" +"

      Zatiaľ ste nepridali žiadne vlastné emotikony.

      Pre " +"pridanie nových emotikon, kliknite sem!

      " #: chat/emoticonswidget.cpp:439 msgid "Add to Chat" @@ -842,15 +953,18 @@ msgstr "Pridať nové" msgid "Edit" msgstr "Editovať" -#: chat/emoticonswidget.cpp:442 -#: kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Odobrať" #: chat/winkswidget.cpp:94 msgctxt "Informative label on the chat's winks bar" -msgid "

      You do not have any winks yet.

      To add new ones, have your contacts send you some!

      " -msgstr "

      Zatiaľ nemáte nijaké žmurknutia.

      Pre pridanie žmurknutí Vám ich musia odoslať Vaše kontakty!

      " +msgid "" +"

      You do not have any winks yet.

      To add new ones, have " +"your contacts send you some!

      " +msgstr "" +"

      Zatiaľ nemáte nijaké žmurknutia.

      Pre pridanie " +"žmurknutí Vám ich musia odoslať Vaše kontakty!

      " #: contact/contactbase.cpp:290 msgid "Windows Mobile" @@ -872,8 +986,7 @@ msgstr "Messenger Bot" msgid "Windows Media Center" msgstr "Windows Media Center" -#: contact/contactbase.cpp:313 -#: contact/contactbase.cpp:318 +#: contact/contactbase.cpp:313 contact/contactbase.cpp:318 #, kde-format msgid "MSN Messenger %1 compatible" msgstr "MSN Messenger %1 kompatibilný" @@ -896,69 +1009,52 @@ msgstr "Windows Live Messenger %1 kompatibilný" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger kompatibilný" -#: contact/msnstatus.cpp:159 -#: contact/msnstatus.cpp:172 -#: initialview.cpp:85 -#: model/contactlist.cpp:1825 -#: settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Online" -#: contact/msnstatus.cpp:160 -#: initialview.cpp:88 -#: settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Nemám čas" -#: contact/msnstatus.cpp:161 -#: initialview.cpp:86 -#: settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Som preč" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Preč s automatickou odpoveďou" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Nečinný" -#: contact/msnstatus.cpp:164 -#: initialview.cpp:87 -#: settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Hneď sa vrátim" -#: contact/msnstatus.cpp:165 -#: initialview.cpp:90 -#: settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Na telefóne" -#: contact/msnstatus.cpp:166 -#: initialview.cpp:89 -#: settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Obedujem" -#: contact/msnstatus.cpp:167 -#: initialview.cpp:91 -#: settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Neviditeľný" -#: contact/msnstatus.cpp:168 -#: model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Offline" -#: contact/msnstatus.cpp:195 -#: contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Môj stav" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Odpojiť" @@ -967,8 +1063,7 @@ msgstr "Odpojiť" msgid "Add a Contact" msgstr "Pridať kontakt" -#: dialogs/addemoticondialog.cpp:61 -#: dialogs/addemoticondialog.cpp:304 +#: dialogs/addemoticondialog.cpp:61 dialogs/addemoticondialog.cpp:304 msgid "Add New Emoticon" msgstr "Pridať novú emotikonu" @@ -985,8 +1080,16 @@ msgid "Please, enter a text to associate with this emoticon" msgstr "Prosím zadajte text pre asociáciu s touto emotikonou" #: dialogs/addemoticondialog.cpp:203 -msgid "Shortcuts must not:
      • be longer than 7 characters,
      • start with \"/\" (they would interfere with irc-like commands),
      • contain square brackets with text within (like [b] or [color], which can be text formatting options)
      " -msgstr "Skratky nesmú:
      • byť dlhšie ako 7 znakov,
      • začať s \"/\" (krížili by sa s príkazmi ako irc),
      • obsahujú hranaté zátvorky s textom vo vnútri (ako [b] alebo [farba], ktoré môžu byť možnosti formátovania textu)
      " +msgid "" +"Shortcuts must not:
      • be longer than 7 characters,
      • start with " +"\"/\" (they would interfere with irc-like commands),
      • contain square " +"brackets with text within (like [b] or [color], which can be text formatting " +"options)
      " +msgstr "" +"Skratky nesmú:
      • byť dlhšie ako 7 znakov,
      • začať s \"/" +"\" (krížili by sa s príkazmi ako irc),
      • obsahujú hranaté zátvorky s " +"textom vo vnútri (ako [b] alebo [farba], ktoré môžu byť možnosti " +"formátovania textu)
      " #: dialogs/addemoticondialog.cpp:303 #, kde-format @@ -1005,8 +1108,14 @@ msgstr "História konverzácie" #: dialogs/chathistorydialog.cpp:305 #, kde-format msgctxt "Dialog box text" -msgid "There has been an error while opening your logs. This is commonly a permission problem, check if you have read/write access to directory "%1". Otherwise, your logs may be corrupted." -msgstr "Vyskytla sa chyba počas otvárania Vašich záznamov. Toto je zvyčajne problém oprávnenia. Skontrolujte, či máte práva na čítanie/zápis do priečinka "%1". Alebo Vaše záznamy môžu byť poškodené." +msgid "" +"There has been an error while opening your logs. This is commonly a " +"permission problem, check if you have read/write access to directory " +""%1". Otherwise, your logs may be corrupted." +msgstr "" +"Vyskytla sa chyba počas otvárania Vašich záznamov. Toto je zvyčajne problém " +"oprávnenia. Skontrolujte, či máte práva na čítanie/zápis do priečinka " +""%1". Alebo Vaše záznamy môžu byť poškodené." #: dialogs/chathistorydialog.cpp:310 msgctxt "Dialog box title" @@ -1050,21 +1159,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "Vlastnosti kontaktu pre %1" -#: dialogs/contactpropertiesdialog.cpp:399 -#: kmess.cpp:816 -#: kmessview.cpp:1290 -#: network/msnsockethttp.cpp:199 -#: network/msnsockettcp.cpp:386 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 +#: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Pripojené" -#: dialogs/contactpropertiesdialog.cpp:405 -#: kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Zatiaľ nevidený" -#: dialogs/contactpropertiesdialog.cpp:416 -#: kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Zatiaľ žiadne správy" @@ -1092,20 +1196,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "Klient: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Ste si istý, že chcete zobraziť obrázok tohto kontaktu?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Kopírovať obrázok kontaktu" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Vybraný typ súboru Phonon nepodporuje." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Nepodporovaný typ súboru" @@ -1142,10 +1246,8 @@ msgstr "Export zoznamu kontaktov je dokončený" #. i18n: file: dialogs/networkwindow.ui:13 #. i18n: ectx: property (windowTitle), widget (QWidget, NetworkWindow) -#: dialogs/networkwindow.cpp:57 -#: dialogs/networkwindow.cpp:1281 -#: dialogs/networkwindow.cpp:1308 -#: rc.cpp:237 +#: dialogs/networkwindow.cpp:57 dialogs/networkwindow.cpp:1281 +#: dialogs/networkwindow.cpp:1308 rc.cpp:237 msgid "Network Window" msgstr "Sieťové okno" @@ -1170,31 +1272,42 @@ msgstr "" "Nedá sa otvoriť sieťové okno." #: dialogs/networkwindow.cpp:1132 -msgid "Could not save the Network Window log. Make sure you have permission to write in the folder where it is being saved." -msgstr "Nedal sa uložiť záznam sieťového okna. Uistite sa, že máte právo zapisovať do priečinka, kde sú ukladané záznamy." +msgid "" +"Could not save the Network Window log. Make sure you have permission to " +"write in the folder where it is being saved." +msgstr "" +"Nedal sa uložiť záznam sieťového okna. Uistite sa, že máte právo zapisovať " +"do priečinka, kde sú ukladané záznamy." #: dialogs/networkwindow.cpp:1179 msgid "Cannot close the main connection tab." msgstr "Nedá sa zatvoriť hlavná karta pripojenia." #: dialogs/networkwindow.cpp:1275 -msgid "Sending commands to the server is a risky operation.
      If you do not know how to exactly do it, you could be lucky and just get disconnected, or you may incur in more serious consequences.
      You have been warned!
      Do you want to continue sending this message?" -msgstr "Odosielanie príkazov na server je riskantná operácia.
      Ak neviete ako to presne urobiť a budete mať šťastie, mohli by ste byť odpojení, alebo Vám môžu vzniknúť vážnejšie dôsledky.
      Boli ste varovaní!
      Chcete pokračovať v odosielaní tejto správy?" +msgid "" +"Sending commands to the server is a risky operation.
      If you do not know " +"how to exactly do it, you could be lucky and just get disconnected, or " +"you may incur in more serious consequences.
      You have been warned!" +"
      Do you want to continue sending this message?" +msgstr "" +"Odosielanie príkazov na server je riskantná operácia.
      Ak neviete ako to " +"presne urobiť a budete mať šťastie, mohli by ste byť odpojení, alebo Vám " +"môžu vzniknúť vážnejšie dôsledky.
      Boli ste varovaní!
      Chcete " +"pokračovať v odosielaní tejto správy?" #: dialogs/networkwindow.cpp:1305 msgid "" -"The payload you are trying to send does not end with the required newline ('\\r\\n" -"')!
      Do you want KMess to add it for you?" +"The payload you are trying to send does not end with the required newline " +"('\\r\\n')!
      Do you want KMess to add it for you?" msgstr "" -"Dáta, ktoré sa snažíte odoslať, musia končiť znakom prechodu na nový riadok ('\\r\\n" -"')!
      Chcete aby Vám ho KMess pridal?" +"Dáta, ktoré sa snažíte odoslať, musia končiť znakom prechodu na nový riadok " +"('\\r\\n')!
      Chcete aby Vám ho KMess pridal?" #: dialogs/networkwindow.cpp:1381 msgid "Cannot send commands to this kind of connection!" msgstr "Nemôžete odoslať príkazy k tomuto druhu pripojenia!" -#: dialogs/transferentry.cpp:132 -#: network/applications/filetransfer.cpp:127 +#: dialogs/transferentry.cpp:132 network/applications/filetransfer.cpp:127 #: network/applications/filetransfer.cpp:658 #: network/applications/filetransferp2p.cpp:99 #: network/applications/filetransferp2p.cpp:766 @@ -1211,22 +1324,19 @@ msgstr "Zlyhané!" msgid "Completed" msgstr "Dokončené" -#: dialogs/transferentry.cpp:270 -#: network/applications/filetransfer.cpp:635 +#: dialogs/transferentry.cpp:270 network/applications/filetransfer.cpp:635 #: network/applications/filetransferp2p.cpp:741 #, kde-format msgid "%1 MB" msgstr "%1 MB" -#: dialogs/transferentry.cpp:275 -#: network/applications/filetransfer.cpp:640 +#: dialogs/transferentry.cpp:275 network/applications/filetransfer.cpp:640 #: network/applications/filetransferp2p.cpp:746 #, kde-format msgid "%1 kB" msgstr "%1 kB" -#: dialogs/transferentry.cpp:279 -#: network/applications/filetransfer.cpp:644 +#: dialogs/transferentry.cpp:279 network/applications/filetransfer.cpp:644 #: network/applications/filetransferp2p.cpp:750 #, kde-format msgid "%1 bytes" @@ -1248,8 +1358,7 @@ msgstr "nekonečný" #. i18n: file: settings/miscellaneouspage.ui:285 #. i18n: ectx: attribute (title), widget (QWidget, tab_3) -#: dialogs/transferwindow.cpp:54 -#: rc.cpp:894 +#: dialogs/transferwindow.cpp:54 rc.cpp:894 msgid "File Transfers" msgstr "Prenosy súborov" @@ -1257,8 +1366,7 @@ msgstr "Prenosy súborov" msgid "&Use" msgstr "&Použiť" -#: dialogs/userpicturesdialog.cpp:44 -#: settings/accountsettingsdialog.cpp:60 +#: dialogs/userpicturesdialog.cpp:44 settings/accountsettingsdialog.cpp:60 msgid "&Delete" msgstr "&Zmazať" @@ -1277,8 +1385,12 @@ msgstr "Vymazať obrázok" #: emoticontheme.cpp:627 #, kde-format -msgid "Could not save the emoticon theme. Make sure you have permission to write to the theme folder '%1'." -msgstr "Nedala sa uložiť téma emotikon. Uistite sa, že máte právo zapisovať do priečinka s témou '%1'." +msgid "" +"Could not save the emoticon theme. Make sure you have permission to write to " +"the theme folder '%1'." +msgstr "" +"Nedala sa uložiť téma emotikon. Uistite sa, že máte právo zapisovať do " +"priečinka s témou '%1'." #: emoticontheme.cpp:823 msgid "Smile" @@ -1606,12 +1718,15 @@ msgctxt "Status message on login screen" msgid "Cannot reconnect: this account has no saved password" msgstr "Nedá sa obnoviť pripojenie: toto konto nemá uložené heslo" -#: initialview.cpp:309 -#: initialview.cpp:417 +#: initialview.cpp:309 initialview.cpp:417 #, kde-format msgctxt "Status message on login screen" -msgid "Waiting for an Internet connection to reconnect...
      Reconnect now!" -msgstr "Čaká sa na obnovu internetového pripojenia...
      Pripojiť teraz!" +msgid "" +"Waiting for an Internet connection to reconnect...
      Reconnect now!" +msgstr "" +"Čaká sa na obnovu internetového pripojenia...
      Pripojiť " +"teraz!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1621,11 +1736,20 @@ msgstr "Nie je dostupné internetové pripojenie" #: initialview.cpp:443 #, kde-format msgctxt "Status message on login screen" -msgid "Waiting %1 second before reconnection...
      Reconnect now!" -msgid_plural "Waiting %1 seconds before reconnection...
      Reconnect now!" -msgstr[0] "Čakať %1 sekundu pred opätovným pripojením...
      Opäť pripojiť teraz!" -msgstr[1] "Čakať %1 sekundy pred opätovným pripojením...
      Opäť pripojiť teraz!" -msgstr[2] "Čakať %1 sekúnd pred opätovným pripojením...
      Opäť pripojiť teraz!" +msgid "" +"Waiting %1 second before reconnection...
      Reconnect now!" +msgid_plural "" +"Waiting %1 seconds before reconnection...
      Reconnect now!" +msgstr[0] "" +"Čakať %1 sekundu pred opätovným pripojením...
      Opäť " +"pripojiť teraz!" +msgstr[1] "" +"Čakať %1 sekundy pred opätovným pripojením...
      Opäť " +"pripojiť teraz!" +msgstr[2] "" +"Čakať %1 sekúnd pred opätovným pripojením...
      Opäť pripojiť " +"teraz!" #: initialview.cpp:662 msgctxt "Button label" @@ -1669,305 +1793,325 @@ msgstr "Pridať skupinu" msgid "Enter a name for the new group:" msgstr "Zadajte názov pre novú skupinu:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format -msgid "Are you sure you want to remove the contact %1 from your contact list?" -msgstr "Ste si istý, že chcete odstrániť kontakt %1 z Vášho zoznamu kontaktov?" +msgid "" +"Are you sure you want to remove the contact %1 from your contact " +"list?" +msgstr "" +"Ste si istý, že chcete odstrániť kontakt %1 z Vášho zoznamu " +"kontaktov?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Odstrániť kontakt" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Odstrániť a blokovať" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" -msgid "The group %1 is not empty! First remove all contacts from it, then try again!" -msgstr "Skupina %1 nie je prázdna! Odstráňte všetky kontakty, potom to skúste znova!" +msgid "" +"The group %1 is not empty! First remove all contacts from it, then " +"try again!" +msgstr "" +"Skupina %1 nie je prázdna! Odstráňte všetky kontakty, potom to skúste " +"znova!" -#: kmess.cpp:629 -#: kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Odstránenie skupiny" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" -msgid "Are you sure you want to remove the group %1 from your contact list?" -msgstr "Ste si istý, že chcete odstrániť skupinu %1z Vášho zoznamu kontaktov?" +msgid "" +"Are you sure you want to remove the group %1 from your contact " +"list?" +msgstr "" +"Ste si istý, že chcete odstrániť skupinu %1z Vášho zoznamu " +"kontaktov?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "Odstrániť" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Toto je špeciálna skupina, ktorá nemôže byť zmenená." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Premenovať skupinu" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Zadajte nový názov pre túto skupinu:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" -msgid "

      Cannot login automatically with account %1:
      you must first save the account password!

      " -msgstr "

      Nedá sa automaticky prihlásiť s kontom %1:
      musíte najskôr uložiť heslo konta!

      " +msgid "" +"

      Cannot login automatically with account %1:
      you must first " +"save the account password!

      " +msgstr "" +"

      Nedá sa automaticky prihlásiť s kontom %1:
      musíte najskôr " +"uložiť heslo konta!

      " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Zlyhalo automatické prihlásenie" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Mohlo byť spadnuté pripojenie..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Odpojený" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format -msgctxt "Paragraph to be added to the text of a message dialog box, but only when KDE gives a list of folders where to search for an application file" +msgctxt "" +"Paragraph to be added to the text of a message dialog box, but only when KDE " +"gives a list of folders where to search for an application file" msgid "

      KMess has searched for it in the following folders:
      %1

      " msgstr "

      KMess hľadal v nasledujúcich priečinkoch:
      %1

      " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format -msgctxt "Text for a message dialog box; %1 is an explanation about the list of folders where the file was searched for, which is only shown if any folders are found" -msgid "

      KMess will not be able to play sounds nor show notifications.

      The required file 'kmess.notifyrc' could not be found in any application folder.

      %1

      Please verify your installation.

      " -msgstr "

      KMess nebude schopný prehrať zvuky a upozornenia.

      Súbor 'kmess.notifyrc' nebol nájdený v priečinku aplikácie.

      %1

      Prosím overte Vašu inštaláciu.

      " +msgctxt "" +"Text for a message dialog box; %1 is an explanation about the list of " +"folders where the file was searched for, which is only shown if any folders " +"are found" +msgid "" +"

      KMess will not be able to play sounds nor show notifications.

      The required file 'kmess.notifyrc' could not be found in any " +"application folder.

      %1

      Please verify your installation.

      " +msgstr "" +"

      KMess nebude schopný prehrať zvuky a upozornenia.

      Súbor " +"'kmess.notifyrc' nebol nájdený v priečinku aplikácie.

      %1

      Prosím overte " +"Vašu inštaláciu.

      " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Chyba s upozorneniami" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format -msgctxt "Main window caption: switched order to easily distinguish it from chats" +msgctxt "" +"Main window caption: switched order to easily distinguish it from chats" msgid "KMess - %1" msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 -#: rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Pripojiť" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "&Odpojiť" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "Zobraziť môj &profil" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "Zobraziť &povolené kontakty" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Zobraziť &offline kontakty" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "Zobraziť &odstránené kontakty" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "Zobraziť okienko &histórie" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "&Zobraziť panel hľadania" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "Zobraziť &prázdne skupiny" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "&Zobraziť veľkosť obrázkov" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Zoradiť kontakty podľa" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "Zobraziť &okno prenosu..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Nový &kontakt..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Nová &skupina..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Export zoznamu kontaktov..." -#: kmessinterface.cpp:183 -#: kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Zobraziť &históriu konverzácie..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Nové &konto..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Konfigurovať konto..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "Konfigurovať &KMess..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Zobraziť výber &ponuky" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Nezobraziť" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Malý" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Stredný" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Veľký" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Skupina" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Online/Offline" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Zmiešané" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "Zobraziť &sieťové okno..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] Prihlásený s %2" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 je online" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 je offline" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "Konverzáci&a" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "&Odstrániť zo skupiny" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "&Kopírovať do skupiny" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "&Presunúť do skupiny" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Posunúť skupinu &nadol" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Move Group &Up" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Od&strániť skupinu" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Pr&emenovať skupinu" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Tento kontakt Vás nemá vo svojom zozname kontaktov." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "E-mailová adresa" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "Klient" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Áno" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Nie" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Blokovaný" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Naposledy videný" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Posledná správa" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "Skupina %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " @@ -1976,7 +2120,7 @@ msgstr[0] "%1 kontakt," msgstr[1] "%1 kontakty," msgstr[2] "%1 kontaktov," -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" @@ -1985,7 +2129,7 @@ msgstr[0] "%1 online" msgstr[1] "%1 online" msgstr[2] "%1 online" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" @@ -1994,35 +2138,44 @@ msgstr[0] "%1 kontakt" msgstr[1] "%1 kontakty" msgstr[2] "%1 kontaktov" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Kliknite sem pre zmenu mena" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Kliknúť pre nastavenie osobnej správy[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" -msgid "Click here to insert a message to show to your contacts: they will see it along with your friendly name" -msgstr "Kliknite sem pre vloženie správy zobrazujúcu Vašim kontaktom: budú ju vidieť spolu s Vašim menom" +msgid "" +"Click here to insert a message to show to your contacts: they will see it " +"along with your friendly name" +msgstr "" +"Kliknite sem pre vloženie správy zobrazujúcu Vašim kontaktom: budú ju vidieť " +"spolu s Vašim menom" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Nedali sa nájsť záznamy konverzácie pre tento kontakt." -#: kmessview.cpp:2010 -#: kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Nenájdená história konverzácie" -#: kmessview.cpp:2015 -msgid "No chat logs could be found for this contact. Note that new chats are not logged; if you want your chats to be logged, you can enable it in your account settings." -msgstr "Nedali sa nájsť záznamy konverzácie pre tento kontakt. Všimnite si, že nové konverzácie nie sú zaznamenané; ak chcete konverzácie zaznamenávať, môžete to povoliť v nastaveniach konta." +#: kmessview.cpp:2033 +msgid "" +"No chat logs could be found for this contact. Note that new chats are not " +"logged; if you want your chats to be logged, you can enable it in your " +"account settings." +msgstr "" +"Nedali sa nájsť záznamy konverzácie pre tento kontakt. Všimnite si, že nové " +"konverzácie nie sú zaznamenané; ak chcete konverzácie zaznamenávať, môžete " +"to povoliť v nastaveniach konta." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" @@ -2030,9 +2183,20 @@ msgstr[0] "%1 nová e-mailová správa" msgstr[1] "%1 nové e-mailové správy" msgstr[2] "%1 nových e-mailových správ" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Zobraziť kontaktom, k&torú skladbu počúvam" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Zobraziť kontaktom, k&torú skladbu počúvam" + #: kmessviewdelegate.cpp:290 #, kde-format -msgctxt "Group name in the contact list with online/total contacts of that group" +msgctxt "" +"Group name in the contact list with online/total contacts of that group" msgid "%1 (%2/%3)" msgstr "%1 (%2/%3)" @@ -2080,8 +2244,7 @@ msgstr "Vývojár" msgid "Michael Curtis" msgstr "Michael Curtis" -#: main.cpp:65 -#: main.cpp:74 +#: main.cpp:65 main.cpp:74 msgid "Jan Tönjes" msgstr "Jan Tönjes" @@ -2089,22 +2252,15 @@ msgstr "Jan Tönjes" msgid "Project support" msgstr "Podpora projektu" -#: main.cpp:66 -#: main.cpp:67 -#: main.cpp:68 -#: main.cpp:69 -#: main.cpp:70 -#: main.cpp:71 +#: main.cpp:66 main.cpp:67 main.cpp:68 main.cpp:69 main.cpp:70 main.cpp:71 msgid "Current developer" msgstr "Aktuálny vývojár" -#: main.cpp:66 -#: main.cpp:106 +#: main.cpp:66 main.cpp:106 msgid "Diederik van der Boor" msgstr "Diederik van der Boor" -#: main.cpp:67 -#: main.cpp:129 +#: main.cpp:67 main.cpp:129 msgid "Valerio Pilo" msgstr "Valerio Pilo" @@ -2116,19 +2272,21 @@ msgstr "Antonio Nastasi" msgid "Ruben Vandamme" msgstr "Ruben Vandamme" -#: main.cpp:70 -#: main.cpp:169 +#: main.cpp:70 main.cpp:169 msgid "Sjors Gielen" msgstr "Sjors Gielen" -#: main.cpp:71 -#: main.cpp:168 +#: main.cpp:71 main.cpp:168 msgid "Adam Goossens" msgstr "Adam Goossens" #: main.cpp:74 -msgid "German translation, testing, documentation, web master, project management, etc..." -msgstr "Nemecký preklad, testovanie, dokumentácia, web master, projektový manažér, atď..." +msgid "" +"German translation, testing, documentation, web master, project management, " +"etc..." +msgstr "" +"Nemecký preklad, testovanie, dokumentácia, web master, projektový manažér, " +"atď..." #: main.cpp:75 msgid "Dane Harnett" @@ -2170,8 +2328,7 @@ msgstr "KMess ikona v štýle Oxygen" msgid "Michael Anderton" msgstr "Michael Anderton" -#: main.cpp:83 -#: main.cpp:112 +#: main.cpp:83 main.cpp:112 msgid "Panagiotis Papadopoulos" msgstr "Panagiotis Papadopoulos" @@ -2207,9 +2364,7 @@ msgstr "Mauricio Rother" msgid "Leonel Freire" msgstr "Leonel Freire" -#: main.cpp:89 -#: main.cpp:90 -#: main.cpp:91 +#: main.cpp:89 main.cpp:90 main.cpp:91 msgid "More Brazilian Portuguese translation" msgstr "Viac brazílskej portugalčiny" @@ -2244,15 +2399,14 @@ msgstr "Lin Haoxiang" #: main.cpp:96 msgid "Simplified Chinese translation, file send bug fix, proxy connect code" -msgstr "Preklad do zjednodušenej čínštiny, file send bug fix, proxy connect code" +msgstr "" +"Preklad do zjednodušenej čínštiny, file send bug fix, proxy connect code" -#: main.cpp:97 -#: main.cpp:164 +#: main.cpp:97 main.cpp:164 msgid "Liu Sizhuang" msgstr "Liu Sizhuang" -#: main.cpp:97 -#: main.cpp:98 +#: main.cpp:97 main.cpp:98 msgid "More Simplified Chinese translation" msgstr "Viac preklad do zjednodušenej čínštiny" @@ -2300,11 +2454,7 @@ msgstr "Arend van Beelen Jr." msgid "Dutch translation" msgstr "Holandský preklad" -#: main.cpp:106 -#: main.cpp:107 -#: main.cpp:108 -#: main.cpp:109 -#: main.cpp:110 +#: main.cpp:106 main.cpp:107 main.cpp:108 main.cpp:109 main.cpp:110 msgid "More Dutch translation" msgstr "Viac holandského prekladu" @@ -2356,9 +2506,7 @@ msgstr "Markus Vuori" msgid "Joonas Niilola" msgstr "Joonas Niilola" -#: main.cpp:117 -#: main.cpp:118 -#: main.cpp:119 +#: main.cpp:117 main.cpp:118 main.cpp:119 msgid "More Finnish translation" msgstr "Viac fínskeho prekladu" @@ -2390,9 +2538,7 @@ msgstr "Vincent Fretin" msgid "Andrea Blankenstijn" msgstr "Andrea Blankenstijn" -#: main.cpp:123 -#: main.cpp:124 -#: main.cpp:125 +#: main.cpp:123 main.cpp:124 main.cpp:125 msgid "More French translation" msgstr "Viac francúzskeho prekladu" @@ -2420,8 +2566,7 @@ msgstr "Viac maďarského prekladu" msgid "Pauli Henrik" msgstr "Pauli Henrik" -#: main.cpp:129 -#: main.cpp:130 +#: main.cpp:129 main.cpp:130 msgid "More Italian translation" msgstr "Viac talianskeho prekladu" @@ -2434,8 +2579,10 @@ msgid "Andrea Decorte" msgstr "Andrea Decorte" #: main.cpp:131 -msgid "More Italian translation, Group selection in 'contact added user' dialog" -msgstr "Viac talianskeho prekladu, výber skupiny v dialógu 'contact added user'" +msgid "" +"More Italian translation, Group selection in 'contact added user' dialog" +msgstr "" +"Viac talianskeho prekladu, výber skupiny v dialógu 'contact added user'" #: main.cpp:133 msgid "Daniel E. Moctezuma" @@ -2498,14 +2645,8 @@ msgstr "Španielsky preklad" msgid "J.C.A. Javi" msgstr "J.C.A. Javi" -#: main.cpp:143 -#: main.cpp:144 -#: main.cpp:145 -#: main.cpp:146 -#: main.cpp:147 -#: main.cpp:148 -#: main.cpp:149 -#: main.cpp:150 +#: main.cpp:143 main.cpp:144 main.cpp:145 main.cpp:146 main.cpp:147 +#: main.cpp:148 main.cpp:149 main.cpp:150 msgid "More Spanish translation" msgstr "Viac španielskeho prekladu" @@ -2573,8 +2714,7 @@ msgstr "Turecký preklad" msgid "Barbaros Ulutas" msgstr "Barbaros Ulutas" -#: main.cpp:157 -#: main.cpp:158 +#: main.cpp:157 main.cpp:158 msgid "More Turkish translation" msgstr "Viac tureckého prekladu" @@ -2596,7 +2736,8 @@ msgstr "Guido Solinas" #: main.cpp:162 msgid "Pictures in contact list code, contact client info, chat font zoom" -msgstr "Obrázky v zozname kontaktu, kontaktné info klienta, lupa písma v konverzácii" +msgstr "" +"Obrázky v zozname kontaktu, kontaktné info klienta, lupa písma v konverzácii" #: main.cpp:163 msgid "File transfer thumbnails" @@ -2635,8 +2776,12 @@ msgid "Matteo Nardi" msgstr "Matteo Nardi" #: main.cpp:168 -msgid "Notifications blocking option, winks disabling option, last message date feature" -msgstr "Nastavenie blokovania upozornení, nastavenie vypnutia žmurknutí, funkcia dátumu poslednej správy" +msgid "" +"Notifications blocking option, winks disabling option, last message date " +"feature" +msgstr "" +"Nastavenie blokovania upozornení, nastavenie vypnutia žmurknutí, funkcia " +"dátumu poslednej správy" #: main.cpp:169 msgid "IRC-like commands in the chat window" @@ -2687,7 +2832,9 @@ msgid "Camille Begue" msgstr "" #: main.cpp:178 -msgid "Chat History functionality when disconnected, autologin checkbox on login screen" +msgid "" +"Chat History functionality when disconnected, autologin checkbox on login " +"screen" msgstr "" #: main.cpp:179 @@ -2711,8 +2858,10 @@ msgid "Anastasios Bourazanis" msgstr "" #: main.cpp:181 -msgid "Emoticon preview in settings page,clickable contact properties dialog text" -msgstr "Náhľad emotikony v stránke nastavenia, kliknuteľný dialóg vlastností kontaktu" +msgid "" +"Emoticon preview in settings page,clickable contact properties dialog text" +msgstr "" +"Náhľad emotikony v stránke nastavenia, kliknuteľný dialóg vlastností kontaktu" #: main.cpp:182 msgid "Internationalization fixes, drag'n'drop of images into display pictures" @@ -2723,55 +2872,66 @@ msgstr "" msgid "Marco Mentasti" msgstr "Sarkazmus" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Inšpirácie a zmiešaný kód" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 -msgid "Custom crash handler implementation, System tray icon overlay implementation" +#: main.cpp:190 +msgid "" +"Custom crash handler implementation, System tray icon overlay implementation" msgstr "" -#: main.cpp:190 -msgid "KNotify not giving focus bug fix and KWin focus stealing prevention workaround" +#: main.cpp:191 +msgid "" +"KNotify not giving focus bug fix and KWin focus stealing prevention " +"workaround" msgstr "" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2779,40 +2939,40 @@ msgstr "" "Ste vítaní posielaním opráv na KMEss fórum!\n" "Ak máte pocit, že Vaše meno tu chýba, prosím kontaktujte nás!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Vaše meno?" -#: main.cpp:196 -#: rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Vaše mená" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "Vaše e-mailové adresy" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Zo začiatku nezobrazovať okno zoznamu kontaktov" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Prihlásenie s danou e-mailovou adresou" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Spustiť test ladenia (iba vývojársky build)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." msgstr "" "Pripojiť ku špecifickému serveru namiesto oficiálneho Live servera.\n" -"Použite \"localhost\" alebo \"127.0.0.1\" pre pripojenie k lokálnemu KMess Test Serveru." +"Použite \"localhost\" alebo \"127.0.0.1\" pre pripojenie k lokálnemu KMess " +"Test Serveru." #: model/contactlist.cpp:1824 msgid "Individuals" @@ -2871,12 +3031,15 @@ msgstr "" #: network/applications/filetransfer.cpp:290 #: network/applications/filetransferp2p.cpp:376 #, kde-format -msgid "The transfer of the file "%1" failed. Could not save the file." +msgid "" +"The transfer of the file "%1" failed. Could not save the file." msgstr "Prenos súboru "%1" zlyhal. Súbor sa nedal uložiť." #: network/applications/filetransfer.cpp:295 #, kde-format -msgid "The transfer of the file "%1" failed. Could not open the destination file." +msgid "" +"The transfer of the file "%1" failed. Could not open the " +"destination file." msgstr "Prenos súboru "%1" zlyhal. Nedal sa otvoriť cieľový súbor." #: network/applications/filetransfer.cpp:319 @@ -2927,13 +3090,15 @@ msgstr "Súbor úspešne prijatý "%1"." #: network/applications/filetransfer.cpp:742 #: network/applications/filetransferp2p.cpp:811 #, kde-format -msgid "The transfer of the file "%1" failed. The file does not exist." +msgid "" +"The transfer of the file "%1" failed. The file does not exist." msgstr "Prenos súboru "%1" zlyhal. Súbor neexistuje." #: network/applications/filetransfer.cpp:747 #: network/applications/filetransferp2p.cpp:816 #, kde-format -msgid "The transfer of the file "%1" failed. The file could not be read." +msgid "" +"The transfer of the file "%1" failed. The file could not be read." msgstr "Prenos súboru "%1" zlyhal. Súbor sa nepodarilo prečítať." #: network/applications/filetransfer.cpp:774 @@ -2973,8 +3138,12 @@ msgstr "Súbor nemohol byť zapísaný" #: network/applications/inktransferp2p.cpp:108 #, kde-format msgctxt "Error message shown in chat, %1 is the contact's friendly name" -msgid "%1 has tried to send you an handwritten message, but it could not be received." -msgstr "%1 Vám skúsil odoslať správu písanú rukou, ale nepodarilo sa ju prijať." +msgid "" +"%1 has tried to send you an handwritten message, but it could not be " +"received." +msgstr "" +"%1 Vám skúsil odoslať správu písanú rukou, ale nepodarilo sa ju prijať." +"" #: network/applications/inktransferp2p.cpp:114 #, kde-format @@ -2996,7 +3165,8 @@ msgstr "Pozvanie bolo prerušené. Vypršal časový limit na akceptáciu užív #: network/applications/mimeapplication.cpp:175 msgid "The invitation was aborted. Timeout while waiting for file data." -msgstr "Pozvanie bolo prerušené. Vypršal časový limit počas čakania na dátový súbor." +msgstr "" +"Pozvanie bolo prerušené. Vypršal časový limit počas čakania na dátový súbor." #: network/applications/mimeapplication.cpp:180 msgid "The invitation was aborted. The switchboard closed the chat connection." @@ -3017,8 +3187,12 @@ msgstr "Kontakt Vás pozval na aktivitu, ale ešte nie je podporovaná v KMess." #: network/applications/p2papplication.cpp:1763 #: network/applications/p2papplication.cpp:1887 #: network/applications/p2papplicationbase.cpp:706 -msgid "The invitation was cancelled. The contact sent bad data, or KMess does not support it." -msgstr "Pozvanie bolo zrušené. Kontakt odoslal chybné dáta, alebo KMess ich nepodporuje." +msgid "" +"The invitation was cancelled. The contact sent bad data, or KMess does not " +"support it." +msgstr "" +"Pozvanie bolo zrušené. Kontakt odoslal chybné dáta, alebo KMess ich " +"nepodporuje." #: network/applications/p2papplication.cpp:1085 msgid "The transfer failed. Data preparation failed." @@ -3031,8 +3205,10 @@ msgstr "Pozvanie bolo zrušené. Správa nebola smerovaná ku Vám." #: network/applications/p2papplication.cpp:1744 #: network/applications/p2papplicationbase.cpp:855 #: network/applications/p2papplicationbase.cpp:935 -msgid "The transfer failed. The contact sent bad data, or KMess does not support it." -msgstr "Prenos zlyhal. Kontakt odoslal chybné dáta, alebo KMess ich nepodporuje." +msgid "" +"The transfer failed. The contact sent bad data, or KMess does not support it." +msgstr "" +"Prenos zlyhal. Kontakt odoslal chybné dáta, alebo KMess ich nepodporuje." #: network/applications/p2papplication.cpp:1810 #: network/applications/p2papplication.cpp:1828 @@ -3056,12 +3232,18 @@ msgid "Waiting for connection" msgstr "Čaká sa na pripojenie" #: network/applications/p2papplication.cpp:3423 -msgid "The invitation was cancelled. A timeout occurred waiting for the contact to accept." +msgid "" +"The invitation was cancelled. A timeout occurred waiting for the contact to " +"accept." msgstr "Pozvanie bolo zrušené. Vypršal časový limit na akceptáciu užívateľa." #: network/applications/p2papplication.cpp:3432 -msgid "The invitation was cancelled. A timeout occurred waiting for a connection to succeed or fail." -msgstr "Pozvanie bolo zrušené. Vypršal časový limit na pripojenie, alebo zlyhanie spojenia." +msgid "" +"The invitation was cancelled. A timeout occurred waiting for a connection to " +"succeed or fail." +msgstr "" +"Pozvanie bolo zrušené. Vypršal časový limit na pripojenie, alebo zlyhanie " +"spojenia." #: network/applications/p2papplication.cpp:3499 #: network/applications/p2papplication.cpp:3583 @@ -3107,8 +3289,11 @@ msgid "remote desktop" msgstr "vzdialená plocha" #: network/applications/unknownapplication.cpp:71 -msgid "You are invited to start a voice conversation but support for this was not installed" -msgstr "Ste pozvaný na hlasovú konverzáciu, ale podpora pre ňu nebola nainštalovaná" +msgid "" +"You are invited to start a voice conversation but support for this was not " +"installed" +msgstr "" +"Ste pozvaný na hlasovú konverzáciu, ale podpora pre ňu nebola nainštalovaná" #: network/extra/msnftpconnection.cpp:120 #, kde-format @@ -3181,8 +3366,11 @@ msgid "The given account name is invalid" msgstr "Názov konta je neplatný" #: network/msnconnection.cpp:401 -msgid "This account name is invalid, or your Passport account has not been confirmed yet" -msgstr "Názov konta je neplatný, alebo Vaše Passport konto ešte nebolo potvrdené" +msgid "" +"This account name is invalid, or your Passport account has not been " +"confirmed yet" +msgstr "" +"Názov konta je neplatný, alebo Vaše Passport konto ešte nebolo potvrdené" #: network/msnconnection.cpp:404 msgid "Your contact list is full" @@ -3214,12 +3402,18 @@ msgid "This contact cannot be added to both allow and block list" msgstr "Tento kontakt nemôže byť pridaný do povoleného a blokovaného zoznamu" #: network/msnconnection.cpp:433 -msgid "The group name is already present in your contact list. Please use a different name" +msgid "" +"The group name is already present in your contact list. Please use a " +"different name" msgstr "Názov skupiny je už v zozname kontaktov. Prosím, použite iný názov." #: network/msnconnection.cpp:437 -msgid "Your contact list has too many groups; you are allowed to only have at most 30" -msgstr "Váš zoznam kontaktov má príliš veľa skupín; máte povolené mať len maximálne 30" +msgid "" +"Your contact list has too many groups; you are allowed to only have at most " +"30" +msgstr "" +"Váš zoznam kontaktov má príliš veľa skupín; máte povolené mať len maximálne " +"30" #: network/msnconnection.cpp:441 msgid "This group cannot be changed" @@ -3279,7 +3473,8 @@ msgid "Not logged in" msgstr "Neprihlásený" #: network/msnconnection.cpp:493 -msgctxt "MSN error, due to e.g. trying the beta service without an allowed account" +msgctxt "" +"MSN error, due to e.g. trying the beta service without an allowed account" msgid "This account was denied access to the Live Messenger service" msgstr "Toto konto malo zamietnutý prístup k službe Live Messenger" @@ -3336,7 +3531,8 @@ msgid "Not accepting new contacts" msgstr "Neakceptovanie nových kontaktov" #: network/msnconnection.cpp:559 -msgid "You have a Kids Passport account, you need parental consent to chat online" +msgid "" +"You have a Kids Passport account, you need parental consent to chat online" msgstr "Máte Kids Passport konto, potrebujete rodičovský súhlas" #: network/msnconnection.cpp:562 @@ -3352,12 +3548,16 @@ msgid "Error accessing contact list, try again later" msgstr "Chyba prístupu k zoznamu, skúste to neskôr" #: network/msnconnection.cpp:585 -msgid "The Live Messenger service is temporarily unavailable. There was an internal server error" +msgid "" +"The Live Messenger service is temporarily unavailable. There was an internal " +"server error" msgstr "Live Messenger služba je dočasne nedostupná. Vnútorná chyba servera" #: network/msnconnection.cpp:596 -msgid "The Live Messenger service is temporarily unavailable. The server is too busy" -msgstr "Live Messenger služba je dočasne nedostupná. Server je príliš zaneprázdnený" +msgid "" +"The Live Messenger service is temporarily unavailable. The server is too busy" +msgstr "" +"Live Messenger služba je dočasne nedostupná. Server je príliš zaneprázdnený" #: network/msnconnection.cpp:600 msgid "Peer notification server down" @@ -3390,7 +3590,8 @@ msgstr "Overenie zlyhalo" #: network/msnconnection.cpp:635 #, kde-format -msgid "Unknown error code received from the server: %1
      Technical details: %2" +msgid "" +"Unknown error code received from the server: %1
      Technical details: %2" msgstr "Prijatá neznáma chyba zo servera: %1
      Technické detaily: %2" #: network/msnconnection.cpp:657 @@ -3403,24 +3604,24 @@ msgstr "MSN chyba %1" msgid "Trying the HTTP fallback..." msgstr "" -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Overuje sa..." -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Overené" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Pripája sa..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Obdržaný neznámy príkaz zo servera: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" @@ -3429,153 +3630,200 @@ msgstr[0] "%1 minúta" msgstr[1] "%1 minúty" msgstr[2] "%1 minút" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "Server sa uzatvára pre údržbu v %1!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "Live Messenger server nebude pracovať %1 pre údržbu." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
      Details: %1" msgstr "KMess nemohol spracovať Offline-IM správy.
      Detaily: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP klient nie je viac platný." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Overovacia lehota prekročená" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Čaká sa na zoznam kontaktov..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

      Warning: %1

      " msgstr "

      Varovanie: %1

      " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "Varovanie MSN" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
      Internal error reason: %1" msgstr "
      Dôvod vnútornej chyby: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" -msgid "

      Authentication has failed, please verify your account email and password.

      " -msgstr "

      Overenie zlyhalo, prosím skontrolujte názov Vášho e-mailováho konta a heslo.

      " +msgid "" +"

      Authentication has failed, please verify your account email and password." +"

      " +msgstr "" +"

      Overenie zlyhalo, prosím skontrolujte názov Vášho e-mailováho konta a " +"heslo.

      " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN chyba" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

      The account %1 has been connected from another location.

      " msgstr "

      Konto %1 bolo pripojené z iného miesta.

      " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      You have been disconnected: you have connected with the account %1 from another Messenger client, or from another location.

      " -msgstr "

      Boli ste odpojení: ste pripojení s kontom %1 z iného Messenger klienta, alebo z iného miesta.

      " +msgid "" +"

      You have been disconnected: you have connected with the account %1 " +"from another Messenger client, or from another location.

      " +msgstr "" +"

      Boli ste odpojení: ste pripojení s kontom %1 z iného Messenger " +"klienta, alebo z iného miesta.

      " -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" -msgid "

      Unable to connect to the Live Messenger service.
      Maybe you need to authenticate before you can access the network?

      " -msgstr "

      Nepodarilo sa pripojiť k službe Live Messenger.
      Možno budete musieť overiť pred prístupom k sieti?

      " +msgid "" +"

      Unable to connect to the Live Messenger service.
      Maybe you need to " +"authenticate before you can access the network?

      " +msgstr "" +"

      Nepodarilo sa pripojiť k službe Live Messenger.
      Možno budete musieť " +"overiť pred prístupom k sieti?

      " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      KMess could not connect to the Live Messenger servers.
      There may be a problem with your Internet connection, or the Live Messenger servers may be temporarily unavailable.
      It is also possible that an authentication to a web page or proxy may be required to access the network.

      Click here to visit the Messenger service status page.

      " -msgstr "

      KMess sa nemohol pripojiť k MSN Messenger serverom.
      Máte problém s internetovým pripojením, alebo Live Messenger servery môžu byť dočasne nedostupné.
      Je tiež možné, že autentizácia na webovú stránku, alebo proxy môžu byť požadované pre prístup do siete.

      Kliknite tu pre zobrazenie stránky stavu Messenger služby.

      " +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.
      It is also possible that an authentication " +"to a web page or proxy may be required to access the network.

      Click here to visit the Messenger service status page.

      " +msgstr "" +"

      KMess sa nemohol pripojiť k MSN Messenger serverom.
      Máte problém s " +"internetovým pripojením, alebo Live Messenger servery môžu byť dočasne " +"nedostupné.
      Je tiež možné, že autentizácia na webovú stránku, alebo " +"proxy môžu byť požadované pre prístup do siete.

      Kliknite " +"tu pre zobrazenie stránky stavu Messenger služby.

      " -#: network/msnnotificationconnection.cpp:3127 -msgid "

      Unable to resolve the authentication on the client
      Maybe you do not have installed qca2 and/or qca2-plugin-ossl?

      " -msgstr "

      Nie je možné riešiť overenie na strane klienta
      Možno nemáte nainštalovaný qca2 a/alebo qca2-plugin-ossl?

      " +#: network/msnnotificationconnection.cpp:3146 +msgid "" +"

      Unable to resolve the authentication on the client
      Maybe you do not " +"have installed qca2 and/or qca2-plugin-ossl?

      " +msgstr "" +"

      Nie je možné riešiť overenie na strane klienta
      Možno nemáte " +"nainštalovaný qca2 a/alebo qca2-plugin-ossl?

      " -#: network/msnnotificationconnection.cpp:3129 -msgid "

      KMess could not connect to the Live Messenger servers.
      You probably need to install qca2 and qca2-plugin-ossl to make KMess work.
      It is also possible that the MSN network is unavailable at the moment.

      " -msgstr "

      KMess sa nemohol pripojiť k serverom Live Messenger.
      Pravdepodobne potrebujete nainštalovať qca2 a qca2-plugin-ossl aby KMess fungoval.
      Je tiež možné, že sieť MSN nie je práve dostupná.

      " +#: network/msnnotificationconnection.cpp:3148 +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      You probably " +"need to install qca2 and qca2-plugin-ossl to make KMess work.
      It is also " +"possible that the MSN network is unavailable at the moment.

      " +msgstr "" +"

      KMess sa nemohol pripojiť k serverom Live Messenger.
      Pravdepodobne " +"potrebujete nainštalovať qca2 a qca2-plugin-ossl aby KMess fungoval.
      Je " +"tiež možné, že sieť MSN nie je práve dostupná.

      " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

      Unable to connect to the Live Messenger service.

      " msgstr "

      Nepodarilo sa pripojiť k službe Live Messenger.

      " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" -msgid "

      KMess could not connect to the Live Messenger servers.
      There may be a problem with your Internet connection, or the Live Messenger servers may be temporarily unavailable.

      Click here to visit the Messenger service status page.

      " -msgstr "

      KMess sa nemohol pripojiť k MSN Messenger serverom.
      Máte problém s internetovým pripojením, alebo Live Messenger servery môžu byť dočasne nedostupné.

      Kliknite tu pre zobrazenie stránky stavu Messenger služby.

      " +msgid "" +"

      KMess could not connect to the Live Messenger servers.
      There may be " +"a problem with your Internet connection, or the Live Messenger servers may " +"be temporarily unavailable.

      Click here to visit the " +"Messenger service status page.

      " +msgstr "" +"

      KMess sa nemohol pripojiť k MSN Messenger serverom.
      Máte problém s " +"internetovým pripojením, alebo Live Messenger servery môžu byť dočasne " +"nedostupné.

      Kliknite tu pre zobrazenie stránky stavu " +"Messenger služby.

      " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format -msgctxt "Connection error (Server-reported user error): passive notification message" +msgctxt "" +"Connection error (Server-reported user error): passive notification message" msgid "

      Error: %1

      " msgstr "

      Chyba: %1

      " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

      The Live Messenger server has reported an error:

      %1

      " msgstr "

      Live Messenger server oznámil chybu:

      %1

      " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format -msgctxt "Connection error (Server-reported server error): passive notification message" +msgctxt "" +"Connection error (Server-reported server error): passive notification message" msgid "

      Messenger Service Error: %1

      " msgstr "

      Chyba služby Messenger: %1

      " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

      The Live Messenger server has reported an error:

      %1

      " msgstr "

      Live Messenger server oznámil chybu:

      %1

      " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format -msgctxt "Connection error (Server-reported client error): passive notification message" +msgctxt "" +"Connection error (Server-reported client error): passive notification message" msgid "

      KMess Error: %1

      " msgstr "

      KMess chyba: %1

      " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

      KMess has encountered an internal error:

      %1

      " msgstr "

      KMess narazil na internú chybu:

      %1

      " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

      Network connection lost.

      " msgstr "

      Stratené pripojenie k sieti.

      " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

      Connection to the Live Messenger server has been lost.

      " msgstr "

      Pripojenie k Live Messenger serveru bolo stratené.

      " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" -msgid "

      Developer info:
      Error number: %1
      Error string: %2

      " -msgstr "

      Info vývojára:
      Číslo chyby: %1
      Reťazec chyby: %2

      " +msgid "" +"

      Developer info:
      Error number: %1
      Error string: %2

      " +msgstr "" +"

      Info vývojára:
      Číslo chyby: %1
      Reťazec chyby: %2

      " #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3591,8 +3839,12 @@ msgstr "%1 (Interný kód chyby: %2)" #: network/msnsockethttp.cpp:701 #, kde-format msgctxt "Error message shown with HTTP connection" -msgid "%1 (Internal error code: %2)
      Response: %3 %4
      Redirection target: %5" -msgstr "%1 (Interný kód chyby: %2)
      Odozva: %3 %4
      Cieľ presmerovania: %5" +msgid "" +"%1 (Internal error code: %2)
      Response: %3 %4
      Redirection " +"target: %5" +msgstr "" +"%1 (Interný kód chyby: %2)
      Odozva: %3 %4
      Cieľ " +"presmerovania: %5" #: network/msnsockettcp.cpp:366 msgid "Connection time limit exceeded" @@ -3610,54 +3862,56 @@ msgstr[2] "%1 pingov stratených" msgid "The connection to the server was lost" msgstr "Pripojenie k serveru bolo stratené" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "Uvedená e-mailová adresa, \"%1\", nie je platná e-mailová adresa!" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" -msgid "The specified email address, \"%1\", does not belong to a Live Messenger account!" +msgid "" +"The specified email address, \"%1\", does not belong to a Live Messenger " +"account!" msgstr "Uvedená e-mailová adresa, \"%1\", nepatrí kontu Live Messengera!" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Neplatná požiadavka webovej služby (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Webová služba nie je dostupná (%1)" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Príliš veľa presmerovaní prostredníctvom webových služieb" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Webová služba offline správ nie je aktuálne dostupná" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messenger webová služba zakúša problémy " -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Neplatná odozva webovej služby %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Žiadna odozva z webovej služby" @@ -3803,51 +4057,134 @@ msgstr "%1
      je na telefóne" msgid "%1
      is out for lunch" msgstr "%1
      je na obede" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 nová e-mailová správa" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Pre kontakty v tej istej skupine" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Tento kontakt nie je online" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Tento kontakt nie je online" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "KMess ikona" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
      '%1'
      by '%2'" msgstr "Nový e-mail:
      '%1'
      by '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

      Closing the main window will keep KMess running in the system tray.

      You can open KMess again by clicking on the bird icon, which is now " +"flashing.
      Use 'Quit' from the 'Connect' menu to quit the application.

      " +msgstr "" +"Zatvorením hlavného okna bude KMess spustený v systémovom paneli. Použite " +"'Ukončiť' z ponuky 'Pripojiť' pre ukončenie aplikácie." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Minimalizovať do systémového panela" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Pripájanie k %1, port %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

      Connected as:
      %1 (%2)

      " +msgstr "
      %1 (%2)%3" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Pripojené" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

      Not connected

      " +msgstr "

      Stratené pripojenie k sieti.

      " + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Spustiť konverzáciu" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "Zanechať správu" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Zobraziť správu" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Detaily" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "Čítať e-mail" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Skryť" #: notification/systemtraywidget.cpp:85 -msgid "Closing the main window will keep KMess running in the system tray. Use 'Quit' from the 'Connect' menu to quit the application." -msgstr "Zatvorením hlavného okna bude KMess spustený v systémovom paneli. Použite 'Ukončiť' z ponuky 'Pripojiť' pre ukončenie aplikácie." - -#: notification/systemtraywidget.cpp:96 -#: notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Minimalizovať do systémového panela" +msgid "" +"Closing the main window will keep KMess running in the system tray. Use " +"'Quit' from the 'Connect' menu to quit the application." +msgstr "" +"Zatvorením hlavného okna bude KMess spustený v systémovom paneli. Použite " +"'Ukončiť' z ponuky 'Pripojiť' pre ukončenie aplikácie." #: notification/systemtraywidget.cpp:248 #, kde-format @@ -3879,27 +4216,25 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr " - %1 e-maily" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Prehliadať..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "Prehliadať a orezať obrázok..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Nastaviť predchádzajúci obrázok..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 -#: rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Zobraziť obrázok" -#: settings/accountsettingsdialog.cpp:62 -#: settings/globalsettingsdialog.cpp:69 +#: settings/accountsettingsdialog.cpp:62 settings/globalsettingsdialog.cpp:69 #: settings/globalsettingsdialog.cpp:70 msgid "Settings" msgstr "Nastavenia" @@ -3912,13 +4247,11 @@ msgstr "Konto" msgid "My Account" msgstr "Moje konto" -#: settings/accountsettingsdialog.cpp:85 -#: settings/accountsettingsdialog.cpp:86 +#: settings/accountsettingsdialog.cpp:85 settings/accountsettingsdialog.cpp:86 msgid "Contact List" msgstr "Zoznam kontaktov" -#: settings/accountsettingsdialog.cpp:96 -#: settings/accountsettingsdialog.cpp:97 +#: settings/accountsettingsdialog.cpp:96 settings/accountsettingsdialog.cpp:97 msgid "Chatting" msgstr "Konverzácia" @@ -3931,15 +4264,21 @@ msgstr "Záznam konverzácie" msgctxt "Button tooltip text" msgid "" "Click here to delete this account from the list of registered accounts.\n" -"You cannot delete the currently connected account nor a guest account, which will be deleted when you disconnect." +"You cannot delete the currently connected account nor a guest account, which " +"will be deleted when you disconnect." msgstr "" "Kliknite sem ak chcete zmazať konto zo zoznamu registrovaných kont.\n" -"Nemôžete zmazať aktuálne pripojené konto ani konto hosťa, ktorý bude zrušený keď sa odpojíte." +"Nemôžete zmazať aktuálne pripojené konto ani konto hosťa, ktorý bude zrušený " +"keď sa odpojíte." #: settings/accountsettingsdialog.cpp:207 #, kde-format -msgid "The email address you have entered is not valid, and cannot be used as an account: '%1'" -msgstr "E-mailovú adresu, ktorú ste zadali je neplatná a nemôže byť použitá ako konto: '%1'" +msgid "" +"The email address you have entered is not valid, and cannot be used as an " +"account: '%1'" +msgstr "" +"E-mailovú adresu, ktorú ste zadali je neplatná a nemôže byť použitá ako " +"konto: '%1'" #: settings/accountsettingsdialog.cpp:215 #, kde-format @@ -3956,8 +4295,12 @@ msgstr "Ste si istý, že chcete zmazať toto konto?" #: settings/accountsmanagerpage.cpp:160 #, kde-format -msgid "Are you sure you want to delete the account '%1' ?
      All settings of this account will be lost." -msgstr "Ste si istý, že chcete zmazať toto konto '%1' ?
      Všetky nastavenia tohto konta sa stratia." +msgid "" +"Are you sure you want to delete the account '%1' ?
      All settings of " +"this account will be lost." +msgstr "" +"Ste si istý, že chcete zmazať toto konto '%1' ?
      Všetky nastavenia " +"tohto konta sa stratia." #: settings/chatstylepage.cpp:371 msgid "Hi, how are you doing? :)" @@ -3989,13 +4332,11 @@ msgstr "Zmazať emotikonu" msgid "KMess Settings" msgstr "Nastavenia KMess" -#: settings/globalsettingsdialog.cpp:61 -#: settings/globalsettingsdialog.cpp:62 +#: settings/globalsettingsdialog.cpp:61 settings/globalsettingsdialog.cpp:62 msgid "Accounts" msgstr "Kontá" -#: settings/globalsettingsdialog.cpp:65 -#: settings/globalsettingsdialog.cpp:67 +#: settings/globalsettingsdialog.cpp:65 settings/globalsettingsdialog.cpp:67 msgid "Notifications" msgstr "Upozornenia" @@ -4013,8 +4354,14 @@ msgstr "Musíte vybrať príkaz pre spustenie vlastného prehliadača!" #: settings/miscellaneouspage.cpp:291 #, c-format -msgid "The console command you have specified to launch a custom web browser does not contain the '%u' parameter. Without this, opening web sites will not work.
      Do you want KMess to add it for you?" -msgstr "Príkaz, ktorý ste vybrali pre spustenie vlastného prehliadača, nezahŕňa '%u' parameter. Bez toho nebude otváranie webových stránok fungovať.
      Chcete aby Vám ho KMess pridal?" +msgid "" +"The console command you have specified to launch a custom web browser " +"does not contain the '%u' parameter. Without this, opening web sites will " +"not work.
      Do you want KMess to add it for you?" +msgstr "" +"Príkaz, ktorý ste vybrali pre spustenie vlastného prehliadača, " +"nezahŕňa '%u' parameter. Bez toho nebude otváranie webových stránok fungovať." +"
      Chcete aby Vám ho KMess pridal?" #: settings/miscellaneouspage.cpp:316 msgid "You have to specify a console command to launch a custom email client!" @@ -4022,8 +4369,14 @@ msgstr "Musíte vybrať príkaz pre spustenie vlastného e-mailového klienta!" #: settings/miscellaneouspage.cpp:321 #, c-format -msgid "The console command you specified to launch a custom email client does not contain the '%u' parameter. Without this, composing emails will not work.
      Do you want KMess to add it for you?" -msgstr "Príkaz, ktorý ste vybrali pre spustenie vlastného prehliadača, nezahŕňa '%u' parameter. Bez toho nebude e-mailový klient fungovať.
      Chcete aby Vám ho KMess pridal?" +msgid "" +"The console command you specified to launch a custom email client does " +"not contain the '%u' parameter. Without this, composing emails will not work." +"
      Do you want KMess to add it for you?" +msgstr "" +"Príkaz, ktorý ste vybrali pre spustenie vlastného prehliadača, " +"nezahŕňa '%u' parameter. Bez toho nebude e-mailový klient fungovať.
      Chcete aby Vám ho KMess pridal?" #: settings/miscellaneouspage.cpp:344 msgid "You have to select a directory for the received files!" @@ -4045,7 +4398,9 @@ msgstr "Odoslať s KMess" #: utils/kmessconfig.cpp:419 msgctxt "Passive notification message" msgid "

      KMess was unable to access its configuration files!

      " -msgstr "

      KMess nebol schopný získať prístup ku všetkým jeho konfiguračných súborov!

      " +msgstr "" +"

      KMess nebol schopný získať prístup ku všetkým jeho konfiguračných súborov!" +"

      " #: utils/likeback/likeback.cpp:242 msgid "&Send a Comment to the Developers" @@ -4068,24 +4423,48 @@ msgid "Welcome to %1." msgstr "Vitajte v %1." #: utils/likeback/likeback.cpp:336 -msgctxt "Welcome dialog text, explanation for both the like and dislike buttons" -msgid "Each time you have a great or frustrating experience, please click on the appropriate face below the window title-bar, briefly describe what you like or dislike and click on 'Send'." -msgstr "Zakaždým, keď máte dobrú, alebo frustrujúcu skúsenosť, kliknite na príslušnú tvár pod titulkom okna, pre stručný opis, čo sa Vám páči, alebo nepáči a kliknite na 'Odoslať'." +msgctxt "" +"Welcome dialog text, explanation for both the like and dislike buttons" +msgid "" +"Each time you have a great or frustrating experience, please click on the " +"appropriate face below the window title-bar, briefly describe what you like " +"or dislike and click on 'Send'." +msgstr "" +"Zakaždým, keď máte dobrú, alebo frustrujúcu skúsenosť, kliknite na príslušnú " +"tvár pod titulkom okna, pre stručný opis, čo sa Vám páči, alebo nepáči a " +"kliknite na 'Odoslať'." #: utils/likeback/likeback.cpp:343 msgctxt "Welcome dialog text, explanation for the like button alone" -msgid "Each time you have a great experience, please click on the smiling face below the window title-bar, briefly describe what you like and click on 'Send'." -msgstr "Zakaždým, keď máte dobrú skúsenosť, kliknite na usmievajúcu sa tvár pod titulkom okna, pre stručný opis, čo sa Vám páči, alebo nepáči a kliknite na 'Odoslať'." +msgid "" +"Each time you have a great experience, please click on the smiling face " +"below the window title-bar, briefly describe what you like and click on " +"'Send'." +msgstr "" +"Zakaždým, keď máte dobrú skúsenosť, kliknite na usmievajúcu sa tvár pod " +"titulkom okna, pre stručný opis, čo sa Vám páči, alebo nepáči a kliknite na " +"'Odoslať'." #: utils/likeback/likeback.cpp:350 msgctxt "Welcome dialog text, explanation for the dislike button alone" -msgid "Each time you have a frustrating experience, please click on the frowning face below the window title-bar, briefly describe what you dislike and click on 'Send'." -msgstr "Zakaždým, keď máte dobrú skúsenosť, kliknite na sklamanú tvár pod titulkom okna, pre stručný opis, čo sa Vám páči, alebo nepáči a kliknite na 'Odoslať'." +msgid "" +"Each time you have a frustrating experience, please click on the frowning " +"face below the window title-bar, briefly describe what you dislike and click " +"on 'Send'." +msgstr "" +"Zakaždým, keď máte dobrú skúsenosť, kliknite na sklamanú tvár pod titulkom " +"okna, pre stručný opis, čo sa Vám páči, alebo nepáči a kliknite na 'Odoslať'." #: utils/likeback/likeback.cpp:360 msgctxt "Welcome dialog text, explanation for the bug button" -msgid "If you experience an improper behavior in the application, just click on the broken-object icon in the top-right corner of the window, describe the behavior and click on 'Send'." -msgstr "Ak sa stretnete s nesprávnym správaním v aplikácii, stačí kliknúť na ikonu nefunkčného objektu v pravom hornom rohu okna, opíšte správanie a kliknite na 'Odoslať'." +msgid "" +"If you experience an improper behavior in the application, just click on the " +"broken-object icon in the top-right corner of the window, describe the " +"behavior and click on 'Send'." +msgstr "" +"Ak sa stretnete s nesprávnym správaním v aplikácii, stačí kliknúť na ikonu " +"nefunkčného objektu v pravom hornom rohu okna, opíšte správanie a kliknite " +"na 'Odoslať'." #: utils/likeback/likeback.cpp:372 msgctxt "Welcome dialog text, usage example" @@ -4094,13 +4473,19 @@ msgstr "Páči/b> sa mi nová grafika. Veľmi osviežujúca." #: utils/likeback/likeback.cpp:380 msgctxt "Welcome dialog text, usage example" -msgid "I dislike the welcome page of this assistant. Too time consuming." -msgstr "Nepáči sa mi uvítacia stránka tohto asistenta. Príliš časovo náročná." +msgid "" +"I dislike the welcome page of this assistant. Too time consuming." +msgstr "" +"Nepáči sa mi uvítacia stránka tohto asistenta. Príliš časovo náročná." #: utils/likeback/likeback.cpp:388 msgctxt "Welcome dialog text, usage example" -msgid "The application shows an improper behaviour when clicking the Add button. Nothing happens." -msgstr "Aplikácia zobrazuje nesprávne správanie po kliknutí na tlačidlo Pridať. Nič sa nestane." +msgid "" +"The application shows an improper behaviour when clicking the Add " +"button. Nothing happens." +msgstr "" +"Aplikácia zobrazuje nesprávne správanie po kliknutí na tlačidlo " +"Pridať. Nič sa nestane." #: utils/likeback/likeback.cpp:396 msgctxt "Welcome dialog text, usage example" @@ -4131,41 +4516,78 @@ msgstr "Odoslať komentár vývojárom" #: utils/likeback/likebackdialog.cpp:140 #, kde-format -msgctxt "Feedback dialog text, message with one accepted language for the comments" -msgid "Please, write it in %1, or the developers will not be able to read your comment!
      You may want to use an online translation tool to translate your message.
      " -msgstr "Prosím, napíšte do %1, alebo vývojári nebudú schopní prečítať Váš komentár!
      Môžete použiť online prekladateľský nástroj pre preklad Vašej správy.
      " +msgctxt "" +"Feedback dialog text, message with one accepted language for the comments" +msgid "" +"Please, write it in %1, or the developers will not be able to read " +"your comment!
      You may want to use an online translation " +"tool to translate your message.
      " +msgstr "" +"Prosím, napíšte do %1, alebo vývojári nebudú schopní prečítať Váš " +"komentár!
      Môžete použiť online prekladateľský nástroj " +"pre preklad Vašej správy.
      " #: utils/likeback/likebackdialog.cpp:152 #, kde-format -msgctxt "Feedback dialog text, message with list of accepted languages for the comments" -msgid "Please, write it in %1 or %2, or the developers will not be able to read your comment!
      You may want to use an online translation tool to translate your message.
      " -msgstr "Prosím, napíšte do %1 or %2, alebo vývojári nebudú schopní prečítať Váš komentár!
      Môžete použiť online prekladateľský nástroj pre preklad Vašej správy.
      " +msgctxt "" +"Feedback dialog text, message with list of accepted languages for the " +"comments" +msgid "" +"Please, write it in %1 or %2, or the developers will not be able to " +"read your comment!
      You may want to use an online " +"translation tool to translate your message.
      " +msgstr "" +"Prosím, napíšte do %1 or %2, alebo vývojári nebudú schopní prečítať " +"Váš komentár!
      Môžete použiť online prekladateľský " +"nástroj pre preklad Vašej správy.
      " #: utils/likeback/likebackdialog.cpp:168 -msgctxt "Feedback dialog text, message to remind to balance the likes and dislikes" -msgid "To make the comments you send more useful in improving this application, try to send the same amount of positive and negative comments.
      " -msgstr "Ak chcete odoslať pripomienky, užitočné pre zlepšenie tejto aplikácie, skúste odoslať rovnako pozitívne, aj negatívne komentáre.
      " +msgctxt "" +"Feedback dialog text, message to remind to balance the likes and dislikes" +msgid "" +"To make the comments you send more useful in improving this application, try " +"to send the same amount of positive and negative comments.
      " +msgstr "" +"Ak chcete odoslať pripomienky, užitočné pre zlepšenie tejto aplikácie, " +"skúste odoslať rovnako pozitívne, aj negatívne komentáre.
      " #: utils/likeback/likebackdialog.cpp:177 msgctxt "Feedback dialog text, text to disallow feature requests" -msgid "Please, do not ask for new features: this kind of request will be ignored.
      " -msgstr "Prosím, nepýtajte sa na nové funkcie: tento druh žiadosti bude ignorovaný.
      " +msgid "" +"Please, do not ask for new features: this kind of request will be ignored." +"
      " +msgstr "" +"Prosím, nepýtajte sa na nové funkcie: tento druh žiadosti bude ignorovaný." +"
      " #: utils/likeback/likebackdialog.cpp:183 #, kde-format -msgctxt "Feedback dialog text, %1=Application name,%2=message with list of accepted languages for the comment,%3=optional text to remind to balance the likes and dislikes,%4=optional text to disallow feature requests." -msgid "

      You can provide the developers a brief description of your opinions about %1.
      %2 %3%4

      " -msgstr "

      Môžete poskytnúť vývojárom stručný opis svojho stanoviska, pokiaľ ide o %1.
      %2 %3%4

      " +msgctxt "" +"Feedback dialog text, %1=Application name,%2=message with list of accepted " +"languages for the comment,%3=optional text to remind to balance the likes " +"and dislikes,%4=optional text to disallow feature requests." +msgid "" +"

      You can provide the developers a brief description of your opinions about " +"%1.
      %2 %3%4

      " +msgstr "" +"

      Môžete poskytnúť vývojárom stručný opis svojho stanoviska, pokiaľ ide o " +"%1.
      %2 %3%4

      " #: utils/likeback/likebackdialog.cpp:225 #, kde-format -msgid "The email address you have entered is not valid, and cannot be used: '%1'" -msgstr "E-mailovú adresu, ktorú ste zadali je neplatná a nemôže byť použitá: '%1'" +msgid "" +"The email address you have entered is not valid, and cannot be used: '%1'" +msgstr "" +"E-mailovú adresu, ktorú ste zadali je neplatná a nemôže byť použitá: '%1'" #: utils/likeback/likebackdialog.cpp:299 msgctxt "Dialog box text" -msgid "

      Your comment has been sent successfully. It will help us improve the application!

      Thanks for your time.

      " -msgstr "

      Váš komentár bol úspešne odoslaný. Pomôže nám zlepšiť aplikáciu!

      Ďakujeme za Váš čas.

      " +msgid "" +"

      Your comment has been sent successfully. It will help us improve the " +"application!

      Thanks for your time.

      " +msgstr "" +"

      Váš komentár bol úspešne odoslaný. Pomôže nám zlepšiť aplikáciu!

      Ďakujeme za Váš čas.

      " #: utils/likeback/likebackdialog.cpp:302 msgctxt "Dialog box title" @@ -4174,8 +4596,11 @@ msgstr "Komentár odoslaný" #: utils/likeback/likebackdialog.cpp:313 msgctxt "Dialog box text" -msgid "

      There has been an error while trying to send the comment.

      Please, try again later.

      " -msgstr "

      Vyskytla sa chyba počas odosielania komentára.

      Skúste to neskôr.

      " +msgid "" +"

      There has been an error while trying to send the comment.

      Please, " +"try again later.

      " +msgstr "" +"

      Vyskytla sa chyba počas odosielania komentára.

      Skúste to neskôr.

      " #: utils/likeback/likebackdialog.cpp:315 msgctxt "Dialog box title" @@ -4202,8 +4627,12 @@ msgstr "Kliknite na toto tlačidlo pre zmenu do štandardného textového režim #. i18n: file: chat/chatwindow.ui:215 #. i18n: ectx: property (whatsThis), widget (QToolButton, inkButton_) #: rc.cpp:14 -msgid "Click this button to switch to the handwriting mode, so you can write or paint a handwritten message." -msgstr "Kliknite na toto tlačidlo pre zmenu do režimu písaného rukou, takže môžete písať, alebo kresliť správy písané rukou." +msgid "" +"Click this button to switch to the handwriting mode, so you can write or " +"paint a handwritten message." +msgstr "" +"Kliknite na toto tlačidlo pre zmenu do režimu písaného rukou, takže môžete " +"písať, alebo kresliť správy písané rukou." #. i18n: file: chat/chatwindow.ui:238 #. i18n: ectx: property (toolTip), widget (QToolButton, standardEmoticonButton_) @@ -4214,8 +4643,12 @@ msgstr "Štandardné emotikony" #. i18n: file: chat/chatwindow.ui:241 #. i18n: ectx: property (whatsThis), widget (QToolButton, standardEmoticonButton_) #: rc.cpp:20 -msgid "Click this button to show all default Live Messenger emoticons, so you can easily insert them in your messages." -msgstr "Kliknite na toto tlačidlo pre zobrazenie všetkých štandardných Live Messenger emotikon, takže ich budete môcť vložiť do Vašich správ." +msgid "" +"Click this button to show all default Live Messenger emoticons, so you can " +"easily insert them in your messages." +msgstr "" +"Kliknite na toto tlačidlo pre zobrazenie všetkých štandardných Live " +"Messenger emotikon, takže ich budete môcť vložiť do Vašich správ." #. i18n: file: chat/chatwindow.ui:257 #. i18n: ectx: property (toolTip), widget (QToolButton, customEmoticonButton_) @@ -4226,8 +4659,12 @@ msgstr "Vlastné emotikony" #. i18n: file: chat/chatwindow.ui:260 #. i18n: ectx: property (whatsThis), widget (QToolButton, customEmoticonButton_) #: rc.cpp:26 -msgid "Click this button to show all custom emoticons, so you can easily insert them in your messages." -msgstr "Kliknite na toto tlačidlo pre zobrazenie všetkých vlastných emotikon, takže ich budete môcť vložiť do Vašich správ." +msgid "" +"Click this button to show all custom emoticons, so you can easily insert " +"them in your messages." +msgstr "" +"Kliknite na toto tlačidlo pre zobrazenie všetkých vlastných emotikon, takže " +"ich budete môcť vložiť do Vašich správ." #. i18n: file: chat/chatwindow.ui:279 #. i18n: ectx: property (whatsThis), widget (QToolButton, winksButton_) @@ -4324,15 +4761,18 @@ msgstr "Počiatočné skupiny" #. i18n: file: dialogs/addcontactdialog.ui:47 #. i18n: ectx: property (whatsThis), widget (QLabel, label) #: rc.cpp:86 -msgid "Enter here the email address of the person you wish to add to your contact list" -msgstr "Zadajte sem e-mailovú adresu osoby, ktorú chcete pridať do Vášho zoznamu kontaktov" +msgid "" +"Enter here the email address of the person you wish to add to your contact " +"list" +msgstr "" +"Zadajte sem e-mailovú adresu osoby, ktorú chcete pridať do Vášho zoznamu " +"kontaktov" #. i18n: file: dialogs/addcontactdialog.ui:50 #. i18n: ectx: property (text), widget (QLabel, label) #. i18n: file: initialview.ui:160 #. i18n: ectx: property (text), widget (QLabel, TextLabel2) -#: rc.cpp:89 -#: rc.cpp:284 +#: rc.cpp:89 rc.cpp:284 msgid "Email address:" msgstr "E-mailová adresa:" @@ -4351,8 +4791,11 @@ msgstr "Vybrať súbor s obrázkom:" #. i18n: file: dialogs/awaymessagedialog.ui:19 #. i18n: ectx: property (whatsThis), widget (QLabel, label) #: rc.cpp:101 -msgid "Enter a message to be automatically sent to people who try to message you." -msgstr "Napíšte správu, ktorá bude automaticky odoslaná ľuďom, ktorí sa Vám pokúsia písať." +msgid "" +"Enter a message to be automatically sent to people who try to message you." +msgstr "" +"Napíšte správu, ktorá bude automaticky odoslaná ľuďom, ktorí sa Vám pokúsia " +"písať." #. i18n: file: dialogs/awaymessagedialog.ui:22 #. i18n: ectx: property (text), widget (QLabel, label) @@ -4489,8 +4932,14 @@ msgstr "&Vyčistiť vyrovnávaciu pamäť" #. i18n: file: dialogs/contactpropertiesdialog.ui:403 #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:180 -msgid "You can choose to hide any emoticon received from this contact. Just right-click on a received emoticon and choose \"Hide this Emoticon\". With this page, you can restore the hidden emoticons." -msgstr "Môžete si vybrať skryť akúkoľvek emotikonu prijatú od tohto kontaktu. Iba kliknite pravým tlačidlom na prijatú emotikonu a vyberte \"Skryť túto emotikonu\". Pomocou tejto stránky môžete obnoviť skryté emotikony." +msgid "" +"You can choose to hide any emoticon received from this contact. Just " +"right-click on a received emoticon and choose \"Hide this Emoticon\". With " +"this page, you can restore the hidden emoticons." +msgstr "" +"Môžete si vybrať skryť akúkoľvek emotikonu prijatú od tohto kontaktu. " +"Iba kliknite pravým tlačidlom na prijatú emotikonu a vyberte \"Skryť túto " +"emotikonu\". Pomocou tejto stránky môžete obnoviť skryté emotikony." #. i18n: file: dialogs/contactpropertiesdialog.ui:477 #. i18n: ectx: property (toolTip), widget (QPushButton, removeEmoticonButton_) @@ -4663,14 +5112,20 @@ msgstr "&Zavrieť" #. i18n: file: initialview.ui:97 #. i18n: ectx: property (toolTip), widget (QLabel, pictureLabel_) #: rc.cpp:281 -msgid "Click here to display the options for the currently selected account, or scroll using the mouse wheel to switch between the saved accounts" -msgstr "Kliknite pre zobrazenie možností pre aktuálne vybrané konto, alebo použite koliesko myši pre prepnutie medzi uloženými kontami" +msgid "" +"Click here to display the options for the currently selected account, " +"or scroll using the mouse wheel to switch between the saved accounts" +msgstr "" +"Kliknite pre zobrazenie možností pre aktuálne vybrané konto, alebo " +"použite koliesko myši pre prepnutie medzi uloženými kontami" #. i18n: file: initialview.ui:179 #. i18n: ectx: property (toolTip), widget (KComboBox, handleCombobox_) #: rc.cpp:287 -msgid "Enter here the email address of your registered Passport or Live account" -msgstr "Zadajte e-mailovú adresu Vášho registrovaného Passport, alebo Live konta" +msgid "" +"Enter here the email address of your registered Passport or Live account" +msgstr "" +"Zadajte e-mailovú adresu Vášho registrovaného Passport, alebo Live konta" #. i18n: file: initialview.ui:195 #. i18n: ectx: property (text), widget (QLabel, TextLabel3) @@ -4711,8 +5166,11 @@ msgstr "Zapamä&tať konto" #. i18n: file: initialview.ui:285 #. i18n: ectx: property (toolTip), widget (QCheckBox, rememberPasswordCheckBox_) #: rc.cpp:311 -msgid "If you choose to remember an account within KMess, you can also save its password" -msgstr "Ak vyberiete zapamätať konto v rámci KMess, môžete tiež uložiť jeho heslo" +msgid "" +"If you choose to remember an account within KMess, you can also save its " +"password" +msgstr "" +"Ak vyberiete zapamätať konto v rámci KMess, môžete tiež uložiť jeho heslo" #. i18n: file: initialview.ui:288 #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) @@ -4729,8 +5187,11 @@ msgstr "Prihlásiť automaticky" #. i18n: file: initialview.ui:345 #. i18n: ectx: property (toolTip), widget (QPushButton, connectButton_) #: rc.cpp:323 -msgid "Click this button to start using KMess, or to cancel a connection attempt" -msgstr "Kliknite na toto tlačidlo, ak chcete začať používať KMess, alebo zrušiť pripojenie" +msgid "" +"Click this button to start using KMess, or to cancel a connection attempt" +msgstr "" +"Kliknite na toto tlačidlo, ak chcete začať používať KMess, alebo zrušiť " +"pripojenie" #. i18n: file: initialview.ui:444 #. i18n: ectx: property (text), widget (KUrlLabel, newAccountLabel_) @@ -4747,8 +5208,13 @@ msgstr "https://accountservices.passport.net/reg.srf" #. i18n: file: initialview.ui:450 #. i18n: ectx: property (tipText), widget (KUrlLabel, newAccountLabel_) #: rc.cpp:335 -msgid "Click here to register a new Live account, which you can use to connect to MSN.
      You can also use your existing email address" -msgstr "Kliknite pre registráciu nového Live konta, ktoré môžete použiť pre pripojenie k MSN.
      Taktiež môžete použiť existujúcu e-mailovú adresu" +msgid "" +"Click here to register a new Live account, which you can use to " +"connect to MSN.
      You can also use your existing email address" +msgstr "" +"Kliknite pre registráciu nového Live konta, ktoré môžete použiť pre " +"pripojenie k MSN.
      Taktiež môžete použiť existujúcu e-mailovú adresu" #. i18n: file: initialview.ui:479 #. i18n: ectx: property (text), widget (KUrlLabel, forgottenPasswordLabel_) @@ -4765,8 +5231,12 @@ msgstr "https://login.live.com/resetpw.srf" #. i18n: file: initialview.ui:485 #. i18n: ectx: property (tipText), widget (KUrlLabel, forgottenPasswordLabel_) #: rc.cpp:344 -msgid "Click here to go to the Live web site, to reset your account's password" -msgstr "Kliknite sem pre prechod na Live web stránku, kde sa resetne heslo Vášho konta" +msgid "" +"Click here to go to the Live web site, to reset your account's " +"password" +msgstr "" +"Kliknite sem pre prechod na Live web stránku, kde sa resetne heslo " +"Vášho konta" #. i18n: file: kmessinterfaceui.rc:5 #. i18n: ectx: Menu (file) @@ -4816,8 +5286,12 @@ msgstr "&Meno:" #. i18n: file: settings/accountpage.ui:60 #. i18n: ectx: property (whatsThis), widget (QLabel, handleLabel_4) #: rc.cpp:368 -msgid "Enter the email address of your MSN Passport account. You can register a new account at http://register.passport.com/" -msgstr "Zadajte e-mailovú adresu Vášho MSN Passport konta. Nové konto si môžete vytvoriť na http://register.passport.com/" +msgid "" +"Enter the email address of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" +"Zadajte e-mailovú adresu Vášho MSN Passport konta. Nové konto si môžete " +"vytvoriť na http://register.passport.com/" #. i18n: file: settings/accountpage.ui:63 #. i18n: ectx: property (text), widget (QLabel, handleLabel_4) @@ -4828,8 +5302,12 @@ msgstr "&E-mailová adresa:" #. i18n: file: settings/accountpage.ui:79 #. i18n: ectx: property (whatsThis), widget (QLabel, passwordLabel_) #: rc.cpp:374 -msgid "Enter the password of your MSN Passport account. You can register a new account at http://register.passport.com/" -msgstr "Zadajte heslo Vášho MSN Passport konta. Nové konto si môžete vytvoriť na http://register.passport.com/" +msgid "" +"Enter the password of your MSN Passport account. You can register a new " +"account at http://register.passport.com/" +msgstr "" +"Zadajte heslo Vášho MSN Passport konta. Nové konto si môžete vytvoriť na " +"http://register.passport.com/" #. i18n: file: settings/accountpage.ui:82 #. i18n: ectx: property (text), widget (QLabel, passwordLabel_) @@ -4846,8 +5324,16 @@ msgstr "Kliknite sem, ak chcete mať uložené heslo pomocou KMess" #. i18n: file: settings/accountpage.ui:114 #. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberPasswordCheckBox_) #: rc.cpp:383 -msgid "If you enable this option, KMess will save your account's password. This way you will not have to enter your password on every start up, in order to log in. Please keep in mind, that other persons that have access to this computer may easily log in to your account, if this option is enabled." -msgstr "Ak povolíte túto možnosť, KMESS uloží Vaše heslo konta. Týmto spôsobom nebudete musieť zadať heslo pri každom spustení. Majte na pamäti, že iné osoby, ktoré majú prístup k tomuto počítaču, sa môže prihlásiť k Vášmu kontu, ak je táto možnosť povolená." +msgid "" +"If you enable this option, KMess will save your account's password. This way " +"you will not have to enter your password on every start up, in order to log " +"in. Please keep in mind, that other persons that have access to this " +"computer may easily log in to your account, if this option is enabled." +msgstr "" +"Ak povolíte túto možnosť, KMESS uloží Vaše heslo konta. Týmto spôsobom " +"nebudete musieť zadať heslo pri každom spustení. Majte na pamäti, že iné " +"osoby, ktoré majú prístup k tomuto počítaču, sa môže prihlásiť k Vášmu " +"kontu, ak je táto možnosť povolená." #. i18n: file: settings/accountpage.ui:117 #. i18n: ectx: property (text), widget (QCheckBox, rememberPasswordCheckBox_) @@ -4877,13 +5363,19 @@ msgstr "&Nepoužívať" #. i18n: ectx: property (whatsThis), widget (QCheckBox, rememberCheckbox_) #: rc.cpp:407 msgid "" -"The option \"Remember account\" was left unchecked while logging in, so your settings will not be saved by default. Enable this option if you want to save your account settings permanently on this system.\n" +"The option \"Remember account\" was left unchecked while logging in, " +"so your settings will not be saved by default. Enable this option if you " +"want to save your account settings permanently on this system.\n" "\n" -"It is recommended to enable this option, unless you are using KMess as guest or you are using a public system (e.g. Internet cafe)." +"It is recommended to enable this option, unless you are using KMess as guest " +"or you are using a public system (e.g. Internet cafe)." msgstr "" -"Možnosť \"Zapamätať heslo\" nebola zaškrtnutá počas prihlasovania, takže Vaše nastavenia nebudú štandardne uložené. Povolte túto možnosť ak chcete uložiť nastavenia Vášho konta v tomto systéme.\n" +"Možnosť \"Zapamätať heslo\" nebola zaškrtnutá počas prihlasovania, " +"takže Vaše nastavenia nebudú štandardne uložené. Povolte túto možnosť ak " +"chcete uložiť nastavenia Vášho konta v tomto systéme.\n" "\n" -"Je doporučené nezaškrtávať túto možnosť ak používate KMess ako hosť, alebo používate verejný systém (napr. Internet cafe)." +"Je doporučené nezaškrtávať túto možnosť ak používate KMess ako hosť, alebo " +"používate verejný systém (napr. Internet cafe)." #. i18n: file: settings/accountpage.ui:294 #. i18n: ectx: property (text), widget (QCheckBox, rememberCheckbox_) @@ -4918,14 +5410,22 @@ msgstr "Tu môžete vybrať, aký stav má KMess nastaviť po prihlásení." #. i18n: file: settings/accountpage.ui:375 #. i18n: ectx: property (whatsThis), widget (QLabel, verifyLabel_) #: rc.cpp:430 -msgid "You need to connect to the Passport site to confirm that your email address exists." -msgstr "Potrebujete sa pripojiť k Passport stránke pre potvrdenie, že Vaša e-mailová adresa existuje." +msgid "" +"You need to connect to the Passport site to confirm that your email address " +"exists." +msgstr "" +"Potrebujete sa pripojiť k Passport stránke pre potvrdenie, že Vaša e-mailová " +"adresa existuje." #. i18n: file: settings/accountpage.ui:378 #. i18n: ectx: property (text), widget (QLabel, verifyLabel_) #: rc.cpp:433 -msgid "You cannot change your friendly name because your Passport email address is not verified." -msgstr "Nemôžete meniť Vaše priateľské meno, pretože Vaša Passport e-mailová adresa nie je overená." +msgid "" +"You cannot change your friendly name because your Passport email address is " +"not verified." +msgstr "" +"Nemôžete meniť Vaše priateľské meno, pretože Vaša Passport e-mailová adresa " +"nie je overená." #. i18n: file: settings/accountpage.ui:418 #. i18n: ectx: property (text), widget (KUrlLabel, verifyButton_) @@ -4942,14 +5442,24 @@ msgstr "Prejsť na accountservices.passport.net" #. i18n: file: settings/accountpage.ui:446 #. i18n: ectx: property (whatsThis), widget (QLabel, registerLabel_) #: rc.cpp:442 -msgid "You need a Passport account to connect to the Live Messenger network. You can register your current email address at register.passport.com or use a Live Mail account to connect." -msgstr "Pre pripojenie k sieti Live Messenger, potrebujete Passport konto. Môžete si zaregistrovať Vašu aktuálnu e-mailovú adresu na register.passport.com, alebo použiť pre pripojenie konto služby Hotmail." +msgid "" +"You need a Passport account to connect to the Live Messenger network. " +"You can register your current email address at register.passport.com or use " +"a Live Mail account to connect." +msgstr "" +"Pre pripojenie k sieti Live Messenger, potrebujete Passport konto. " +"Môžete si zaregistrovať Vašu aktuálnu e-mailovú adresu na register.passport." +"com, alebo použiť pre pripojenie konto služby Hotmail." #. i18n: file: settings/accountpage.ui:449 #. i18n: ectx: property (text), widget (QLabel, registerLabel_) #: rc.cpp:445 -msgid "To connect to the Live Messenger service, you will need to register an email address as Passport account." -msgstr "Ak sa chcete pripojiť k službe Live Messenger, musíte zaregistrovať e-mailovú adresu ako Passport konto." +msgid "" +"To connect to the Live Messenger service, you will need to register an email " +"address as Passport account." +msgstr "" +"Ak sa chcete pripojiť k službe Live Messenger, musíte zaregistrovať e-" +"mailovú adresu ako Passport konto." #. i18n: file: settings/accountpage.ui:489 #. i18n: ectx: property (text), widget (KUrlLabel, registerButton_) @@ -4972,8 +5482,14 @@ msgstr "&Možnosti stavu" #. i18n: file: settings/accountpage.ui:522 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useIdleTimerCheckBox_) #: rc.cpp:457 -msgid "If enabled, your status will be changed automatically to \"Idle\" when you are not using the computer for a few minutes. If this option is not available, KMess was built without support for this feature." -msgstr "Ak zapnuté, Váš stav bude automaticky zmenený na \"Nečinný \", keď nepoužívate počítač pár minút. Ak nie je dostupná táto možnosť, KMess bol vytvorený bez podpory tejto funkcie." +msgid "" +"If enabled, your status will be changed automatically to \"Idle\" when you " +"are not using the computer for a few minutes. If this option is not " +"available, KMess was built without support for this feature." +msgstr "" +"Ak zapnuté, Váš stav bude automaticky zmenený na \"Nečinný \", keď " +"nepoužívate počítač pár minút. Ak nie je dostupná táto možnosť, KMess bol " +"vytvorený bez podpory tejto funkcie." #. i18n: file: settings/accountpage.ui:525 #. i18n: ectx: property (text), widget (QCheckBox, useIdleTimerCheckBox_) @@ -4987,10 +5503,9 @@ msgstr "Zmeniť stav na \"&Nečinný \" keď neaktívny" #. i18n: ectx: property (whatsThis), widget (QSpinBox, idleTimeSpinBox_) #. i18n: file: settings/accountpage.ui:582 #. i18n: ectx: property (whatsThis), widget (QLabel, idleLabel2_) -#: rc.cpp:466 -#: rc.cpp:472 -#: rc.cpp:475 -msgid "Controls the number of minutes before KMess changes the status to \"Idle\"." +#: rc.cpp:466 rc.cpp:472 rc.cpp:475 +msgid "" +"Controls the number of minutes before KMess changes the status to \"Idle\"." msgstr "Určuje počet sekúnd, kedy KMess zmení stav na \"Nečinný \"." #. i18n: file: settings/accountpage.ui:559 @@ -5008,20 +5523,33 @@ msgstr "minútach" #. i18n: file: settings/accountpage.ui:618 #. i18n: ectx: property (toolTip), widget (QLabel, needXScreensaverLabel_) #: rc.cpp:481 -msgid "This happens because KMess was built without support for the \"XScreenSaver\" Xorg extension, which is used to detect user activity. Refer to your package manager for more details." -msgstr "Toto sa stalo, pretože bol KMess vytvorený bez podpory pre \"XScreenSaver\" Xorg rozšírenie, ktoré je použité na detekciu používateľskej aktivity. Pre viac informácií sa obráťte na Vášho tvorcu balíka." +msgid "" +"This happens because KMess was built without support for the " +"\"XScreenSaver\" Xorg extension, which is used to detect user activity. " +"Refer to your package manager for more details." +msgstr "" +"Toto sa stalo, pretože bol KMess vytvorený bez podpory pre " +"\"XScreenSaver\" Xorg rozšírenie, ktoré je použité na detekciu " +"používateľskej aktivity. Pre viac informácií sa obráťte na Vášho tvorcu " +"balíka." #. i18n: file: settings/accountpage.ui:621 #. i18n: ectx: property (text), widget (QLabel, needXScreensaverLabel_) #: rc.cpp:484 msgid "Cannot enable auto idle: KMess was built without inactivity detection." -msgstr "Nepodarilo sa povoliť automatickú nečinnosť: KMess bol vytvorený bez detekcie činnosti." +msgstr "" +"Nepodarilo sa povoliť automatickú nečinnosť: KMess bol vytvorený bez " +"detekcie činnosti." #. i18n: file: settings/accountpage.ui:647 #. i18n: ectx: property (toolTip), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) #: rc.cpp:487 -msgid "If enabled, you will not receive any notifications when your status is set to \"Busy\"." -msgstr "Ak je povolené, nebudete prijímať žiadne upozornenia, keď je Váš stav nastavený ako \"Nemám čas\"." +msgid "" +"If enabled, you will not receive any notifications when your status is set " +"to \"Busy\"." +msgstr "" +"Ak je povolené, nebudete prijímať žiadne upozornenia, keď je Váš stav " +"nastavený ako \"Nemám čas\"." #. i18n: file: settings/accountpage.ui:650 #. i18n: ectx: property (text), widget (QCheckBox, hideNotificationsWhenBusyCheckBox_) @@ -5038,8 +5566,12 @@ msgstr "Uložené kontá:" #. i18n: file: settings/accountsmanagerpage.ui:76 #. i18n: ectx: property (toolTip), widget (QPushButton, addAccountButton_) #: rc.cpp:496 -msgid "Click here to create a new KMess account for an email already associated to a Live account" -msgstr "Kliknite pre vytvorenie nového KMess konta pre už priradený e-mail ku Live kontu" +msgid "" +"Click here to create a new KMess account for an email already associated to " +"a Live account" +msgstr "" +"Kliknite pre vytvorenie nového KMess konta pre už priradený e-mail ku Live " +"kontu" #. i18n: file: settings/accountsmanagerpage.ui:79 #. i18n: ectx: property (text), widget (QPushButton, addAccountButton_) @@ -5075,21 +5607,34 @@ msgstr "&Odstrániť" #. i18n: ectx: property (toolTip), widget (QCheckBox, logChatsCheckBox_) #: rc.cpp:523 msgid "Enable this option to have your chats saved for later viewing" -msgstr "Povolte túto možnosť, ak chcete uložiť Vaše konverzácie pre neskoršie prehliadanie" +msgstr "" +"Povolte túto možnosť, ak chcete uložiť Vaše konverzácie pre neskoršie " +"prehliadanie" #. i18n: file: settings/chatloggingpage.ui:23 #. i18n: ectx: property (whatsThis), widget (QCheckBox, logChatsCheckBox_) #: rc.cpp:526 msgid "" -"

      If you enable chat logging, every chat you have will be saved in a certain place (which can be specified below).

      \n" -"

      The chat logs will allow you to find something in your old discussions, like a link, or you may use them to remember what you did say in a certain occasion to someone.

      \n" -"

      They may also pose some privacy issues though, because unauthorized people who use your account may read your chat logs.

      \n" -"

      Be sure to keep this option disabled on publicly accessible computers!

      " +"

      If you enable chat logging, every chat you have will be saved in a " +"certain place (which can be specified below).

      \n" +"

      The chat logs will allow you to find something in your old discussions, " +"like a link, or you may use them to remember what you did say in a certain " +"occasion to someone.

      \n" +"

      They may also pose some privacy issues though, because unauthorized " +"people who use your account may read your chat logs.

      \n" +"

      Be sure to keep this option disabled on publicly accessible computers!" +"

      " msgstr "" -"

      Ak povolíte zaznamenávanie konverzácie, každá konverzácia bude uložená na určitom mieste (ktoré môže byť špecifikované dolu).

      \n" -"

      Záznamy konverzácie Vám umožnia nájsť niečo v starších diskusiách, ako odkaz, alebo ich môže použiť aby ste si pamätali na to, čo ste niekomu povedali pri určitej príležitosti.

      \n" -"

      Hoci môžu tiež predstavovať niektoré otázky ochrany súkromia, pretože neoprávnené osoby, ktoré používajú Vaše konto, môže čítať Vaše záznamy konverzácie.

      \n" -"

      Uistite sa, aby táto možnosť bola zakázaná na verejne prístupných počítačoch!

      " +"

      Ak povolíte zaznamenávanie konverzácie, každá konverzácia bude " +"uložená na určitom mieste (ktoré môže byť špecifikované dolu).

      \n" +"

      Záznamy konverzácie Vám umožnia nájsť niečo v starších diskusiách, ako " +"odkaz, alebo ich môže použiť aby ste si pamätali na to, čo ste niekomu " +"povedali pri určitej príležitosti.

      \n" +"

      Hoci môžu tiež predstavovať niektoré otázky ochrany súkromia, pretože " +"neoprávnené osoby, ktoré používajú Vaše konto, môže čítať Vaše záznamy " +"konverzácie.

      \n" +"

      Uistite sa, aby táto možnosť bola zakázaná na verejne prístupných " +"počítačoch!

      " #. i18n: file: settings/chatloggingpage.ui:26 #. i18n: ectx: property (text), widget (QCheckBox, logChatsCheckBox_) @@ -5100,8 +5645,12 @@ msgstr "Povoliť zaznamenávanie konverzácie" #. i18n: file: settings/chatloggingpage.ui:36 #. i18n: ectx: property (toolTip), widget (QGroupBox, saveChatsToFileCheckBox_) #: rc.cpp:535 -msgid "If enabled, KMess additionaly saves your chat logs as HTML or plain text files" -msgstr "Ak povolené, KMess dodatočne ukladá záznamy konverzácií ako HTML, alebo súbory s obyčajným textom" +msgid "" +"If enabled, KMess additionaly saves your chat logs as HTML or plain text " +"files" +msgstr "" +"Ak povolené, KMess dodatočne ukladá záznamy konverzácií ako HTML, alebo " +"súbory s obyčajným textom" #. i18n: file: settings/chatloggingpage.ui:39 #. i18n: ectx: property (title), widget (QGroupBox, saveChatsToFileCheckBox_) @@ -5113,7 +5662,8 @@ msgstr "Dodatočne uložiť záznamy konverzácie do súboru" #. i18n: ectx: property (toolTip), widget (QLabel, label_2) #: rc.cpp:541 msgid "With this option, you can choose how KMess will save your chats" -msgstr "S touto možnosťou môžete vybrať ako bude KMess ukladať Vaše konverzácie" +msgstr "" +"S touto možnosťou môžete vybrať ako bude KMess ukladať Vaše konverzácie" #. i18n: file: settings/chatloggingpage.ui:54 #. i18n: ectx: property (text), widget (QLabel, label_2) @@ -5127,14 +5677,22 @@ msgstr "Uložiť záznamy ako:" msgid "" "\n" "

      The file format you choose here is important.

      \n" -"

      Chat logs saved in the HTML format can be easily read in any web browser, but if they are opened on another computer, display pictures and emoticons cannot not be displayed.

      \n" -"

      Chat logs saved as plain text, on the other side, can be perfectly read everywhere, but they will not contain any text formatting, display pictures, or emoticons.

      \n" +"

      Chat logs saved in the HTML format can be easily read in any web browser, " +"but if they are opened on another computer, display pictures and emoticons " +"cannot not be displayed.

      \n" +"

      Chat logs saved as plain text, on the other side, can be perfectly read " +"everywhere, but they will not contain any text formatting, display pictures, " +"or emoticons.

      \n" "" msgstr "" "\n" "

      Formát súboru, ktorý ste tu vybrali je dôležitý.

      \n" -"

      Záznamy konverzácií uložené v HTML formáte môžu byť jednoducho čitateľné prehliadači, ale ak budú otvorené na inom počítači, obrázky a emotikony nemusia byť zobrazené.

      \n" -"

      Záznamy konverzácií uložené ako obyčajný text, môžu byť dobre čitateľné hocikde, ale nebudú zahŕňať formátovanie textu, obrázky, alebo emotikony.

      \n" +"

      Záznamy konverzácií uložené v HTML formáte môžu byť jednoducho čitateľné " +"prehliadači, ale ak budú otvorené na inom počítači, obrázky a emotikony " +"nemusia byť zobrazené.

      \n" +"

      Záznamy konverzácií uložené ako obyčajný text, môžu byť dobre čitateľné " +"hocikde, ale nebudú zahŕňať formátovanie textu, obrázky, alebo emotikony.\n" "" #. i18n: file: settings/chatloggingpage.ui:90 @@ -5152,14 +5710,24 @@ msgstr "Obyčajný text" #. i18n: file: settings/chatloggingpage.ui:134 #. i18n: ectx: property (toolTip), widget (QLabel, label) #: rc.cpp:560 -msgid "These options allow you to choose how KMess will organize your chat logs within the directory specified below." -msgstr "Tieto voľby Vám umožnia zvoliť, ako bude KMess organizovať záznamy konverzácií do priečinka uvedených nižšie." +msgid "" +"These options allow you to choose how KMess will organize your chat logs " +"within the directory specified below." +msgstr "" +"Tieto voľby Vám umožnia zvoliť, ako bude KMess organizovať záznamy " +"konverzácií do priečinka uvedených nižšie." #. i18n: file: settings/chatloggingpage.ui:137 #. i18n: ectx: property (whatsThis), widget (QLabel, label) #: rc.cpp:563 -msgid "Depending on which option you choose here, KMess will create some directories to help you keep your chat logs organized. Use the \"What's This?\" feature on a specific option for more details." -msgstr "V závislosti na možnostiach, ktoré si vyberiete, KMess vytvorí niekoľko priečinkov, ktoré Vám organizovane pomôžu udržať Vaše záznamy konverzácií. Použite \"Čo je toto?\" funkciu pre ďalšie detaily." +msgid "" +"Depending on which option you choose here, KMess will create some " +"directories to help you keep your chat logs organized. Use the \"What's This?" +"\" feature on a specific option for more details." +msgstr "" +"V závislosti na možnostiach, ktoré si vyberiete, KMess vytvorí " +"niekoľko priečinkov, ktoré Vám organizovane pomôžu udržať Vaše záznamy " +"konverzácií. Použite \"Čo je toto?\" funkciu pre ďalšie detaily." #. i18n: file: settings/chatloggingpage.ui:140 #. i18n: ectx: property (text), widget (QLabel, label) @@ -5178,16 +5746,23 @@ msgstr "Vytvoriť priečinok pre organizovanie konverzácií podľa roku" #: rc.cpp:572 msgid "" "

      This option tells KMess to divide your chat logs by year only.\n" -"You will find directories for each year of logged chatting; those will contain all of that year's chat logs, grouped together.

      \n" +"You will find directories for each year of logged chatting; those will " +"contain all of that year's chat logs, grouped together.

      \n" "\n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/date-and-contact-name.html

      " +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/date-and-contact-name.html

      " msgstr "" -"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po rokoch.\n" -"Nájdete priečinky pre každý rok záznamov konverzácií; tie budú obsahovať všetky spolu zoskupené záznamy toho roku.

      \n" +"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po " +"rokoch.\n" +"Nájdete priečinky pre každý rok záznamov konverzácií; tie budú obsahovať " +"všetky spolu zoskupené záznamy toho roku.

      \n" "\n" -"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:

      \n" -"

      <priečinok záznamov konverzácií tu>/2008/dátum-a-meno-kontaktu.html

      " +"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:\n" +"

      <priečinok záznamov konverzácií tu>/2008/dátum-a-meno-kontaktu." +"html

      " #. i18n: file: settings/chatloggingpage.ui:166 #. i18n: ectx: property (text), widget (QRadioButton, yearRadioButton_) @@ -5199,22 +5774,33 @@ msgstr "Rok" #. i18n: ectx: property (toolTip), widget (QRadioButton, monthRadioButton_) #: rc.cpp:582 msgid "Create directories to organize chats by year then by month" -msgstr "Vytvoriť priečinok pre organizovanie konverzácií podľa roku a potom mesiaca" +msgstr "" +"Vytvoriť priečinok pre organizovanie konverzácií podľa roku a potom mesiaca" #. i18n: file: settings/chatloggingpage.ui:188 #. i18n: ectx: property (whatsThis), widget (QRadioButton, monthRadioButton_) #: rc.cpp:585 msgid "" -"

      This option tells KMess to divide your chat logs by year, then by month.\n" -"You will find some directories for each year of logged chatting. Each will contain a directory for each month where chats have been logged; and within those, you will find all of that month's chat logs grouped together.

      \n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/11/date-and-contact-name.html

      " +"

      This option tells KMess to divide your chat logs by year, then by " +"month.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, you will find all of that month's chat logs grouped together.

      \n" +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/11/date-and-contact-name.html

      " msgstr "" -"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po rokoch a po mesiacoch.\n" -"Nájdete priečinky pre každý rok záznamov konverzácií. Každý bude obsahovať priečinok pre každý mesiac. Tie budú obsahovať všetky spolu zoskupené záznamy všetkých mesiacov toho roku.

      \n" +"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po rokoch " +"a po mesiacoch.\n" +"Nájdete priečinky pre každý rok záznamov konverzácií. Každý bude obsahovať " +"priečinok pre každý mesiac. Tie budú obsahovať všetky spolu zoskupené " +"záznamy všetkých mesiacov toho roku.

      \n" "\n" -"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:

      \n" -"

      <priečinok záznamov konverzácií tu>/2008/11/dátum-a-meno-kontaktu.html

      " +"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:\n" +"

      <priečinok záznamov konverzácií tu>/2008/11/dátum-a-meno-kontaktu." +"html

      " #. i18n: file: settings/chatloggingpage.ui:191 #. i18n: ectx: property (text), widget (QRadioButton, monthRadioButton_) @@ -5226,23 +5812,34 @@ msgstr "Rok potom Mesiac" #. i18n: ectx: property (toolTip), widget (QRadioButton, dayRadioButton_) #: rc.cpp:594 msgid "Create directories to organize chats by year, by month, then by day" -msgstr "Vytvoriť priečinok pre organizovanie konverzácií podľa roku, mesiaca a potom dňa" +msgstr "" +"Vytvoriť priečinok pre organizovanie konverzácií podľa roku, mesiaca a potom " +"dňa" #. i18n: file: settings/chatloggingpage.ui:211 #. i18n: ectx: property (whatsThis), widget (QRadioButton, dayRadioButton_) #: rc.cpp:597 msgid "" -"

      This option tells KMess to divide your chat logs by year, then by month, then again by day.\n" -"You will find some directories for each year of logged chatting. Each will contain a directory for each month where chats have been logged; and within those, the chats will be further divided in a directory for each day.

      \n" +"

      This option tells KMess to divide your chat logs by year, then by " +"month, then again by day.\n" +"You will find some directories for each year of logged chatting. Each will " +"contain a directory for each month where chats have been logged; and within " +"those, the chats will be further divided in a directory for each day.

      \n" "\n" -"

      A chat had on November 29, 2008 will be saved in your chat logs directory as:

      \n" -"

      <chat logs directory here>/2008/11/29/date-and-contact-name.html

      " +"

      A chat had on November 29, 2008 will be saved in your chat logs directory " +"as:

      \n" +"

      <chat logs directory here>/2008/11/29/date-and-contact-name.html" msgstr "" -"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po rokoch, mesiacoch a potom po dňoch.\n" -"Nájdete priečinky pre každý rok záznamov konverzácií. Každý bude obsahovať priečinok pre každý mesiac. Tie budú obsahovať priečinky pre každý deň.

      \n" +"

      Táto voľba vraví KMess rozdeliť Vaše záznamy konverzácií po rokoch, " +"mesiacoch a potom po dňoch.\n" +"Nájdete priečinky pre každý rok záznamov konverzácií. Každý bude obsahovať " +"priečinok pre každý mesiac. Tie budú obsahovať priečinky pre každý deň.

      \n" "\n" -"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:

      \n" -"

      <priečinok záznamov konverzácií tu>/2008/11/29/dátum-a-meno-kontaktu.html

      " +"

      Konverzácia z 29. novembra 2008 bude uložená v priečinku záznamov ako:\n" +"

      <priečinok záznamov konverzácií tu>/2008/11/29/dátum-a-meno-" +"kontaktu.html

      " #. i18n: file: settings/chatloggingpage.ui:214 #. i18n: ectx: property (text), widget (QRadioButton, dayRadioButton_) @@ -5254,13 +5851,19 @@ msgstr "Rok, mesiac a potom deň" #. i18n: ectx: property (toolTip), widget (QRadioButton, singleDirectoryRadioButton_) #: rc.cpp:607 msgid "Place all saved chat logs directly in the directory specified below" -msgstr "Miesto všetkých uložených záznamov konverzácií do dolu špecifikovaného priečinka" +msgstr "" +"Miesto všetkých uložených záznamov konverzácií do dolu špecifikovaného " +"priečinka" #. i18n: file: settings/chatloggingpage.ui:227 #. i18n: ectx: property (whatsThis), widget (QRadioButton, singleDirectoryRadioButton_) #: rc.cpp:610 -msgid "This option tells KMess to save all your chat logs in the same folder, without organizing them at all." -msgstr "Táto možnosť vraví KMess uložiť všetky záznamy konverzácií do toho istého priečinka, bez ich organizácie." +msgid "" +"This option tells KMess to save all your chat logs in the same folder, " +"without organizing them at all." +msgstr "" +"Táto možnosť vraví KMess uložiť všetky záznamy konverzácií do toho istého " +"priečinka, bez ich organizácie." #. i18n: file: settings/chatloggingpage.ui:230 #. i18n: ectx: property (text), widget (QRadioButton, singleDirectoryRadioButton_) @@ -5302,7 +5905,9 @@ msgstr "Št&ýl" #. i18n: ectx: property (whatsThis), widget (QLabel, textLabel1) #: rc.cpp:634 msgid "Allows you to change the theme KMess uses to display all chat messages." -msgstr "Umožňuje Vám zmeniť témy KMess, používané k zobrazeniu všetkých správ konverzácie." +msgstr "" +"Umožňuje Vám zmeniť témy KMess, používané k zobrazeniu všetkých správ " +"konverzácie." #. i18n: file: settings/chatstylepage.ui:41 #. i18n: ectx: property (text), widget (QLabel, textLabel1) @@ -5343,8 +5948,14 @@ msgstr "Povoľuje vzhľad žmurknutí v konverzačnom okne." #. i18n: file: settings/chatstylepage.ui:246 #. i18n: ectx: property (whatsThis), widget (QCheckBox, showWinksCheckBox_) #: rc.cpp:658 -msgid "If enabled, winks you send or receive will be displayed in the chat window. Please note that in order to use this feature, you need to have a working Flash-plugin installed." -msgstr "Ak je povolené, žmurknutie ktoré odošlete, alebo prijmete, bude zobrazené v okne konverzácie. Majte na pamäti, že ak chcete použiť túto funkciu, musíte mať nainštalovaný Flash zásuvný modul." +msgid "" +"If enabled, winks you send or receive will be displayed in the chat window. " +"Please note that in order to use this feature, you need to have a working " +"Flash-plugin installed." +msgstr "" +"Ak je povolené, žmurknutie ktoré odošlete, alebo prijmete, bude zobrazené v " +"okne konverzácie. Majte na pamäti, že ak chcete použiť túto funkciu, musíte " +"mať nainštalovaný Flash zásuvný modul." #. i18n: file: settings/chatstylepage.ui:249 #. i18n: ectx: property (text), widget (QCheckBox, showWinksCheckBox_) @@ -5355,8 +5966,14 @@ msgstr "Zobraziť &žmurknutia" #. i18n: file: settings/chatstylepage.ui:256 #. i18n: ectx: property (whatsThis), widget (QCheckBox, groupFollowupCheckbox_) #: rc.cpp:664 -msgid "This option enables the grouping of messages from the same contact. Whenever a contact sends you multiple messages, KMess will group those messages to one single message. The exact appearance depends on the chosen chat style." -msgstr "Toto nastavenie povoľuje zoskupovanie správ od rovnakého kontaktu. Keď kontakt používa hromadné správy, KMess zoskupuje tieto správy ako jednu správu. Presná podoba závisí na zvolenom štýle konverzácie." +msgid "" +"This option enables the grouping of messages from the same contact. Whenever " +"a contact sends you multiple messages, KMess will group those messages to " +"one single message. The exact appearance depends on the chosen chat style." +msgstr "" +"Toto nastavenie povoľuje zoskupovanie správ od rovnakého kontaktu. Keď " +"kontakt používa hromadné správy, KMess zoskupuje tieto správy ako jednu " +"správu. Presná podoba závisí na zvolenom štýle konverzácie." #. i18n: file: settings/chatstylepage.ui:259 #. i18n: ectx: property (text), widget (QCheckBox, groupFollowupCheckbox_) @@ -5409,8 +6026,12 @@ msgstr "Váš typ písma &správ:" #. i18n: file: settings/chatstylepage.ui:458 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useContactFontCheckBox_) #: rc.cpp:697 -msgid "This option allows you to override the font style and color of your contacts' messages with the chosen font style and color below." -msgstr "Táto možnosť nahradiť typ písma a farbu správ kontaktov, dolu zvoleným typom písma a farbou." +msgid "" +"This option allows you to override the font style and color of your " +"contacts' messages with the chosen font style and color below." +msgstr "" +"Táto možnosť nahradiť typ písma a farbu správ kontaktov, dolu zvoleným typom " +"písma a farbou." #. i18n: file: settings/chatstylepage.ui:461 #. i18n: ectx: property (text), widget (QCheckBox, useContactFontCheckBox_) @@ -5427,8 +6048,14 @@ msgstr "Formátovanie okna konverzácie" #. i18n: file: settings/chatstylepage.ui:542 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useFontEffectsCheckBox_) #: rc.cpp:706 -msgid "Enables the use of font effects. Typing *bold*, /italic/, and _underline_ causes those words to appear in a bold, italic or underlined font respectively." -msgstr "Povoľuje používať efekty písma. Písanie *bold*, /italic/, a _underline_spôsobí, že sa slová objavia v tomto poradí ako hrubé, šikmé, alebo podčiarknuté." +msgid "" +"Enables the use of font effects. Typing *bold*, /italic/, and " +"_underline_ causes those words to appear in a bold, italic or underlined " +"font respectively." +msgstr "" +"Povoľuje používať efekty písma. Písanie *bold*, /italic/, a " +"_underline_spôsobí, že sa slová objavia v tomto poradí ako hrubé, šikmé, " +"alebo podčiarknuté." #. i18n: file: settings/chatstylepage.ui:545 #. i18n: ectx: property (text), widget (QCheckBox, useFontEffectsCheckBox_) @@ -5440,10 +6067,13 @@ msgstr "Použiť &efekty písma v správach ako *bold*, /italic/, a _underline_" #. i18n: ectx: property (whatsThis), widget (QCheckBox, enableChatFormattingCheckBox_) #. i18n: file: settings/contactlistpage.ui:68 #. i18n: ectx: property (whatsThis), widget (QCheckBox, enableListFormattingCheckBox_) -#: rc.cpp:715 -#: rc.cpp:782 -msgid "Enables the use of \"Messenger Plus!\" formattings in the chat window. For example, [b]this text[/b] will be replaced with this text." -msgstr "Povoľuje použitie \"Messenger Plus!\" formátovania v okne konverzácie. Napríklad, [b]tento text[/b] bude nahradený týmto textom." +#: rc.cpp:715 rc.cpp:782 +msgid "" +"Enables the use of \"Messenger Plus!\" formattings in the chat window. " +"For example, [b]this text[/b] will be replaced with this text." +msgstr "" +"Povoľuje použitie \"Messenger Plus!\" formátovania v okne konverzácie. " +"Napríklad, [b]tento text[/b] bude nahradený týmto textom." #. i18n: file: settings/chatstylepage.ui:558 #. i18n: ectx: property (text), widget (QCheckBox, enableChatFormattingCheckBox_) @@ -5461,11 +6091,19 @@ msgstr "&Správanie" #. i18n: ectx: property (whatsThis), widget (QCheckBox, shakeNudgeCheckBox_) #: rc.cpp:724 msgid "" -"

      When contacts would like to have your attention they can send you a nudge. By default the chat window shakes when a nudge is received or sent. Disable this option if the shaking effect is too obtrusive.

      \n" -"

      Even if this option is enabled KMess still limits the shaking effect. Contacts may send multiple nudges at once, but KMess only shakes the chat window with the first nudge.

      " +"

      When contacts would like to have your attention they can send you a " +"nudge. By default the chat window shakes when a nudge is received or sent. " +"Disable this option if the shaking effect is too obtrusive.

      \n" +"

      Even if this option is enabled KMess still limits the shaking effect. " +"Contacts may send multiple nudges at once, but KMess only shakes the chat " +"window with the first nudge.

      " msgstr "" -"

      Ak chcú kontakty Vašu pozornosť, môžu odoslať štuchanec. Štandardne sa okno konverzácie zatrasie, keď je prijatý, alebo odoslaný štuchanec. Ak je tento efekt príliš obťažujúci, vypnite túto možnosť.

      \n" -"

      Ak je táto možnosť zapnutá, KMess stále obmedzuje trasúci sa efekt. Kontakty môžu odoslať viacej štuchancov naraz, ale KMess zatrasie oknom iba s prvým štuchancom.

      " +"

      Ak chcú kontakty Vašu pozornosť, môžu odoslať štuchanec. Štandardne " +"sa okno konverzácie zatrasie, keď je prijatý, alebo odoslaný štuchanec. Ak " +"je tento efekt príliš obťažujúci, vypnite túto možnosť.

      \n" +"

      Ak je táto možnosť zapnutá, KMess stále obmedzuje trasúci sa efekt. " +"Kontakty môžu odoslať viacej štuchancov naraz, ale KMess zatrasie oknom iba " +"s prvým štuchancom.

      " #. i18n: file: settings/chatstylepage.ui:592 #. i18n: ectx: property (text), widget (QCheckBox, shakeNudgeCheckBox_) @@ -5476,8 +6114,12 @@ msgstr "Zatriasť konverzačným &oknom, keď je prijatý, alebo odoslaný štuc #. i18n: file: settings/chatstylepage.ui:602 #. i18n: ectx: property (whatsThis), widget (QCheckBox, displayChatUserPictureCheckBox_) #: rc.cpp:734 -msgid "If this option is enabled, your own display picture will be shown in the contacts panel, along with the pictures of the contacts in that chat." -msgstr "Ak je táto možnosť povolená, Vaše vlastné zobrazenie obrázku sa objaví v paneli kontaktov, spolu s obrázkami kontaktov v tomto rozhovore." +msgid "" +"If this option is enabled, your own display picture will be shown in the " +"contacts panel, along with the pictures of the contacts in that chat." +msgstr "" +"Ak je táto možnosť povolená, Vaše vlastné zobrazenie obrázku sa objaví v " +"paneli kontaktov, spolu s obrázkami kontaktov v tomto rozhovore." #. i18n: file: settings/chatstylepage.ui:605 #. i18n: ectx: property (text), widget (QCheckBox, displayChatUserPictureCheckBox_) @@ -5518,8 +6160,14 @@ msgstr "Možnosti zobrazenia" #. i18n: file: settings/contactlistpage.ui:23 #. i18n: ectx: property (whatsThis), widget (QCheckBox, showEmailInfoCheckBox_) #: rc.cpp:755 -msgid "If enabled, a notification is shown when an email message is received in your inbox. The number of unread email messages is shown above the contact list. This option is only available for Live Mail accounts." -msgstr "Ak je povolené, zobrazí sa vyskakovacia správa, keď je vo Vašom inboxe prijatý e-mail. Počet neprečítaných e-mailov je zobrazený nad zoznamom kontaktov. Toto nastavenie je dostupné iba pre Live Mail kontá." +msgid "" +"If enabled, a notification is shown when an email message is received in " +"your inbox. The number of unread email messages is shown above the contact " +"list. This option is only available for Live Mail accounts." +msgstr "" +"Ak je povolené, zobrazí sa vyskakovacia správa, keď je vo Vašom inboxe " +"prijatý e-mail. Počet neprečítaných e-mailov je zobrazený nad zoznamom " +"kontaktov. Toto nastavenie je dostupné iba pre Live Mail kontá." #. i18n: file: settings/contactlistpage.ui:26 #. i18n: ectx: property (text), widget (QCheckBox, showEmailInfoCheckBox_) @@ -5530,8 +6178,12 @@ msgstr "Zobraziť počet &neprečítaných e-mailov" #. i18n: file: settings/contactlistpage.ui:33 #. i18n: ectx: property (whatsThis), widget (QCheckBox, nowListeningCheckBox_) #: rc.cpp:761 -msgid "If enabled, your contacts can see which song you are listening to. This information is retrieved from the currently active media player." -msgstr "Ak je povolené, KMess informuje kontakty čo počúvate. Táto informácia je získaná z práve aktívneho audio prehrávača aplikácií." +msgid "" +"If enabled, your contacts can see which song you are listening to. This " +"information is retrieved from the currently active media player." +msgstr "" +"Ak je povolené, KMess informuje kontakty čo počúvate. Táto informácia je " +"získaná z práve aktívneho audio prehrávača aplikácií." #. i18n: file: settings/contactlistpage.ui:36 #. i18n: ectx: property (text), widget (QCheckBox, nowListeningCheckBox_) @@ -5542,7 +6194,9 @@ msgstr "Zobraziť kontaktom, k&torú skladbu počúvam" #. i18n: file: settings/contactlistpage.ui:46 #. i18n: ectx: property (toolTip), widget (QCheckBox, showBirdCheckBox_) #: rc.cpp:770 -msgid "If enabled, the KMess logo will be displayed in the background of the contact list." +msgid "" +"If enabled, the KMess logo will be displayed in the background of the " +"contact list." msgstr "Ak je povolené, KMess logo bude zobrazené na pozadí zoznamu kontaktov." #. i18n: file: settings/contactlistpage.ui:49 @@ -5651,10 +6305,10 @@ msgstr "&Použiť KDE predvolený prehliadač" #. i18n: ectx: property (toolTip), widget (QRadioButton, useListedBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:177 #. i18n: ectx: property (toolTip), widget (QRadioButton, useListedMailClientRadio_) -#: rc.cpp:839 -#: rc.cpp:874 +#: rc.cpp:839 rc.cpp:874 msgid "Select this option to choose from a list of installed browsers." -msgstr "Zvoliť toto nastavenie na výber zo zoznamu nainštalovaných prehliadačov." +msgstr "" +"Zvoliť toto nastavenie na výber zo zoznamu nainštalovaných prehliadačov." #. i18n: file: settings/miscellaneouspage.ui:46 #. i18n: ectx: property (text), widget (QRadioButton, useListedBrowserRadio_) @@ -5666,17 +6320,16 @@ msgstr "&Použiť nainštalovaný prehliadač:" #. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:214 #. i18n: ectx: property (toolTip), widget (QRadioButton, useCustomMailClientRadio_) -#: rc.cpp:845 -#: rc.cpp:880 +#: rc.cpp:845 rc.cpp:880 msgid "Choose this option to enter the path to your favorite browser." -msgstr "Vybrať toto nastavenie pre zadanie cesty k Vášmu obľúbenému prehliadaču." +msgstr "" +"Vybrať toto nastavenie pre zadanie cesty k Vášmu obľúbenému prehliadaču." #. i18n: file: settings/miscellaneouspage.ui:83 #. i18n: ectx: property (text), widget (QRadioButton, useCustomBrowserRadio_) #. i18n: file: settings/miscellaneouspage.ui:217 #. i18n: ectx: property (text), widget (QRadioButton, useCustomMailClientRadio_) -#: rc.cpp:848 -#: rc.cpp:883 +#: rc.cpp:848 rc.cpp:883 msgid "&Specify a custom command:" msgstr "&Špecifikovať vlastný príkaz:" @@ -5684,11 +6337,14 @@ msgstr "&Špecifikovať vlastný príkaz:" #. i18n: ectx: property (whatsThis), widget (QLineEdit, customBrowserEdit_) #. i18n: file: settings/miscellaneouspage.ui:247 #. i18n: ectx: property (whatsThis), widget (QLineEdit, customMailClientEdit_) -#: rc.cpp:852 -#: rc.cpp:887 +#: rc.cpp:852 rc.cpp:887 #, no-c-format -msgid "Specify the path of a program to use to open links; a '%u' here will be replaced with the links' URL." -msgstr "Špecifikovať cestu programu použitému k otvoreniu odkazu; '%u' tu bude nahradený odkazom URL." +msgid "" +"Specify the path of a program to use to open links; a '%u' here will be " +"replaced with the links' URL." +msgstr "" +"Špecifikovať cestu programu použitému k otvoreniu odkazu; '%u' tu bude " +"nahradený odkazom URL." #. i18n: file: settings/miscellaneouspage.ui:126 #. i18n: ectx: property (text), widget (QLabel, customBrowserInfo_) @@ -5706,8 +6362,12 @@ msgstr "E-mailový klient" #. i18n: file: settings/miscellaneouspage.ui:157 #. i18n: ectx: property (whatsThis), widget (QCheckBox, useLiveMailCheckbox_) #: rc.cpp:862 -msgid "Check this box to use the Live Mail webmail site when you connect with accounts compatible with Live Mail." -msgstr "Zaškrtnite toto políčko ak používate Live Mail, keď sa pripojíte s kontom kompatibilným s Live Mail." +msgid "" +"Check this box to use the Live Mail webmail site when you connect with " +"accounts compatible with Live Mail." +msgstr "" +"Zaškrtnite toto políčko ak používate Live Mail, keď sa pripojíte s kontom " +"kompatibilným s Live Mail." #. i18n: file: settings/miscellaneouspage.ui:160 #. i18n: ectx: property (text), widget (QCheckBox, useLiveMailCheckbox_) @@ -5784,15 +6444,16 @@ msgstr "Kliknite sem, ak chcete povedať vývojárom čo sa Vám páčilo" #. i18n: ectx: property (whatsThis), widget (QToolButton, m_bugButton) #. i18n: file: utils/likeback/likebackbar.ui:87 #. i18n: ectx: property (whatsThis), widget (QToolButton, m_featureButton) -#: rc.cpp:918 -#: rc.cpp:925 -#: rc.cpp:932 -#: rc.cpp:939 +#: rc.cpp:918 rc.cpp:925 rc.cpp:932 rc.cpp:939 msgid "" -"Click on one of these icons to send your feedback to the developers of this application. You can disable the icons with the \"Show Feedback Icons\" checkbox in the Help menu.\n" +"Click on one of these icons to send your feedback to the developers of " +"this application. You can disable the icons with the \"Show Feedback Icons\" " +"checkbox in the Help menu.\n" " " msgstr "" -"Kliknite na jednu z týchto ikon pre odoslanie spätnej väzby vývojárom tejto aplikácie. Môžete zakázať ikony so zaškrtávacím políčkom \"Zobraziť ikony spätnej väzby\" v ponuke Pomocníka.\n" +"Kliknite na jednu z týchto ikon pre odoslanie spätnej väzby vývojárom " +"tejto aplikácie. Môžete zakázať ikony so zaškrtávacím políčkom \"Zobraziť " +"ikony spätnej väzby\" v ponuke Pomocníka.\n" " " #. i18n: file: utils/likeback/likebackbar.ui:49 @@ -5810,8 +6471,12 @@ msgstr "Kliknite sem, ak chcete povedať vývojárom o probléme v aplikácii" #. i18n: file: utils/likeback/likebackbar.ui:83 #. i18n: ectx: property (toolTip), widget (QToolButton, m_featureButton) #: rc.cpp:936 -msgid "Click here to tell the developers about new features you would like to have in this application" -msgstr "Kliknite sem, ak chcete povedať vývojárom o novej funkcii, ktorú by ste chceli mať v tejto aplikácii" +msgid "" +"Click here to tell the developers about new features you would like to have " +"in this application" +msgstr "" +"Kliknite sem, ak chcete povedať vývojárom o novej funkcii, ktorú by ste " +"chceli mať v tejto aplikácii" #. i18n: file: utils/likeback/likebackdialog.ui:48 #. i18n: ectx: property (text), widget (QLabel, label_2) @@ -5859,15 +6524,26 @@ msgstr "Zadajte e-mailovú adresu, pre spätný kontakt:" #. i18n: ectx: property (text), widget (QLabel, label) #: rc.cpp:964 msgid "" -"Specifying an email address will allow the developers to ask you for more information on your report, or to tell you when your feature will be implemented.
      \n" -"Your email address will not be used for anything else but this report." +"Specifying an email address will allow the developers to ask you for " +"more information on your report, or to tell you when your feature will be " +"implemented.
      \n" +"Your email address will not be used for anything else but this report." msgstr "" -"Zadanie e-mailovej adresy umožní vývojárom sa Vás spýtať viac informácií, alebo Vám oznámia, kedy bude implementovaná Vaša požadovaná funkcia.
      \n" -"Vaša e-mailová adresa nebude použitá na čokoľvek iné, iba pre túto správu." +"Zadanie e-mailovej adresy umožní vývojárom sa Vás spýtať viac " +"informácií, alebo Vám oznámia, kedy bude implementovaná Vaša požadovaná " +"funkcia.
      \n" +"Vaša e-mailová adresa nebude použitá na čokoľvek iné, iba pre túto správu." +"" + +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Tento kontakt Vás nemá vo svojom zozname kontaktov." #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Napíšte sem Vašu osobnú správu>" + #~ msgctxt "Label text" #~ msgid "" #~ "Handwriting is disabled: KMess cannot send drawings to some of the " @@ -5875,27 +6551,33 @@ msgstr "" #~ msgstr "" #~ "Režim ručného písania je zakázaný: KMess nemôže odoslať kresby niektorým " #~ "kontaktom." + #~ msgctxt "Label text" #~ msgid "Handwriting is disabled: KMess cannot send drawings to this contact." #~ msgstr "" #~ "Režim ručného písania je zakázaný: KMess nemôže odoslať kresby tomuto " #~ "kontaktu." + #~ msgctxt "Label text" #~ msgid "Winks are disabled: KMess cannot send winks to some of the contacts." #~ msgstr "" #~ "Žmurknutia sú zakázané: KMess nemôže odoslať žmurknutia niektorým " #~ "kontaktom." + #~ msgid "Write is blocking" #~ msgstr "Písanie je blokované" + #~ msgid "%1 pings lost" #~ msgstr "%1 pingy stratené" + #~ msgctxt "Dialog box text" #~ msgid "You can only use 7 characters for the emoticon shortcuts." #~ msgstr "Môžete použiť iba 7 znakov pre skratky emotikon." + #~ msgctxt "Dialog box title" #~ msgid "Invalid Emoticon Name" #~ msgstr "Neplatný názov emotikony" + #~ msgctxt "Dialog box title" #~ msgid "Replace Existing Emoticon" #~ msgstr "Nahradiť existujúcu emotikonu" - diff --git a/po/tr.po b/po/tr.po index 5928af8..2022857 100644 --- a/po/tr.po +++ b/po/tr.po @@ -4,17 +4,18 @@ msgid "" msgstr "" "Project-Id-Version: tr\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2010-03-01 06:55+0200\n" "Last-Translator: Uğur Çetin \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "Bilgisayarımdan uzaktayım" @@ -22,7 +23,7 @@ msgstr "Bilgisayarımdan uzaktayım" msgid "Your name" msgstr "Sizin adınız" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "siz@hotmail.com" @@ -115,8 +116,8 @@ msgid "" "KMess could not save the log for this chat:
      The chat logs " "directory, "%1", does not exist." msgstr "" -"KMess, bu sohbeti kaydedemedi:
      Sohbet kayıt dizini, "%" -"1", bulunamadı." +"KMess, bu sohbeti kaydedemedi:
      Sohbet kayıt dizini, "" +"%1", bulunamadı." #: chat/chat.cpp:969 msgctxt "Message shown in the chat window (when the wink name is unknown)" @@ -191,7 +192,8 @@ msgstr "" "için gösterilmedi. Hesap ayarlarından " "bunu etkinleştirebilirsiniz." -#: chat/chat.cpp:1262, kde-format +#: chat/chat.cpp:1262 +#, kde-format msgctxt "" "Message shown in the chat window, %1 is the contact's friendly name, %2 is " "the wink name" @@ -201,8 +203,7 @@ msgid "" "accountconfig'>account settings." msgstr "" "%1 kişisinden "%2" isimli göz kırpmasını aldınız, fakat göz " -"kırpmaların " -"gösterilmesi etkin değil. Bunu hesap ayarlarınızdan etkinleştirebilirsiniz." #: chat/chat.cpp:1292 @@ -211,14 +212,16 @@ msgctxt "Message shown in the chat window, %1 is the contact's friendly name" msgid "%1 has sent you a wink!" msgstr "%1 size bir göz kırpma gönderdi!" -#: chat/chat.cpp:1299, kde-format +#: chat/chat.cpp:1299 +#, kde-format msgctxt "" "Message shown in the chat window, %1 is the contact's friendly name, %2 is " "the wink name" msgid "%1 has sent you a wink: "%2"!" msgstr "%1 size bir göz kırpma gönderdi: "%2"!" -#: chat/chat.cpp:1321, kde-format +#: chat/chat.cpp:1321 +#, kde-format msgctxt "Message shown in the chat window, %1 is the contact's friendly name" msgid "" "You received a wink from %1, but it could not be displayed. Make sure you " @@ -227,7 +230,8 @@ msgstr "" "%1 size bir göz kırma gönderdi fakat gösterilemedi. "cabextract" " "uygulamasının kurulu olduğundan emin olun." -#: chat/chat.cpp:1330, kde-format +#: chat/chat.cpp:1330 +#, kde-format msgctxt "" "Message shown in the chat window, %1 is the contact's friendly name, %2 is " "the wink name" @@ -236,8 +240,8 @@ msgid "" "Make sure you have the "cabextract" program installed." msgstr "" "%1 kişisinden "%2" isimli göz kırpmasını aldınız, fakat " -"gösterilemedi. " -""cabextract" uygulamasının kurulu olduğundan emin olun." +"gösterilemedi. "cabextract" uygulamasının kurulu olduğundan emin " +"olun." #: chat/chat.cpp:1342 #, fuzzy, kde-format @@ -470,39 +474,39 @@ msgstr "Dosyanın Üzerine Yaz" msgid "Over&write" msgstr "Üzerine &Yaz" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "Bu İfadeyi &Ekle" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "Bu ifadeyi &gizle" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "E-&posta Gönder" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "Kişi &Ekle" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "E-&posta Adresini Kopyala" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "Bağlantıya &Git" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "&Adresi Kopyala" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "Sohbeti &Temizle" -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "Sohbeti &Dosyaya Kaydet..." @@ -641,7 +645,7 @@ msgstr "Yazıtipi &Rengi" msgid "C&lear Chat Window" msgstr "Sohbet Penceresini &Temizle" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." @@ -652,30 +656,30 @@ msgstr "" "invisible
      .
      Şöyle kısaltmalar da kullanabilirsiniz. /online, " "/phone." -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "Hatalı /status Sözdizimi" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "Grup sohbetinde /block komutunu kullanamazsınız." -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "/block komutu kullanılamaz" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "Grup sohbetinde /unblock komutunu kullanamazsınız." -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "/unblock komutu kullanılamaz!" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " @@ -684,35 +688,35 @@ msgstr "" "Bilinmeyen komut %1. Bu iletinin bir komut olarak algılanmasını " "istemiyorsanız, Başına bir tane daha / ekleyin." -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "Bilinmeyen Komut" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "El yazısı gönderilemedi: kişiler bunu desteklemiyor." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " "it." msgstr "El yazısı gönderilemedi: oluştururken bir hata oldu." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "Sohbet" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "%1 - Sohbet" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -722,37 +726,37 @@ msgstr "" "Menü çubuğunu saklamak istediğinizden emin misiniz? Tekrar göstermek " "için şu kısayol tuşunu kullanabilirsiniz: %1" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "Menü Gizleniyor" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "Çizim fırçası" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "Silme fırçası" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1 yazıyor..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 ve %2 yazıyor..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, fuzzy, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 ve diğer %3 kişi yazıyor..." -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -766,11 +770,11 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "Elyazısı kipi" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " @@ -779,7 +783,7 @@ msgstr "" "El yazısı etkin değil: kişilerden bazıları el yazısı iletilerini almayı " "desteklemiyor." -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -789,18 +793,18 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "Göz Kırpmaları" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" "Göz kırpma etkin değil: bazı kişiler göz kırpması almayı desteklemiyor." -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "Göz kırpmalar kapatıldı: bu kişi göz kırma almayı desteklemiyor." @@ -809,51 +813,51 @@ msgstr "Göz kırpmalar kapatıldı: bu kişi göz kırma almayı desteklemiyor. msgid "&Start Private Chat" msgstr "Ö&zel Sohbet Başlat" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "E-&posta Gönder" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "&Profili Göster" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "&Özellikler" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "Kişi &Ekle" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "Kişiye İzin &Ver" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "&Kişiyi Sil" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "Kişiyi E&ngelle" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "Kişinin &Engelini Kaldır" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "&Takma ad:" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "&Kişisel Mesaj" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "E-p&osta adresi:" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "Şarkı &Adı" @@ -879,15 +883,15 @@ msgstr "&Notlar" msgid "&Emoticons" msgstr "İ&fadeler" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "Ko&pyala" -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "Engellenmiş" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -895,18 +899,19 @@ msgctxt "" msgid "The contact is %1" msgstr "Kişi %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 #, fuzzy msgid "Downloading of display picture failed" msgstr "Görüntü resmi alınamadı" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 #, fuzzy msgid "" "An error occurred while trying to change the display picture.\n" @@ -936,7 +941,7 @@ msgstr "Yeni Ekle" msgid "Edit" msgstr "Düzenle" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "Sil" @@ -992,52 +997,52 @@ msgstr "Windows Live Messenger %1 uyumlu" msgid "Windows Live Messenger compatible" msgstr "Windows Live Messenger uyumlu" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "Bağlı" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "Meşgul" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "Uzakta" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "Kendiliğinden Yanıtlamayla Uzakta" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "Boşta" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "Döneceğim" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "Telefonda" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "Yemekte" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "Görünmez" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "Bağlı değil" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "&Durumum" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "Bağlantıyı Kes" @@ -1069,10 +1074,10 @@ msgid "" "brackets with text within (like [b] or [color], which can be text formatting " "options)
    " msgstr "" -"Kısayollar böyle olmamalıdır:
    • 7 karakterden uzun,
    • \"/\" " -"ile başlayan (irc komutlarıyla çakışan),
    • içinde yazı olan köşeli " -"parantez içeren ([b] ya da [color] gibi, metin biçimlendirmeyle " -"çakışabilir)
    " +"Kısayollar böyle olmamalıdır:
    • 7 karakterden uzun,
    • \"/\" ile " +"başlayan (irc komutlarıyla çakışan),
    • içinde yazı olan köşeli " +"parantez içeren ([b] ya da [color] gibi, metin biçimlendirmeyle çakışabilir)" +"
    " #: dialogs/addemoticondialog.cpp:303 #, kde-format @@ -1096,9 +1101,10 @@ msgid "" "permission problem, check if you have read/write access to directory " ""%1". Otherwise, your logs may be corrupted." msgstr "" -"Kayıtlarınız açılırken bir hata oluştu. Bu sorun genellikle izinlerden" -"kaynaklanır. "%1" dizinine okuma/yazma izniniz" -"olup olmadığını kontrol edin. Değilse kayıt dosyalarınız bozulmuş olabilir." +"Kayıtlarınız açılırken bir hata oluştu. Bu sorun genellikle " +"izinlerdenkaynaklanır. "%1" dizinine okuma/yazma " +"izninizolup olmadığını kontrol edin. Değilse kayıt dosyalarınız bozulmuş " +"olabilir." #: dialogs/chathistorydialog.cpp:310 msgctxt "Dialog box title" @@ -1142,16 +1148,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "%1 için Özellikler" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "Bağlı" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "Henüz görülmedi" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "Henüz ileti yok" @@ -1179,20 +1185,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "İstemci: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "Bu kişinizin görüntü resmini kullanmak istediğinizden emin misiniz?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "Görüntü Resmini Kopyala" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Seçilen dosya türü Phonon tarafından desteklenmiyor." -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "Desteklenmeyen dosya türü" @@ -1274,9 +1280,9 @@ msgid "" msgstr "" "Sunucuya komut göndermek sorun çıkarabilir.
    Nasıl yapacağınızı tam " "olarak bilmiyorsanız ve şanslıysanız sadece bağlantınız kopar, şansınız " -"yoksa " -"daha ciddi sonuçlara katlanmanız gerebilir.
    Uyarması bizden! " -"
    Bu iletiyi göndermeye devam etmek istediğinizden emin misiniz?" +"yoksa daha ciddi sonuçlara katlanmanız gerebilir.
    Uyarması " +"bizden!
    Bu iletiyi göndermeye devam etmek istediğinizden emin " +"misiniz?" #: dialogs/networkwindow.cpp:1305 msgid "" @@ -1703,11 +1709,11 @@ msgstr "Yeniden bağlanamıyor: bu hesabın kayıtlı bir parolası yok" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "" -"Yeniden bağlanmak için bir İnternet bağlantısı bekleniyor...
    Şimdi bağlan!" +"Yeniden bağlanmak için bir İnternet bağlantısı bekleniyor...
    Şimdi bağlan!" #: initialview.cpp:422 msgctxt "Status message on login screen" @@ -1768,7 +1774,7 @@ msgstr "Grup Ekle" msgid "Enter a name for the new group:" msgstr "Yeni grup için bir isim girin:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, fuzzy, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " @@ -1776,15 +1782,15 @@ msgid "" msgstr "" "Gerçekten %1 grubunu listenizden silmek istiyor musunuz?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "Kişiyi Sil" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "Sil ve Engelle" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1793,12 +1799,12 @@ msgid "" msgstr "" "%1 grubu boş değil! İçindeki tüm kişileri kaldırın ve tekrar deneyin!" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "Grup Kaldırma" -#: kmess.cpp:634 +#: kmess.cpp:637 #, fuzzy, kde-format msgctxt "dialog text" msgid "" @@ -1806,25 +1812,25 @@ msgid "" "list?" msgstr "Gerçekten %1 grubunu silmek istiyor musunuz?" -#: kmess.cpp:637 +#: kmess.cpp:640 #, fuzzy msgctxt "dialog button" msgid "Remove" msgstr "Sil" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "Bu özel bir gruptur ve değiştirilemez." -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "Grubu Yeniden Adlandır" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "Bu grup için yeni bir ad girin:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1834,21 +1840,21 @@ msgstr "" "

    %1 hesabıyla otomatik giriş yapılamaz:
    öncelikle hesap " "parolanızı kaydetmelisiniz!

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "Otomatik Giriş Başarısız" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "Bağlantı kesilmiş olabilir..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "Bağlantı koptu" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1856,7 +1862,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess şu dizinlerde arama yaptı:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, fuzzy, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1871,12 +1877,12 @@ msgstr "" "dosyası bu dizinlerde bulunamadı: %1

    Lütfen kurulumunuzu kontrol edin " "ve eksik dosyayı bu dizinlerden birine kopyalayın.

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "Bildirimlerde Hata" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1885,242 +1891,237 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "&Bağlan" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "Bağlantıyı &Kes" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "&Profilimi Göster" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "İ&zin Verilen Kişileri Göster" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "Bağlı &olmayanları göster" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "&Silinen Kişileri Göster" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "&Geçmiş Kutusunu Göster" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "&Kenar Çubuğunu Göster" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "&Boş Grupları Göster" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "Görüntü Resmi &Boyutu" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "&Kişileri şu ölçütle sırala" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "&Aktarım Penceresini Göster..." -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "Yeni &Kişi..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "Yeni &Grup..." -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "&Kişi Listesini Dışarı Aktar..." -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "Sohbet &Geçmişini Göster..." -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "Yeni &Hesap..." -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "Hesabı Yapılandır..." -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "&KMess'i Yapılandır..." -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "Seçim &Menüsünü Göster" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "Gösterme" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "Küçük" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "Orta" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "Büyük" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "Grup" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "Bağlı/Bağlı değil" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "Karışık" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "&Ağ Penceresini Göster..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1] %2 ile giriş yapıldı" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2 çevrimiçi oldu" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1] %2 çevrimdışı oldu" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "&Sohbet" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr "Gruptan &Sil" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "Gruba &Kopyala" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "Gruba &Taşı" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "Grubu &Aşağı Taşı" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "Grubu &Yukarı Taşı" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "Grubu &Sil" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "Grubu Y&eniden Adlandır" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "Bu kişinin listesinde siz yoksunuz." - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "E-posta adresi" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "İstemci" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "Evet" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "Hayır" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "Engellenmiş" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "Son görüldüğü" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "Son ileti" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, fuzzy, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "
    %1 (%2)" -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, fuzzy, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " msgid_plural "%1 contacts, " msgstr[0] "Kişiler" -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, fuzzy, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" msgid_plural "%1 online" msgstr[0] "Çe&vrimdışı olduklarında" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, fuzzy, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" msgid_plural "%1 contacts" msgstr[0] "Kişiler" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 #, fuzzy msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "Seçili ifadeyi yeniden adlandırmak için tıklayın." -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]Kişisel ileti belirlemek için tıklayın[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 #, fuzzy msgctxt "Default personal message tooltip" msgid "" @@ -2130,15 +2131,15 @@ msgstr "" "Buraya kişilerinizin görmesini istediğiniz bir ileti yazın: takma adınızla " "birlikte görüntülenecektir" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "Bu kişi için sohbet kaydı bulunamadı." -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "Sohbet geçmişi bulunamadı" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " @@ -2148,12 +2149,22 @@ msgstr "" "unutmayın; sohbetlerin kaydedilmesini istiyorsanız hesap ayarlarınızdan " "etkinleştirebilirsiniz." -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 yeni e-posta" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "Kişilerime ne &dinlediğimi göster" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "Kişilerime ne &dinlediğimi göster" + #: kmessviewdelegate.cpp:290 #, fuzzy, kde-format msgctxt "" @@ -2834,60 +2845,68 @@ msgstr "Uluslararasılaştırma düzeltmeleri, görüntü resminde sürükle bı msgid "Marco Mentasti" msgstr "Alaycı" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "Esinlenme ve çeşitli kodlar" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "Eski baloncuk kodu, p2p kodunun ilk hali, MSN etkileşimi yöneticisi" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "Bekleme zamanlayıcı kodu" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "Sistem çekmecesine küçültmede ekran görüntüsü alan kod" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "Özel hata yakalayıcısı uygulaması, Sistem çekmecesi simgesi uygulaması" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "" -"KNotify'ın odaklanmaması hatasının düzeltilmesi ve KWin odak çalma " -"önlemesi düzenlemesi" +"KNotify'ın odaklanmaması hatasının düzeltilmesi ve KWin odak çalma önlemesi " +"düzenlemesi" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 #, fuzzy msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" @@ -2898,40 +2917,40 @@ msgstr "" "Bu listede isminizin unutulduğunu düşünüyorsanız lütfen bizimle iletişime " "geçin!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "Ve siz?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Uğur Çetin" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "jnmbk@users.sourceforge.net" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "Açılışta kişi listesi penceresini gösterme" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "Bu e-posta adresi ile otomatik bağlan" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "Hata ayıklama testi çalıştır (sadece geliştirici inşası için)" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." msgstr "" "Resmi Live sunucusu yerine belirtilen sunucuya bağlan.\n" -"Yerel bir KMess Test Sunucusu'na bağlanmak için \"localhost\" veya \"127.0.0." -"1\" kullanın." +"Yerel bir KMess Test Sunucusu'na bağlanmak için \"localhost\" veya " +"\"127.0.0.1\" kullanın." #: model/contactlist.cpp:1824 msgid "Individuals" @@ -3573,77 +3592,77 @@ msgstr "KMess - MSN hatası" msgid "Trying the HTTP fallback..." msgstr "HTTP yöntemi deneniyor..." -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "Kimlik denetimi yapılıyor" -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "Kimlik denetimi başarılı" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "Bağlanıyor..." -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "Sunucudan bilinmeyen bir komut alındı: %1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, fuzzy, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" msgid_plural "%1 minutes" msgstr[0] "dakika" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, fuzzy, kde-format msgid "Server closes for maintenance in %1!" msgstr "Uyarı: Sunucu %1 dakika içinde bakım için kapanacak!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, fuzzy, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr "MSN Sunucusu bakım nedeniyle 1 dakika içinde kapanacağını bildirdi." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, fuzzy, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "" "KMess çevrimdışı mesajları işleyemedi.\n" "Ayrıntılar: %1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr "SOAP istemcisi geçerli değil." -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "Kimlik denetimi zaman aşımına uğradı" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "Kişi listesi alınıyor..." -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "

    Uyarı: %1

    " -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN Uyarısı" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, fuzzy, kde-format msgid "
    Internal error reason: %1" msgstr "KMess içinde bir hata oluştu: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 #, fuzzy msgctxt "Connection error: dialog box" msgid "" @@ -3652,18 +3671,18 @@ msgid "" msgstr "" "Kimlik doğrulaması başarısız, lütfen hesap adınızı ve şifrenizi kontrol edin" -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN hatası" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "

    %1 hesabıyla başka bir yerden bağlantı kurulmuş.

    " -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, fuzzy, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3674,7 +3693,7 @@ msgstr "" "MSN Messenger istemcisiyle veya\n" "başka bir yerden bağlantı kurmuş olabilirsiniz." -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3683,7 +3702,7 @@ msgstr "" "

    Live Messenger servisiyle bağlantı kurulamadı.
    Belki de ağa erişmek " "için oturum açmanız gerekiyordur?

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, fuzzy, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3696,15 +3715,15 @@ msgstr "" "KMess MSN messenger sunucularına bağlanamadı. MSN Messenger servisi geçici " "olarak hizmet dışı olabilir veya İnternet bağlantınızda bir sorun var." -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " msgstr "" -"

    İstemci oturumu çözülemedi
    Belki de qca2 ve qca2-plugin-ossl " -"kurulu değildir?

    " +"

    İstemci oturumu çözülemedi
    Belki de qca2 ve qca2-plugin-ossl kurulu " +"değildir?

    " -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " @@ -3712,15 +3731,14 @@ msgid "" msgstr "" "

    KMess, Live Messenger sunucularına bağlanamadı.
    KMess'in çalışması " "için belki de qca2 ve qca2-plugin-ossl'yi kurmanız gerekiyordur.
    MSN " -"ağının " -"şu an çalışmıyor olması da bu soruna yol açıyor olabilir.

    " +"ağının şu an çalışmıyor olması da bu soruna yol açıyor olabilir.

    " -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "

    Live Messenger servisiyle bağlantı kurulamadı.

    " -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, fuzzy, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3732,57 +3750,57 @@ msgstr "" "KMess MSN messenger sunucularına bağlanamadı. MSN Messenger servisi geçici " "olarak hizmet dışı olabilir veya İnternet bağlantınızda bir sorun var." -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "

    Hata: %1

    " -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messenger sunucusu hata verdi:

    %1

    " -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "

    Messenger Servisi Hatası: %1

    " -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "

    Live Messenger sunucusu hata verdi:

    %1

    " -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "

    KMess Hatası: %1

    " -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "

    KMess bir iç hatayla karşılaştı:

    %1

    " -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "

    Ağ bağlantısı koptu.

    " -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 #, fuzzy msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "Sunucuya bağlantı kaybedildi." -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3790,8 +3808,7 @@ msgid "" "i> %2

    " msgstr "" "

    Geliştirici bilgisi:
    Hata numarası: %1
    Hata " -"metni: %2

    " +"metni: %2

    " #: network/msnsocketbase.cpp:135 msgctxt "Dialog box message" @@ -3811,8 +3828,8 @@ msgid "" "%1 (Internal error code: %2)
    Response: %3 %4
    Redirection " "target: %5" msgstr "" -"%1 (İç hata kodu: %2)
    Cevap: %3 %4
    Yönlendirme " -"hedefi: %5" +"%1 (İç hata kodu: %2)
    Cevap: %3 %4
    Yönlendirme hedefi: " +"%5" #: network/msnsockettcp.cpp:366 #, fuzzy @@ -3830,13 +3847,13 @@ msgstr[0] "1 ping kayıp" msgid "The connection to the server was lost" msgstr "Sunucuya bağlantı kaybedildi." -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, fuzzy, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "Eklemeye çalıştığınız e-postanın MSN Messenger hesabı yok" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, fuzzy, kde-format msgctxt "Error message" msgid "" @@ -3844,44 +3861,44 @@ msgid "" "account!" msgstr "Eklemeye çalıştığınız e-postanın MSN Messenger hesabı yok" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "Geçersiz web servisi isteği (%1)" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, fuzzy, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr "Sunucu hazır değil" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 #, fuzzy msgctxt "Error message" msgid "Too many redirections by web service" msgstr "Giriş servisi çok fazla yönlendirme yapıyor" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 #, fuzzy msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "Sunucu hazır değil" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messenger web servisinde sorunlar var" -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "Geçersiz web servisi yanıtı %1 (%2)" -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "Web servisinden yanıt yok" @@ -4027,43 +4044,131 @@ msgstr "%1 telefonda" msgid "%1
    is out for lunch" msgstr "%1 yemeğe gitti" +#: notification/macnotification.cpp:61 +#, fuzzy +msgid "Contact changed status" +msgstr "Kişi zaten listenizde bulunuyor" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1 yeni e-posta" + +#: notification/macnotification.cpp:72 +#, fuzzy +msgid "A contact nudged you!" +msgstr "Yeni &Kişi" + +#: notification/macnotification.cpp:78 +#, fuzzy +msgid "A contact started a chat with you" +msgstr "Sizinle &sohbet başlatıldığında" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "Aynı gruptaki kişiler için" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "Kişi çevrimdışı" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "Kişi çevrimdışı" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "E-posta bildirimi" + #: notification/newemailnotification.cpp:92 #, fuzzy, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "Yeni e-posta:
    '%1'
    gönderen '%2'" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"Ana pencere kapatılınca KMess sistem çekmecesinde çalışmaya devam eder. " +"Uygulamadan çıkmak için 'Dosya' menüsünden 'çık'ı kullanın." + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "Sistem Tepsisine Yerleş" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "Bağlanıyor %1, port %2" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "
    %1 (%2)" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "Bağlı" + +#: notification/newsystemtraywidget.cpp:219 +#, fuzzy +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "

    Ağ bağlantısı koptu.

    " + +#: notification/notificationmanager.cpp:120 #, fuzzy msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "Bir &Buluşma Başlat" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 #, fuzzy msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "&Kişisel Mesaj" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 #, fuzzy msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "Size ileti &gönerildiğinde" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 #, fuzzy msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "Şeytan" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 #, fuzzy msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "E-&posta Gönder" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "Gizle" @@ -4077,11 +4182,6 @@ msgstr "" "Ana pencere kapatılınca KMess sistem çekmecesinde çalışmaya devam eder. " "Uygulamadan çıkmak için 'Dosya' menüsünden 'çık'ı kullanın." -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "Sistem Tepsisine Yerleş" - #: notification/systemtraywidget.cpp:248 #, fuzzy, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -4112,22 +4212,22 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "E-posta adresiniz:" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "Gözat..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 #, fuzzy msgid "Browse and Crop Picture..." msgstr "Resme gözat ve kırp..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "Önceki Resmi Ayarla..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "Görüntü Resmi:" @@ -4508,8 +4608,8 @@ msgid "" "Click this button to show all default Live Messenger emoticons, so you can " "easily insert them in your messages." msgstr "" -"Öntanımlı Live Messenger ifadelerini göstermek için bu düğmeye tıklayın, " -"bu şekilde kolayca iletilerinize ekleyebilirsiniz." +"Öntanımlı Live Messenger ifadelerini göstermek için bu düğmeye tıklayın, bu " +"şekilde kolayca iletilerinize ekleyebilirsiniz." #. i18n: file: chat/chatwindow.ui:257 #. i18n: ectx: property (toolTip), widget (QToolButton, customEmoticonButton_) @@ -4524,8 +4624,8 @@ msgid "" "Click this button to show all custom emoticons, so you can easily insert " "them in your messages." msgstr "" -"Özel Live Messenger ifadelerini göstermek için bu düğmeye tıklayın, " -"bu şekilde kolayca iletilerinize ekleyebilirsiniz." +"Özel Live Messenger ifadelerini göstermek için bu düğmeye tıklayın, bu " +"şekilde kolayca iletilerinize ekleyebilirsiniz." #. i18n: file: chat/chatwindow.ui:279 #. i18n: ectx: property (whatsThis), widget (QToolButton, winksButton_) @@ -4721,24 +4821,21 @@ msgstr "Bu kişiyi ekle&me ama benim durumunu görmesine izin ver" #: rc.cpp:135 msgid "&Block this person from contacting you and seeing your status" msgstr "" -"Bu kişinin bağlantı durumumu görmesine ya da benimle " -"bağlantıya geçmesine izin &verme" +"Bu kişinin bağlantı durumumu görmesine ya da benimle bağlantıya geçmesine " +"izin &verme" #. i18n: file: dialogs/contactpropertiesdialog.ui:48 #. i18n: ectx: property (toolTip), widget (QLabel, imageContact_) #: rc.cpp:141 msgid "Click or Drag&Drop to change the image for this contact" msgstr "" -"Bu kişinin resmini değiştirmek için tıklayın ya da resmi " -"sürükleyip bırakın" +"Bu kişinin resmini değiştirmek için tıklayın ya da resmi sürükleyip bırakın" #. i18n: file: dialogs/contactpropertiesdialog.ui:72 #. i18n: ectx: property (toolTip), widget (QPushButton, restoreButton_) #: rc.cpp:144 msgid "Click this button to restore the display picture of this contact" -msgstr "" -"Kişinin görüntü resmini eski haline getirmek için bu düğmeye " -"tıklayın" +msgstr "Kişinin görüntü resmini eski haline getirmek için bu düğmeye tıklayın" #. i18n: file: dialogs/contactpropertiesdialog.ui:75 #. i18n: ectx: property (text), widget (QPushButton, restoreButton_) @@ -4780,9 +4877,7 @@ msgstr "&Görüntü Resimleri" #. i18n: ectx: property (toolTip), widget (QPushButton, useButton_) #: rc.cpp:165 msgid "Click here to use the selected picture as your display picture" -msgstr "" -"Seçili resmi görüntü resminiz olarak kullanmak için buraya " -"tıklayın" +msgstr "Seçili resmi görüntü resminiz olarak kullanmak için buraya tıklayın" #. i18n: file: dialogs/contactpropertiesdialog.ui:370 #. i18n: ectx: property (text), widget (QPushButton, useButton_) @@ -5259,8 +5354,8 @@ msgstr "&Bağlandığında geçilecek durum" #: rc.cpp:427 msgid "Here you can select which status KMess should set, after logging in." msgstr "" -"Buradan KMess'in bağlantı kurulduktan sonra hangi duruma " -"geçeceğini belirleyebilirsiniz." +"Buradan KMess'in bağlantı kurulduktan sonra hangi duruma geçeceğini " +"belirleyebilirsiniz." #. i18n: file: settings/accountpage.ui:375 #. i18n: ectx: property (whatsThis), widget (QLabel, verifyLabel_) @@ -6321,6 +6416,10 @@ msgid "" "b>" msgstr "" +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "Bu kişinin listesinde siz yoksunuz." + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "<Buraya kişisel bir ileti yazın>" @@ -6474,13 +6573,6 @@ msgstr "" #~ msgid "You have sent a wink!" #~ msgstr "%1 size bir göz kırpması gönderdi" -#, fuzzy -#~ msgctxt "Contacts counters in normal group tooltip" -#~ msgid "%1 contact, %2 online" -#~ msgid_plural "%1 contacts, %2 online" -#~ msgstr[0] "Kişi çevrimdışı" -#~ msgstr[1] "Kişi çevrimdışı" - #, fuzzy #~ msgid "You have not chatted with this contact yet." #~ msgstr "Daveti reddettiniz." @@ -6680,9 +6772,6 @@ msgstr "" #~ msgstr "" #~ "Etkinse, kişileriniz sizinle sohbet başlattığında uyarı penceresi çıkar." -#~ msgid "Start a &chat with you" -#~ msgstr "Sizinle &sohbet başlatıldığında" - #~ msgid "" #~ "If enabled, a popup message is shown every time one of your contacts " #~ "sends you a message." @@ -6837,10 +6926,6 @@ msgstr "" #~ msgid "Soccer ball" #~ msgstr "Futbol topu" -#, fuzzy -#~ msgid "Contact %1 already exists." -#~ msgstr "Kişi zaten listenizde bulunuyor" - #, fuzzy #~ msgctxt "Contact email in list tooltip" #~ msgid "Email: %1" @@ -6955,10 +7040,6 @@ msgstr "" #~ msgid "Sidebar" #~ msgstr "Kenar Çubuğu" -#, fuzzy -#~ msgid "New contact's group" -#~ msgstr "Yeni &Kişi" - #~ msgid "Enter your login information:" #~ msgstr "Giriş bilgilerinizi girin:" @@ -7026,10 +7107,6 @@ msgstr "" #~ msgid "Add contact" #~ msgstr "Kişi ekle" -#, fuzzy -#~ msgid "KMess Notification" -#~ msgstr "E-posta bildirimi" - #~ msgid "" #~ msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 5a5d4af..a62d325 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -11,10 +11,11 @@ msgid "" msgstr "" "Project-Id-Version: KMess\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" +"POT-Creation-Date: 2010-06-27 13:57+0200\n" "PO-Revision-Date: 2009-11-18 19:28+0100\n" "Last-Translator: Panagiotis Papadopoulos \n" "Language-Team: en_US \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,7 +25,7 @@ msgstr "" "X-Generator: Lokalize 0.3\n" "X-Language: zh_CN\n" -#: account.cpp:45 account.cpp:744 +#: account.cpp:45 account.cpp:755 msgid "I am away from my computer" msgstr "我已离开电脑" @@ -32,7 +33,7 @@ msgstr "我已离开电脑" msgid "Your name" msgstr "您的姓名" -#: account.cpp:57 settings/accountpage.cpp:218 +#: account.cpp:57 settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "you@hotmail.com" @@ -448,39 +449,39 @@ msgstr "覆盖文件" msgid "Over&write" msgstr "覆盖文件(&w)" -#: chat/chatview.cpp:925 +#: chat/chatview.cpp:934 msgid "Add this &Emoticon..." msgstr "添加这个表情(&E)…" -#: chat/chatview.cpp:928 +#: chat/chatview.cpp:937 msgid "Hide this &Emoticon" msgstr "隐藏这个表情(&E)…" -#: chat/chatview.cpp:934 +#: chat/chatview.cpp:943 msgid "Send &Email" msgstr "发送电子邮件(&E)" -#: chat/chatview.cpp:938 +#: chat/chatview.cpp:947 msgid "Add &Contact" msgstr "添加联系人(&A)" -#: chat/chatview.cpp:942 +#: chat/chatview.cpp:951 msgid "Copy E&mail Address" msgstr "复制电子邮件地址(&m)" -#: chat/chatview.cpp:948 +#: chat/chatview.cpp:957 msgid "Visit &Link" msgstr "访问链接(&L)" -#: chat/chatview.cpp:952 +#: chat/chatview.cpp:961 msgid "Copy &Address" msgstr "复制地址(&A)" -#: chat/chatview.cpp:965 chat/chatwindow.cpp:540 +#: chat/chatview.cpp:974 chat/chatwindow.cpp:540 msgid "C&lear Chat" msgstr "清除标签 " -#: chat/chatview.cpp:966 +#: chat/chatview.cpp:975 msgid "Save Chat to &File..." msgstr "聊天记录保存到文件(&F)" @@ -616,72 +617,72 @@ msgstr "改变字体颜色(&C)" msgid "C&lear Chat Window" msgstr "清除聊天窗口" -#: chat/chatwindow.cpp:1106 +#: chat/chatwindow.cpp:1149 msgid "" "You used an incorrect syntax for the /status command. The correct " "syntax is: /status online|away|idle|brb|busy|lunch|phone|invisible." "
    You can also use shortcuts like /online or /phone." msgstr "" -#: chat/chatwindow.cpp:1109 +#: chat/chatwindow.cpp:1152 msgctxt "Dialog box caption for wrong command syntax warning" msgid "Incorrect /status Syntax" msgstr "" -#: chat/chatwindow.cpp:1172 +#: chat/chatwindow.cpp:1215 msgid "You cannot use the /block command in a group chat." msgstr "" -#: chat/chatwindow.cpp:1174 +#: chat/chatwindow.cpp:1217 msgctxt "Caption when trying to block someone in a group chat" msgid "Cannot use /block command" msgstr "" -#: chat/chatwindow.cpp:1185 +#: chat/chatwindow.cpp:1228 msgid "You cannot use the /unblock command in a group chat." msgstr "" -#: chat/chatwindow.cpp:1187 +#: chat/chatwindow.cpp:1230 msgctxt "Caption when trying to unblock someone in a group chat" msgid "Cannot use /unblock command!" msgstr "" -#: chat/chatwindow.cpp:1217 +#: chat/chatwindow.cpp:1260 #, kde-format msgid "" "Unknown command %1. If you did not want this message to be a " "command, prepend your message with another /." msgstr "" -#: chat/chatwindow.cpp:1220 +#: chat/chatwindow.cpp:1263 msgctxt "Caption when an unknown command was requested" msgid "Unknown Command" msgstr "未知命令" -#: chat/chatwindow.cpp:1496 +#: chat/chatwindow.cpp:1539 msgctxt "Error message shown in chat" msgid "Failed to send the handwritten message: the contacts do not support it." msgstr "发送手写消息失败,对方不支持该特性." -#: chat/chatwindow.cpp:1534 +#: chat/chatwindow.cpp:1577 msgctxt "Error message shown in chat" msgid "" "Failed to send the handwritten message: an error has occurred while creating " "it." msgstr "发送手写消息失败: 创建过程有错误发生." -#: chat/chatwindow.cpp:1824 +#: chat/chatwindow.cpp:1858 msgctxt "Chat window caption, without contact name" msgid "Chat" msgstr "聊天" -#: chat/chatwindow.cpp:1828 +#: chat/chatwindow.cpp:1862 #, kde-format msgctxt "Chat window caption, with contact name" msgid "%1 - Chat" msgstr "与 %1 聊天" -#: chat/chatwindow.cpp:1848 kmessinterface.cpp:674 +#: chat/chatwindow.cpp:1882 kmessinterface.cpp:676 #, kde-format msgctxt "Question dialog box message" msgid "" @@ -689,37 +690,37 @@ msgid "" "it again by using this keyboard shortcut: %1" msgstr "" -#: chat/chatwindow.cpp:1852 kmessinterface.cpp:678 +#: chat/chatwindow.cpp:1886 kmessinterface.cpp:680 msgctxt "Dialog box caption: hiding the menu bar" msgid "Hiding the Menu" msgstr "隐藏菜单" -#: chat/chatwindow.cpp:1938 +#: chat/chatwindow.cpp:1972 msgid "Drawing brush" msgstr "" #. i18n: file: chat/chatwindow.ui:364 #. i18n: ectx: property (toolTip), widget (QToolButton, inkEraseButton_) -#: chat/chatwindow.cpp:1944 rc.cpp:41 +#: chat/chatwindow.cpp:1978 rc.cpp:41 msgid "Erase brush" msgstr "" -#: chat/chatwindow.cpp:2137 +#: chat/chatwindow.cpp:2171 #, kde-format msgid "%1 is typing..." msgstr "%1正在输入消息..." -#: chat/chatwindow.cpp:2147 +#: chat/chatwindow.cpp:2181 #, kde-format msgid "%1 and %2 are typing..." msgstr "%1 和 %2 正在输入信息..." -#: chat/chatwindow.cpp:2151 +#: chat/chatwindow.cpp:2185 #, fuzzy, kde-format msgid "%1, %2 and %3 others are typing..." msgstr "%1, %2 和 %3 个其他人正在打字" -#: chat/chatwindow.cpp:2638 +#: chat/chatwindow.cpp:2672 #, kde-format msgctxt "Tool tip for chat tabs" msgid "" @@ -730,18 +731,18 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:212 #. i18n: ectx: property (toolTip), widget (QToolButton, inkButton_) -#: chat/chatwindow.cpp:2774 rc.cpp:11 +#: chat/chatwindow.cpp:2808 rc.cpp:11 msgid "Handwriting mode" msgstr "手写模式" -#: chat/chatwindow.cpp:2783 +#: chat/chatwindow.cpp:2817 msgctxt "Label text" msgid "" "Handwriting is disabled: some of the contacts do not support receiving " "handwritten messages." msgstr "" -#: chat/chatwindow.cpp:2789 +#: chat/chatwindow.cpp:2823 msgctxt "Label text" msgid "" "Handwriting is disabled: this contact does not support receiving handwritten " @@ -750,17 +751,17 @@ msgstr "" #. i18n: file: chat/chatwindow.ui:276 #. i18n: ectx: property (toolTip), widget (QToolButton, winksButton_) -#: chat/chatwindow.cpp:2797 rc.cpp:29 +#: chat/chatwindow.cpp:2831 rc.cpp:29 msgid "Winks" msgstr "传情动漫" -#: chat/chatwindow.cpp:2806 +#: chat/chatwindow.cpp:2840 msgctxt "Label text" msgid "" "Winks are disabled: some of the contacts do not support receiving winks." msgstr "" -#: chat/chatwindow.cpp:2812 +#: chat/chatwindow.cpp:2846 msgctxt "Label text" msgid "Winks are disabled: this contact does not support receiving winks." msgstr "传情动漫被禁用,无法发送传情动漫." @@ -769,51 +770,51 @@ msgstr "传情动漫被禁用,无法发送传情动漫." msgid "&Start Private Chat" msgstr " 开始私聊(&S)" -#: chat/contactframe.cpp:355 kmessview.cpp:689 +#: chat/contactframe.cpp:355 kmessview.cpp:706 msgid "&Send Email" msgstr "发送电子邮件(&E)" -#: chat/contactframe.cpp:356 kmessview.cpp:690 +#: chat/contactframe.cpp:356 kmessview.cpp:707 msgid "&View Profile" msgstr "查看档案(&V)" -#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:692 +#: chat/contactframe.cpp:358 chat/contactframe.cpp:411 kmessview.cpp:709 msgid "&Properties" msgstr "属性(&P)" -#: chat/contactframe.cpp:360 kmessview.cpp:694 +#: chat/contactframe.cpp:360 kmessview.cpp:711 msgid "&Add Contact" msgstr "添加联系人(&A)" -#: chat/contactframe.cpp:361 kmessview.cpp:695 +#: chat/contactframe.cpp:361 kmessview.cpp:712 msgid "A&llow Contact" msgstr "允许联系人(&A)" -#: chat/contactframe.cpp:362 kmessview.cpp:698 +#: chat/contactframe.cpp:362 kmessview.cpp:715 msgid "&Delete Contact" msgstr "删除联系人(&D)" -#: chat/contactframe.cpp:364 kmessview.cpp:696 +#: chat/contactframe.cpp:364 kmessview.cpp:713 msgid "&Block Contact" msgstr "阻止联系人(&B)" -#: chat/contactframe.cpp:365 kmessview.cpp:697 +#: chat/contactframe.cpp:365 kmessview.cpp:714 msgid "&Unblock Contact" msgstr "解除阻止联系人(&U)" -#: chat/contactframe.cpp:367 kmessview.cpp:701 +#: chat/contactframe.cpp:367 kmessview.cpp:718 msgid "&Friendly Name" msgstr "昵称(&F)" -#: chat/contactframe.cpp:368 kmessview.cpp:702 +#: chat/contactframe.cpp:368 kmessview.cpp:719 msgid "&Personal Message" msgstr "个人消息(&P)" -#: chat/contactframe.cpp:369 kmessview.cpp:703 +#: chat/contactframe.cpp:369 kmessview.cpp:720 msgid "&Email Address" msgstr "电子邮件地址(&E)" -#: chat/contactframe.cpp:370 kmessview.cpp:704 +#: chat/contactframe.cpp:370 kmessview.cpp:721 msgid "Song &Name" msgstr "歌曲名(N)" @@ -839,15 +840,15 @@ msgstr "音符(&N)" msgid "&Emoticons" msgstr "表情(&E)" -#: chat/contactframe.cpp:404 kmessview.cpp:739 +#: chat/contactframe.cpp:404 kmessview.cpp:756 msgid "&Copy" msgstr "复制(&C)..." -#: chat/contactframe.cpp:809 +#: chat/contactframe.cpp:812 msgid "Blocked" msgstr "被阻止" -#: chat/contactframe.cpp:821 +#: chat/contactframe.cpp:824 #, kde-format msgctxt "" "Tooltip for a contact's status icon, arg %1 is the Live Messenger status, " @@ -855,17 +856,18 @@ msgctxt "" msgid "The contact is %1" msgstr "联系人 %1" -#: chat/contactswidget.cpp:298 kmessview.cpp:523 settings/accountpage.cpp:489 +#: chat/contactswidget.cpp:298 kmessview.cpp:540 settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "下载显示图像失败" -#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:523 -#: kmessview.cpp:560 main.cpp:43 settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: chat/contactswidget.cpp:298 chat/contactswidget.cpp:334 kmessview.cpp:540 +#: kmessview.cpp:577 main.cpp:43 notification/newsystemtraywidget.cpp:64 +#: notification/newsystemtraywidget.cpp:224 settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" -#: chat/contactswidget.cpp:332 kmessview.cpp:558 settings/accountpage.cpp:548 +#: chat/contactswidget.cpp:332 kmessview.cpp:575 settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -892,7 +894,7 @@ msgstr "添加(&w)..." msgid "Edit" msgstr "编辑" -#: chat/emoticonswidget.cpp:442 kmess.cpp:580 +#: chat/emoticonswidget.cpp:442 kmess.cpp:583 msgid "Remove" msgstr "删除" @@ -946,52 +948,52 @@ msgstr "Window Live Messenger %1 兼容" msgid "Windows Live Messenger compatible" msgstr "Window Live Messenger 兼容" -#: contact/msnstatus.cpp:159 contact/msnstatus.cpp:172 initialview.cpp:85 -#: model/contactlist.cpp:1825 settings/accountpage.cpp:99 +#: contact/msnstatus.cpp:193 contact/msnstatus.cpp:206 initialview.cpp:85 +#: model/contactlist.cpp:1825 settings/accountpage.cpp:101 msgid "Online" msgstr "联机" -#: contact/msnstatus.cpp:160 initialview.cpp:88 settings/accountpage.cpp:102 +#: contact/msnstatus.cpp:194 initialview.cpp:88 settings/accountpage.cpp:104 msgid "Busy" msgstr "忙碌" -#: contact/msnstatus.cpp:161 initialview.cpp:86 settings/accountpage.cpp:100 +#: contact/msnstatus.cpp:195 initialview.cpp:86 settings/accountpage.cpp:102 msgid "Away" msgstr "离开" -#: contact/msnstatus.cpp:162 +#: contact/msnstatus.cpp:196 msgid "Away with Auto-Reply" msgstr "离开后自动回复" -#: contact/msnstatus.cpp:163 +#: contact/msnstatus.cpp:197 msgid "Idle" msgstr "发呆" -#: contact/msnstatus.cpp:164 initialview.cpp:87 settings/accountpage.cpp:101 +#: contact/msnstatus.cpp:198 initialview.cpp:87 settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "马上回来" -#: contact/msnstatus.cpp:165 initialview.cpp:90 settings/accountpage.cpp:104 +#: contact/msnstatus.cpp:199 initialview.cpp:90 settings/accountpage.cpp:106 msgid "On the Phone" msgstr "接听电话" -#: contact/msnstatus.cpp:166 initialview.cpp:89 settings/accountpage.cpp:103 +#: contact/msnstatus.cpp:200 initialview.cpp:89 settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "外出就餐" -#: contact/msnstatus.cpp:167 initialview.cpp:91 settings/accountpage.cpp:105 +#: contact/msnstatus.cpp:201 initialview.cpp:91 settings/accountpage.cpp:107 msgid "Invisible" msgstr "显示为脱机" -#: contact/msnstatus.cpp:168 model/contactlist.cpp:1826 +#: contact/msnstatus.cpp:202 model/contactlist.cpp:1826 msgid "Offline" msgstr "脱机" -#: contact/msnstatus.cpp:195 contact/msnstatus.cpp:197 +#: contact/msnstatus.cpp:229 contact/msnstatus.cpp:231 msgid "&My Status" msgstr "我的状态(&M)" -#: contact/msnstatus.cpp:218 +#: contact/msnstatus.cpp:252 msgctxt "Menu action name" msgid "Disconnect" msgstr "注销(&D)" @@ -1089,16 +1091,16 @@ msgstr "" msgid "Contact Properties for %1" msgstr "联系人%1的属性:" -#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:816 kmessview.cpp:1290 +#: dialogs/contactpropertiesdialog.cpp:399 kmess.cpp:819 kmessview.cpp:1308 #: network/msnsockethttp.cpp:199 network/msnsockettcp.cpp:386 msgid "Connected" msgstr "已连接" -#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1296 +#: dialogs/contactpropertiesdialog.cpp:405 kmessview.cpp:1314 msgid "Not seen yet" msgstr "从未上线" -#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1313 +#: dialogs/contactpropertiesdialog.cpp:416 kmessview.cpp:1331 msgid "No messages yet" msgstr "还没有消息" @@ -1126,20 +1128,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "客户端: %1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "您确定要用使用该联系人的头像吗?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "复制联系人头像" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "Phonon不支持的文件类型。 " -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "不支持的文件类型" @@ -1642,8 +1644,8 @@ msgstr " 无法连接:该账户没有保存密码" #, kde-format msgctxt "Status message on login screen" msgid "" -"Waiting for an Internet connection to reconnect...
    Reconnect now!" +"Waiting for an Internet connection to reconnect...
    Reconnect now!" msgstr "正在等待网络重新连接...
    立刻重连" #: initialview.cpp:422 @@ -1703,22 +1705,22 @@ msgstr "添加组(&A)" msgid "Enter a name for the new group:" msgstr "输入新组名:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "" "Are you sure you want to remove the contact %1 from your contact " "list?" msgstr "你确定要从你的联系人列表中删除 %1 吗?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr " 删除联系人" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr " 删除并且屏蔽" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "" @@ -1726,12 +1728,12 @@ msgid "" "try again!" msgstr "" -#: kmess.cpp:629 kmess.cpp:636 +#: kmess.cpp:632 kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "" @@ -1739,24 +1741,24 @@ msgid "" "list?" msgstr "您确定要从联系人列表中删除 %1 这个组吗?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "删除的" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "这是一个特殊组,不能被改变。" -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "重命名组" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "输入新组名:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "" @@ -1764,21 +1766,21 @@ msgid "" "save the account password!

    " msgstr "" -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "自动登陆失败" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "连接已丢失……" -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "已注销" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "" "Paragraph to be added to the text of a message dialog box, but only when KDE " @@ -1786,7 +1788,7 @@ msgctxt "" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "" -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "" "Text for a message dialog box; %1 is an explanation about the list of " @@ -1800,12 +1802,12 @@ msgstr "" "

    KMess 将不能播放声音和弹出提示。

    无法在程序目录中找到所需文" "件'kmess.notifyrc'

    <p>%1

    请检查你的安装。

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "通知发生错误" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "" "Main window caption: switched order to easily distinguish it from chats" @@ -1814,269 +1816,274 @@ msgstr "KMess - %1" #. i18n: file: initialview.ui:348 #. i18n: ectx: property (text), widget (QPushButton, connectButton_) -#: kmessinterface.cpp:160 rc.cpp:326 +#: kmessinterface.cpp:165 rc.cpp:326 msgid "&Connect" msgstr "登录(&C)" -#: kmessinterface.cpp:161 +#: kmessinterface.cpp:166 msgid "&Disconnect" msgstr "注销(&D)" -#: kmessinterface.cpp:162 +#: kmessinterface.cpp:167 msgid "Show My &Profile" msgstr "查看我的档案(&P)" -#: kmessinterface.cpp:167 +#: kmessinterface.cpp:172 msgid "Show &Allowed Contacts" msgstr "显示被允许的联系人(&A)" -#: kmessinterface.cpp:168 +#: kmessinterface.cpp:173 msgid "Show &Offline Contacts" msgstr "显示脱机的联系人(&A)" -#: kmessinterface.cpp:169 +#: kmessinterface.cpp:174 msgid "Show &Removed Contacts" msgstr "显示被删除的联系人(&R)" -#: kmessinterface.cpp:170 +#: kmessinterface.cpp:175 msgid "Show &History Box" msgstr "显示聊天历史(&H):" -#: kmessinterface.cpp:171 +#: kmessinterface.cpp:176 msgid "&Show Search Bar" msgstr "显示搜索栏(&S)" -#: kmessinterface.cpp:172 +#: kmessinterface.cpp:177 msgid "Show &Empty Groups" msgstr "显示空组(&E)" -#: kmessinterface.cpp:173 +#: kmessinterface.cpp:178 msgid "&Display Pictures Size" msgstr "头像大小(&D)" -#: kmessinterface.cpp:174 +#: kmessinterface.cpp:179 msgid "&Sort Contacts by" msgstr "对联系人进行排序(&S)" -#: kmessinterface.cpp:175 +#: kmessinterface.cpp:180 msgid "Show &Transfer Window..." msgstr "显示文件传送窗口(&T)" -#: kmessinterface.cpp:180 +#: kmessinterface.cpp:185 msgid "New &Contact..." msgstr "添加联系人(&C)..." -#: kmessinterface.cpp:181 +#: kmessinterface.cpp:186 msgid "New &Group..." msgstr "添加组(&G)" -#: kmessinterface.cpp:182 +#: kmessinterface.cpp:187 msgid "&Export Contact List..." msgstr "导出联系人列表(&E)" -#: kmessinterface.cpp:183 kmessview.cpp:691 +#: kmessinterface.cpp:188 kmessview.cpp:708 msgid "Show Chat &History..." msgstr "显示聊天记录(&H):" -#: kmessinterface.cpp:184 +#: kmessinterface.cpp:189 msgid "New &Account..." msgstr "添加新帐号(&A)" -#: kmessinterface.cpp:185 +#: kmessinterface.cpp:190 msgid "Configure Account..." msgstr "设置账户(&A)" -#: kmessinterface.cpp:186 +#: kmessinterface.cpp:191 msgid "Configure &KMess..." msgstr "设置 Kmess(&K)" -#: kmessinterface.cpp:187 +#: kmessinterface.cpp:192 msgid "Show Selection &Menu" msgstr "" -#: kmessinterface.cpp:190 +#: kmessinterface.cpp:195 msgid "Do Not Display" msgstr "不显示" -#: kmessinterface.cpp:191 +#: kmessinterface.cpp:196 msgid "Small" msgstr "小" -#: kmessinterface.cpp:192 +#: kmessinterface.cpp:197 msgid "Medium" msgstr "中" -#: kmessinterface.cpp:193 +#: kmessinterface.cpp:198 msgid "Large" msgstr "大" -#: kmessinterface.cpp:197 +#: kmessinterface.cpp:202 msgid "Group" msgstr "组" -#: kmessinterface.cpp:198 +#: kmessinterface.cpp:203 msgid "Online/Offline" msgstr "联机/脱机" -#: kmessinterface.cpp:199 +#: kmessinterface.cpp:204 msgid "Mixed" msgstr "混合" -#: kmessinterface.cpp:289 +#: kmessinterface.cpp:294 msgid "Show &Network Window..." msgstr "显示网络窗口(&N)" -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "[%1]以 %2 登陆" -#: kmessview.cpp:374 +#: kmessview.cpp:391 #, kde-format msgid "[%1] %2 goes online" msgstr "[%1] %2上线了" -#: kmessview.cpp:379 +#: kmessview.cpp:396 #, kde-format msgid "[%1] %2 goes offline" msgstr "[%1]%2离线" -#: kmessview.cpp:688 +#: kmessview.cpp:705 msgid "Cha&t" msgstr "聊天(&t)" -#: kmessview.cpp:699 +#: kmessview.cpp:716 msgid "&Remove From Group" msgstr " 从组中删除(&R)" -#: kmessview.cpp:732 +#: kmessview.cpp:749 msgid "&Copy to Group" msgstr "将联系人复制到(&C)" -#: kmessview.cpp:733 +#: kmessview.cpp:750 msgid "&Move to Group" msgstr "将联系人移动到(&M)" -#: kmessview.cpp:784 +#: kmessview.cpp:801 msgid "Move Group &Down" msgstr "向下移动组(&D)" -#: kmessview.cpp:785 +#: kmessview.cpp:802 msgid "Move Group &Up" msgstr "向上移动组(&U)" -#: kmessview.cpp:786 +#: kmessview.cpp:803 msgid "Re&move Group" msgstr "删除组(&m)" -#: kmessview.cpp:787 +#: kmessview.cpp:804 msgid "Re&name Group" msgstr "重命名组(&n)" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "您不在该联系人的联系人列表中" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1273 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "电子邮件地址" -#: kmessview.cpp:1262 +#: kmessview.cpp:1280 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "客户端:" -#: kmessview.cpp:1274 +#: kmessview.cpp:1292 msgid "Yes" msgstr "是" -#: kmessview.cpp:1278 +#: kmessview.cpp:1296 msgid "No" msgstr "否" -#: kmessview.cpp:1281 +#: kmessview.cpp:1299 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "被阻止" -#: kmessview.cpp:1303 +#: kmessview.cpp:1321 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "最后登陆" -#: kmessview.cpp:1320 +#: kmessview.cpp:1338 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "最后消息:" -#: kmessview.cpp:1330 +#: kmessview.cpp:1348 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "组%1 " -#: kmessview.cpp:1338 +#: kmessview.cpp:1356 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " msgid_plural "%1 contacts, " msgstr[0] "%1个联系人" -#: kmessview.cpp:1341 +#: kmessview.cpp:1359 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" msgid_plural "%1 online" msgstr[0] "%1上线" -#: kmessview.cpp:1347 +#: kmessview.cpp:1365 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" msgid_plural "%1 contacts" msgstr[0] "%1个联系人" -#: kmessview.cpp:1768 +#: kmessview.cpp:1786 #, fuzzy msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr " 单击这里保存密码" -#: kmessview.cpp:1828 +#: kmessview.cpp:1846 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "" -#: kmessview.cpp:1829 +#: kmessview.cpp:1847 msgctxt "Default personal message tooltip" msgid "" "Click here to insert a message to show to your contacts: they will see it " "along with your friendly name" msgstr "" -#: kmessview.cpp:2009 +#: kmessview.cpp:2027 msgid "No chat logs could be found for this contact." msgstr "" -#: kmessview.cpp:2010 kmessview.cpp:2016 +#: kmessview.cpp:2028 kmessview.cpp:2034 msgid "No chat history found" msgstr "未找到聊天记录(&C):" -#: kmessview.cpp:2015 +#: kmessview.cpp:2033 msgid "" "No chat logs could be found for this contact. Note that new chats are not " "logged; if you want your chats to be logged, you can enable it in your " "account settings." msgstr "" -#: kmessview.cpp:2209 +#: kmessview.cpp:2235 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1封新邮件" +#: kmessview.cpp:2254 +#, fuzzy +msgid "Show contacts what you are listening to (click to disable)" +msgstr "通知我的联系人我在听哪一首歌。(&h)" + +#: kmessview.cpp:2259 +#, fuzzy +msgid "Show contacts what you are listening to (click to enable)" +msgstr "通知我的联系人我在听哪一首歌。(&h)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "" @@ -2749,58 +2756,66 @@ msgstr "" msgid "Marco Mentasti" msgstr "讽刺" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "灵感和多项代码" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "旧的弹出气泡代码、最初的 p2p 代码和处理 msn challenge" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "空闲定时器的代码" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "“截屏时收缩到托盘”代码" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "" "Custom crash handler implementation, System tray icon overlay implementation" msgstr "" -#: main.cpp:190 +#: main.cpp:191 msgid "" "KNotify not giving focus bug fix and KWin focus stealing prevention " "workaround" msgstr "" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2808,33 +2823,33 @@ msgstr "" "我们欢迎您到 KMess 帮助论坛去修补漏洞和提交补丁!\n" "如果您认为这里漏下了您的名字,也请联系我们!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "将您的名字写在这里?" -#: main.cpp:196 rc.cpp:1 +#: main.cpp:197 rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "您的姓名" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "您的电子邮件地址" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "不在初始时显示联系人列表" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "以给定的邮件地址自动登录" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3457,42 +3472,42 @@ msgstr "MSN 错误:%1" msgid "Trying the HTTP fallback..." msgstr "" -#: network/msnnotificationconnection.cpp:1446 +#: network/msnnotificationconnection.cpp:1464 msgid "Authenticating..." msgstr "正在验证" -#: network/msnnotificationconnection.cpp:1470 +#: network/msnnotificationconnection.cpp:1488 msgid "Authenticated" msgstr "验证" -#: network/msnnotificationconnection.cpp:1928 +#: network/msnnotificationconnection.cpp:1947 msgid "Connecting..." msgstr "正在连接……" -#: network/msnnotificationconnection.cpp:2073 +#: network/msnnotificationconnection.cpp:2092 #, kde-format msgid "Unknown command received from the server: %1" msgstr "KMess从服务器接到了一 个未知命令:%1" -#: network/msnnotificationconnection.cpp:2233 +#: network/msnnotificationconnection.cpp:2252 #, kde-format msgctxt "Time left before server maintenance" msgid "%1 minute" msgid_plural "%1 minutes" msgstr[0] "%1分钟后" -#: network/msnnotificationconnection.cpp:2236 +#: network/msnnotificationconnection.cpp:2255 #, kde-format msgid "Server closes for maintenance in %1!" msgstr "警告:服务器%1分钟后因维护而关闭!" -#: network/msnnotificationconnection.cpp:2241 +#: network/msnnotificationconnection.cpp:2260 #, kde-format msgctxt "Server maintenance dialog box text" msgid "The Live Messenger server will be going down in %1 for maintenance." msgstr " Live Messenger服务器报告,它%1分钟后将会关闭进行维护." -#: network/msnnotificationconnection.cpp:2442 +#: network/msnnotificationconnection.cpp:2461 #, kde-format msgid "KMess could not process Offline-IM messages.
    Details: %1" msgstr "" @@ -3500,53 +3515,53 @@ msgstr "" "\n" "细节:%1" -#: network/msnnotificationconnection.cpp:2443 +#: network/msnnotificationconnection.cpp:2462 msgid "SOAP client is no longer valid." msgstr " SOAP客户端不可用" -#: network/msnnotificationconnection.cpp:2721 +#: network/msnnotificationconnection.cpp:2740 msgid "Authentication time limit exceeded" msgstr "验证超时" -#: network/msnnotificationconnection.cpp:2903 +#: network/msnnotificationconnection.cpp:2922 msgid "Waiting for contact list..." msgstr "等待联系人列表……" -#: network/msnnotificationconnection.cpp:2949 +#: network/msnnotificationconnection.cpp:2968 #, kde-format msgctxt "Connection warning: dialog box with message" msgid "

    Warning: %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:2950 +#: network/msnnotificationconnection.cpp:2969 msgctxt "Error dialog box title" msgid "MSN Warning" msgstr "MSN警告" -#: network/msnnotificationconnection.cpp:3022 +#: network/msnnotificationconnection.cpp:3041 #, kde-format msgid "
    Internal error reason: %1" msgstr "KMess内部错误: %1" -#: network/msnnotificationconnection.cpp:3083 +#: network/msnnotificationconnection.cpp:3102 msgctxt "Connection error: dialog box" msgid "" "

    Authentication has failed, please verify your account email and password." "

    " msgstr "

    验证失败,请检查你的用户名和密码。

    " -#: network/msnnotificationconnection.cpp:3085 +#: network/msnnotificationconnection.cpp:3104 msgctxt "Error dialog box title" msgid "MSN Error" msgstr "MSN 错误" -#: network/msnnotificationconnection.cpp:3096 +#: network/msnnotificationconnection.cpp:3115 #, kde-format msgctxt "Connection error: passive notification message" msgid "

    The account %1 has been connected from another location.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3099 +#: network/msnnotificationconnection.cpp:3118 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3556,7 +3571,7 @@ msgstr "" "

    您已经失去连接,因为您的Live Messenger帐号'%1'在另一个地方登录。" -#: network/msnnotificationconnection.cpp:3111 +#: network/msnnotificationconnection.cpp:3130 msgctxt "Connection error: passive notification message" msgid "" "

    Unable to connect to the Live Messenger service.
    Maybe you need to " @@ -3564,7 +3579,7 @@ msgid "" msgstr "" "

    无法连接到Live Messenger服务
    可能个你需要通过验证取得上网权限

    " -#: network/msnnotificationconnection.cpp:3114 +#: network/msnnotificationconnection.cpp:3133 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3578,25 +3593,25 @@ msgstr "" "无法工作或者你的网络连接有问题。

    请点击查看Live Messenger" "服务状态

    " -#: network/msnnotificationconnection.cpp:3127 +#: network/msnnotificationconnection.cpp:3146 msgid "" "

    Unable to resolve the authentication on the client
    Maybe you do not " "have installed qca2 and/or qca2-plugin-ossl?

    " msgstr "" -#: network/msnnotificationconnection.cpp:3129 +#: network/msnnotificationconnection.cpp:3148 msgid "" "

    KMess could not connect to the Live Messenger servers.
    You probably " "need to install qca2 and qca2-plugin-ossl to make KMess work.
    It is also " "possible that the MSN network is unavailable at the moment.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3144 +#: network/msnnotificationconnection.cpp:3163 msgctxt "Connection error: passive notification message" msgid "

    Unable to connect to the Live Messenger service.

    " msgstr "无法连接到Live Messenger服务" -#: network/msnnotificationconnection.cpp:3146 +#: network/msnnotificationconnection.cpp:3165 #, kde-format msgctxt "Connection error: detailed message" msgid "" @@ -3609,56 +3624,56 @@ msgstr "" "法工作或者你的网络连接有问题。

    点击这里访问Live " "Messenger 服务状态页

    " -#: network/msnnotificationconnection.cpp:3157 +#: network/msnnotificationconnection.cpp:3176 #, kde-format msgctxt "" "Connection error (Server-reported user error): passive notification message" msgid "

    Error: %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3159 +#: network/msnnotificationconnection.cpp:3178 #, kde-format msgctxt "Connection error (Server-reported user error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3170 +#: network/msnnotificationconnection.cpp:3189 #, kde-format msgctxt "" "Connection error (Server-reported server error): passive notification message" msgid "

    Messenger Service Error: %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3172 +#: network/msnnotificationconnection.cpp:3191 #, kde-format msgctxt "Connection error (Server-reported server error): detailed message" msgid "

    The Live Messenger server has reported an error:

    %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3180 +#: network/msnnotificationconnection.cpp:3199 #, kde-format msgctxt "" "Connection error (Server-reported client error): passive notification message" msgid "

    KMess Error: %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3182 +#: network/msnnotificationconnection.cpp:3201 #, kde-format msgctxt "Connection error (Server-reported client error): detailed message" msgid "

    KMess has encountered an internal error:

    %1

    " msgstr "" -#: network/msnnotificationconnection.cpp:3193 +#: network/msnnotificationconnection.cpp:3212 msgctxt "Connection error: passive notification message" msgid "

    Network connection lost.

    " msgstr "" -#: network/msnnotificationconnection.cpp:3195 +#: network/msnnotificationconnection.cpp:3214 msgctxt "Connection error: detailed message" msgid "

    Connection to the Live Messenger server has been lost.

    " msgstr "

    与Live Messenger服务器的连接丢失。

    " -#: network/msnnotificationconnection.cpp:3251 +#: network/msnnotificationconnection.cpp:3270 #, kde-format msgctxt "Developer details placed on the network error dialog box" msgid "" @@ -3699,13 +3714,13 @@ msgstr[0] "%1个 ping 数据包丢失" msgid "The connection to the server was lost" msgstr " 到服务器的连接丢失。" -#: network/soap/addressbookservice.cpp:783 +#: network/soap/addressbookservice.cpp:793 #, kde-format msgctxt "Warning message" msgid "The specified email address, \"%1\", is not a valid email address!" msgstr "你试图添加的email地址 \"%1\"不是合法的Live Messenger帐号" -#: network/soap/addressbookservice.cpp:793 +#: network/soap/addressbookservice.cpp:803 #, kde-format msgctxt "Error message" msgid "" @@ -3713,42 +3728,42 @@ msgid "" "account!" msgstr "你试图添加的email地址 \"%1\"不是合法的Live Messenger帐号" -#: network/soap/addressbookservice.cpp:801 -#: network/soap/addressbookservice.cpp:824 -#: network/soap/httpsoapconnection.cpp:296 +#: network/soap/addressbookservice.cpp:811 +#: network/soap/addressbookservice.cpp:834 +#: network/soap/httpsoapconnection.cpp:297 #, kde-format msgctxt "Error message (system-generated description)" msgid "Invalid web service request (%1)" msgstr "非法web服务请求%1" -#: network/soap/httpsoapconnection.cpp:433 +#: network/soap/httpsoapconnection.cpp:434 #, kde-format msgctxt "Error message (system-generated description)" msgid "The web service is not accessible (%1)" msgstr " 服务器不可用%1" -#: network/soap/httpsoapconnection.cpp:514 +#: network/soap/httpsoapconnection.cpp:518 msgctxt "Error message" msgid "Too many redirections by web service" msgstr " 登录服务器的重定向过多" -#: network/soap/httpsoapconnection.cpp:558 +#: network/soap/httpsoapconnection.cpp:562 msgctxt "Warning message" msgid "The Offline Messages web service is currently not available" msgstr "离线消息服务器暂时不可用" -#: network/soap/httpsoapconnection.cpp:564 +#: network/soap/httpsoapconnection.cpp:568 msgctxt "Warning message" msgid "The Live Messenger web service is experiencing problems" msgstr "Live Messenger web服务暂时遇到问题 " -#: network/soap/httpsoapconnection.cpp:578 +#: network/soap/httpsoapconnection.cpp:582 #, kde-format msgctxt "Error message with description (system-generated description)" msgid "Invalid web service response %1 (%2)" msgstr "非法web 服务回复%1(%2) " -#: network/soap/httpsoapconnection.cpp:617 +#: network/soap/httpsoapconnection.cpp:621 msgctxt "Error message" msgid "No response from web service" msgstr "未收到web 服务回应" @@ -3894,38 +3909,121 @@ msgstr "%1电话中 " msgid "%1
    is out for lunch" msgstr "%1出去吃饭了" +#: notification/macnotification.cpp:61 +msgid "Contact changed status" +msgstr "" + +#: notification/macnotification.cpp:66 +#, fuzzy +msgid "You received a new e-mail message" +msgstr "%1封新邮件" + +#: notification/macnotification.cpp:72 +msgid "A contact nudged you!" +msgstr "" + +#: notification/macnotification.cpp:78 +msgid "A contact started a chat with you" +msgstr "" + +#: notification/macnotification.cpp:84 +#, fuzzy +msgid "A contact messaged you" +msgstr "同一组的联系人" + +#: notification/macnotification.cpp:90 +#, fuzzy +msgid "A contact came online" +msgstr "联系人离线" + +#: notification/macnotification.cpp:96 +#, fuzzy +msgid "A contact went offline" +msgstr "联系人离线" + +#: notification/macnotification.cpp:102 +msgid "A contact changed status" +msgstr "" + +#: notification/macnotification.cpp:107 +#, fuzzy +msgid "KMess notification" +msgstr "KMess 图标" + #: notification/newemailnotification.cpp:92 #, kde-format msgctxt "%1 is the subject of the mail, %2 is the sender of the mail" msgid "New email:
    '%1'
    by '%2'" msgstr "新电子邮件:
    来自'%2'的
    %1" -#: notification/notificationmanager.cpp:114 +#: notification/newsystemtraywidget.cpp:94 +#, fuzzy +msgid "" +"

    Closing the main window will keep KMess running in the system tray.

    You can open KMess again by clicking on the bird icon, which is now " +"flashing.
    Use 'Quit' from the 'Connect' menu to quit the application.

    " +msgstr "" +"关闭主窗口后 KMess 将在系统托盘中继续运行。可用文件菜单中的退出来退出程序。" + +#: notification/newsystemtraywidget.cpp:108 +#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 +#: notification/systemtraywidget.cpp:205 +msgid "Docking in System Tray" +msgstr "使用系统托盘" + +#: notification/newsystemtraywidget.cpp:205 +#, fuzzy, kde-format +msgctxt "" +"Tray icon text tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "Connected as %1 (%2)" +msgstr "正在连接到 %1, %2 端口" + +#: notification/newsystemtraywidget.cpp:209 +#, fuzzy, kde-format +msgctxt "" +"Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the " +"status" +msgid "

    Connected as:
    %1 (%2)

    " +msgstr "
    %1 (%2)" + +#: notification/newsystemtraywidget.cpp:216 +#, fuzzy +msgctxt "Tray icon text tooltip when not connected" +msgid "Not connected" +msgstr "已连接" + +#: notification/newsystemtraywidget.cpp:219 +msgctxt "Tray icon HTML tooltip when not connected" +msgid "

    Not connected

    " +msgstr "" + +#: notification/notificationmanager.cpp:120 msgctxt "Button text for KDE notification boxes" msgid "Start Chatting" msgstr "开始聊天" -#: notification/notificationmanager.cpp:118 +#: notification/notificationmanager.cpp:124 msgctxt "Button text for KDE notification boxes" msgid "Leave a Message" msgstr "发送消息" -#: notification/notificationmanager.cpp:122 +#: notification/notificationmanager.cpp:128 msgctxt "Button text for KDE notification boxes" msgid "View Message" msgstr "参看消息" -#: notification/notificationmanager.cpp:126 +#: notification/notificationmanager.cpp:132 msgctxt "Button text for KDE notification boxes" msgid "Details" msgstr "细节" -#: notification/notificationmanager.cpp:130 +#: notification/notificationmanager.cpp:136 msgctxt "Button text for KDE notification boxes" msgid "Read Email" msgstr "阅读电子邮件" -#: notification/notificationmanager.cpp:134 +#: notification/notificationmanager.cpp:140 msgctxt "Button text for KDE notification boxes" msgid "Hide" msgstr "隐藏" @@ -3937,11 +4035,6 @@ msgid "" msgstr "" "关闭主窗口后 KMess 将在系统托盘中继续运行。可用文件菜单中的退出来退出程序。" -#: notification/systemtraywidget.cpp:96 notification/systemtraywidget.cpp:195 -#: notification/systemtraywidget.cpp:205 -msgid "Docking in System Tray" -msgstr "使用系统托盘" - #: notification/systemtraywidget.cpp:248 #, kde-format msgctxt "Tray icon tooltip showing the KMess version" @@ -3972,21 +4065,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "您的电子邮件地址" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "浏览..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "浏览并裁剪图片……" -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "设置上一个图像" #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 rc.cpp:389 +#: settings/accountpage.cpp:466 rc.cpp:389 msgid "Display Picture" msgstr "头像" @@ -6108,6 +6201,10 @@ msgid "" "b>" msgstr "" +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "您不在该联系人的联系人列表中" + #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "请在此处输入您的个人信息" diff --git a/po/zh_TW.po b/po/zh_TW.po index 49f4345..5ab5c8d 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: zh_TW\n" "Report-Msgid-Bugs-To: http://www.kmess.org/board/\n" -"POT-Creation-Date: 2010-02-25 15:16+0100\n" -"PO-Revision-Date: 2010-03-02 11:26+0800\n" +"POT-Creation-Date: 2010-05-03 21:06+0200\n" +"PO-Revision-Date: 2010-07-17 03:53+0800\n" "Last-Translator: Yen-chou Chen \n" "Language-Team: Chinese Traditional \n" "MIME-Version: 1.0\n" @@ -29,7 +29,7 @@ msgid "Your name" msgstr "您的名稱" #: account.cpp:57 -#: settings/accountpage.cpp:218 +#: settings/accountpage.cpp:220 #: settings/accountsettingsdialog.cpp:205 msgid "you@hotmail.com" msgstr "you@hotmail.com" @@ -699,63 +699,63 @@ msgid "&Start Private Chat" msgstr "開始私密聊天(&S)" #: chat/contactframe.cpp:355 -#: kmessview.cpp:689 +#: kmessview.cpp:704 msgid "&Send Email" msgstr "傳送電子郵件(&S)" #: chat/contactframe.cpp:356 -#: kmessview.cpp:690 +#: kmessview.cpp:705 msgid "&View Profile" msgstr "檢視帳號(&V)" #: chat/contactframe.cpp:358 #: chat/contactframe.cpp:411 -#: kmessview.cpp:692 +#: kmessview.cpp:707 msgid "&Properties" msgstr "特性(&P)" #: chat/contactframe.cpp:360 -#: kmessview.cpp:694 +#: kmessview.cpp:709 msgid "&Add Contact" msgstr "新增聯絡人(&A)" #: chat/contactframe.cpp:361 -#: kmessview.cpp:695 +#: kmessview.cpp:710 msgid "A&llow Contact" msgstr "允許此聯絡人(&l)" #: chat/contactframe.cpp:362 -#: kmessview.cpp:698 +#: kmessview.cpp:713 msgid "&Delete Contact" msgstr "刪除此聯絡人(&D)" #: chat/contactframe.cpp:364 -#: kmessview.cpp:696 +#: kmessview.cpp:711 msgid "&Block Contact" msgstr "封鎖此聯絡人(&B)" #: chat/contactframe.cpp:365 -#: kmessview.cpp:697 +#: kmessview.cpp:712 msgid "&Unblock Contact" msgstr "解除此聯絡人的封鎖(&U)" #: chat/contactframe.cpp:367 -#: kmessview.cpp:701 +#: kmessview.cpp:716 msgid "&Friendly Name" msgstr "暱稱(&F)" #: chat/contactframe.cpp:368 -#: kmessview.cpp:702 +#: kmessview.cpp:717 msgid "&Personal Message" msgstr "個人訊息(&P)" #: chat/contactframe.cpp:369 -#: kmessview.cpp:703 +#: kmessview.cpp:718 msgid "&Email Address" msgstr "電子郵件位址(&E)" #: chat/contactframe.cpp:370 -#: kmessview.cpp:704 +#: kmessview.cpp:719 msgid "Song &Name" msgstr "歌曲名稱(&N)" @@ -785,7 +785,7 @@ msgid "&Emoticons" msgstr "表情符號(&E)" #: chat/contactframe.cpp:404 -#: kmessview.cpp:739 +#: kmessview.cpp:754 msgid "&Copy" msgstr "複製(&C)" @@ -800,24 +800,24 @@ msgid "The contact is %1" msgstr "此聯絡人的狀態為%1" #: chat/contactswidget.cpp:298 -#: kmessview.cpp:523 -#: settings/accountpage.cpp:489 +#: kmessview.cpp:538 +#: settings/accountpage.cpp:496 msgid "Downloading of display picture failed" msgstr "下載顯示圖片失敗" #: chat/contactswidget.cpp:298 #: chat/contactswidget.cpp:334 -#: kmessview.cpp:523 -#: kmessview.cpp:560 +#: kmessview.cpp:538 +#: kmessview.cpp:575 #: main.cpp:43 -#: settings/accountpage.cpp:489 -#: settings/accountpage.cpp:550 +#: settings/accountpage.cpp:496 +#: settings/accountpage.cpp:557 msgid "KMess" msgstr "KMess" #: chat/contactswidget.cpp:332 -#: kmessview.cpp:558 -#: settings/accountpage.cpp:548 +#: kmessview.cpp:573 +#: settings/accountpage.cpp:555 msgid "" "An error occurred while trying to change the display picture.\n" "Make sure that you have selected an existing image file." @@ -843,7 +843,7 @@ msgid "Edit" msgstr "編輯" #: chat/emoticonswidget.cpp:442 -#: kmess.cpp:580 +#: kmess.cpp:583 msgid "Remove" msgstr "移除" @@ -900,19 +900,19 @@ msgstr "Windows Live Messenger 相容" #: contact/msnstatus.cpp:172 #: initialview.cpp:85 #: model/contactlist.cpp:1825 -#: settings/accountpage.cpp:99 +#: settings/accountpage.cpp:101 msgid "Online" msgstr "上線" #: contact/msnstatus.cpp:160 #: initialview.cpp:88 -#: settings/accountpage.cpp:102 +#: settings/accountpage.cpp:104 msgid "Busy" msgstr "忙啦" #: contact/msnstatus.cpp:161 #: initialview.cpp:86 -#: settings/accountpage.cpp:100 +#: settings/accountpage.cpp:102 msgid "Away" msgstr "離開" @@ -926,25 +926,25 @@ msgstr "閒置" #: contact/msnstatus.cpp:164 #: initialview.cpp:87 -#: settings/accountpage.cpp:101 +#: settings/accountpage.cpp:103 msgid "Be Right Back" msgstr "馬上回來" #: contact/msnstatus.cpp:165 #: initialview.cpp:90 -#: settings/accountpage.cpp:104 +#: settings/accountpage.cpp:106 msgid "On the Phone" msgstr "請等等...電話中" #: contact/msnstatus.cpp:166 #: initialview.cpp:89 -#: settings/accountpage.cpp:103 +#: settings/accountpage.cpp:105 msgid "Out to Lunch" msgstr "外出午餐" #: contact/msnstatus.cpp:167 #: initialview.cpp:91 -#: settings/accountpage.cpp:105 +#: settings/accountpage.cpp:107 msgid "Invisible" msgstr "隱形" @@ -1051,20 +1051,20 @@ msgid "Contact Properties for %1" msgstr "%1 的聯絡人特性" #: dialogs/contactpropertiesdialog.cpp:399 -#: kmess.cpp:816 -#: kmessview.cpp:1290 +#: kmess.cpp:819 +#: kmessview.cpp:1306 #: network/msnsockethttp.cpp:199 #: network/msnsockettcp.cpp:386 msgid "Connected" msgstr "已連線" #: dialogs/contactpropertiesdialog.cpp:405 -#: kmessview.cpp:1296 +#: kmessview.cpp:1312 msgid "Not seen yet" msgstr "尚未看到" #: dialogs/contactpropertiesdialog.cpp:416 -#: kmessview.cpp:1313 +#: kmessview.cpp:1329 msgid "No messages yet" msgstr "尚未有訊息" @@ -1092,20 +1092,20 @@ msgctxt "Contact props dialog info" msgid "Client: %1" msgstr "客戶端程式:%1" -#: dialogs/contactpropertiesdialog.cpp:665 +#: dialogs/contactpropertiesdialog.cpp:666 msgctxt "Dialog box text" msgid "Are you sure you want to use the display picture of this contact?" msgstr "您確定要使用此聯絡人的顯示圖片嗎?" -#: dialogs/contactpropertiesdialog.cpp:667 +#: dialogs/contactpropertiesdialog.cpp:668 msgid "Copy Contact Picture" msgstr "複製聯絡人圖片" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "The selected filetype is not supported by Phonon." msgstr "選擇的檔案型態未被 Phonon 支援。" -#: dialogs/contactpropertiesdialog.cpp:720 +#: dialogs/contactpropertiesdialog.cpp:721 msgid "Unsupported filetype" msgstr "未支援的檔案型態" @@ -1667,92 +1667,92 @@ msgstr "新增群組" msgid "Enter a name for the new group:" msgstr "輸入新群組的名稱:" -#: kmess.cpp:577 +#: kmess.cpp:580 #, kde-format msgid "Are you sure you want to remove the contact %1 from your contact list?" msgstr "您確定要將聯絡人 %1 從清單中移除嗎?" -#: kmess.cpp:579 +#: kmess.cpp:582 msgid "Remove Contact" msgstr "移除聯絡人" -#: kmess.cpp:581 +#: kmess.cpp:584 msgid "Remove and Block" msgstr "移除並封鎖" -#: kmess.cpp:627 +#: kmess.cpp:630 #, kde-format msgctxt "dialog text" msgid "The group %1 is not empty! First remove all contacts from it, then try again!" msgstr "群組 %1 不是空的:請先將所有聯絡人從群組中移走,然後再試一次。" -#: kmess.cpp:629 -#: kmess.cpp:636 +#: kmess.cpp:632 +#: kmess.cpp:639 msgctxt "dialog title" msgid "Group Removal" msgstr "群組移除" -#: kmess.cpp:634 +#: kmess.cpp:637 #, kde-format msgctxt "dialog text" msgid "Are you sure you want to remove the group %1 from your contact list?" msgstr "您確定要將群組 %1 從聯絡人清單中移除嗎?" -#: kmess.cpp:637 +#: kmess.cpp:640 msgctxt "dialog button" msgid "Remove" msgstr "移除" -#: kmess.cpp:666 +#: kmess.cpp:669 msgid "This is a special group, which cannot be changed." msgstr "這是一個不可變更的特殊群組" -#: kmess.cpp:677 +#: kmess.cpp:680 msgid "Rename Group" msgstr "重新命名群組" -#: kmess.cpp:678 +#: kmess.cpp:681 msgid "Enter a new name for this group:" msgstr "請輸入此群組的名稱:" -#: kmess.cpp:755 +#: kmess.cpp:758 #, kde-format msgctxt "dialog text" msgid "

    Cannot login automatically with account %1:
    you must first save the account password!

    " msgstr "

    無法自動以帳號 %1 登入:
    您必須先儲存密碼。

    " -#: kmess.cpp:758 +#: kmess.cpp:761 msgctxt "dialog title" msgid "Autologin Failed" msgstr "自動登入失敗" -#: kmess.cpp:1069 +#: kmess.cpp:1077 msgid "Connection could be down..." msgstr "連線可能已中斷..." -#: kmess.cpp:1139 +#: kmess.cpp:1147 msgctxt "Status bar message" msgid "Disconnected" msgstr "已斷線" -#: kmess.cpp:1478 +#: kmess.cpp:1482 #, kde-format msgctxt "Paragraph to be added to the text of a message dialog box, but only when KDE gives a list of folders where to search for an application file" msgid "

    KMess has searched for it in the following folders:
    %1

    " msgstr "

    KMess 已搜尋了以下的資料夾:
    %1

    " -#: kmess.cpp:1490 +#: kmess.cpp:1494 #, kde-format msgctxt "Text for a message dialog box; %1 is an explanation about the list of folders where the file was searched for, which is only shown if any folders are found" msgid "

    KMess will not be able to play sounds nor show notifications.

    The required file 'kmess.notifyrc' could not be found in any application folder.

    %1

    Please verify your installation.

    " msgstr "

    KMess 無法播放音效或顯示通知。

    因為在以下的路徑中找不到需要的設定檔 kmess.notifyrc。

    %1

    請檢查您的安裝。

    " -#: kmess.cpp:1496 +#: kmess.cpp:1500 msgctxt "Message box title" msgid "Error With Notifications" msgstr "通知的錯誤" -#: kmess.cpp:1774 +#: kmess.cpp:1778 #, kde-format msgctxt "Main window caption: switched order to easily distinguish it from chats" msgid "KMess - %1" @@ -1822,7 +1822,7 @@ msgid "&Export Contact List..." msgstr "匯出聯絡人清單(&E)..." #: kmessinterface.cpp:183 -#: kmessview.cpp:691 +#: kmessview.cpp:706 msgid "Show Chat &History..." msgstr "顯示聊天紀錄(H)..." @@ -1874,152 +1874,155 @@ msgstr "混合" msgid "Show &Network Window..." msgstr "顯示網路視窗(&N)..." -#: kmessview.cpp:330 +#: kmessview.cpp:341 #, kde-format msgid "[%1] Logged in with %2" msgstr "【%1】登入為 %2" -#: kmessview.cpp:374 +#: kmessview.cpp:389 #, kde-format msgid "[%1] %2 goes online" msgstr "【%1】%2 上線了" -#: kmessview.cpp:379 +#: kmessview.cpp:394 #, kde-format msgid "[%1] %2 goes offline" msgstr "【%1】%2 離線了" -#: kmessview.cpp:688 +#: kmessview.cpp:703 msgid "Cha&t" msgstr "交談(&t)" -#: kmessview.cpp:699 +#: kmessview.cpp:714 msgid "&Remove From Group" msgstr "從群組中刪除(&R)" -#: kmessview.cpp:732 +#: kmessview.cpp:747 msgid "&Copy to Group" msgstr "複製至群組(&C)" -#: kmessview.cpp:733 +#: kmessview.cpp:748 msgid "&Move to Group" msgstr "移至群組(&M)" -#: kmessview.cpp:784 +#: kmessview.cpp:799 msgid "Move Group &Down" msgstr "群組向下移(&D)" -#: kmessview.cpp:785 +#: kmessview.cpp:800 msgid "Move Group &Up" msgstr "群組向上移(&U)" -#: kmessview.cpp:786 +#: kmessview.cpp:801 msgid "Re&move Group" msgstr "移除此群組(&m)" -#: kmessview.cpp:787 +#: kmessview.cpp:802 msgid "Re&name Group" msgstr "重新命名此群組(&n)" -#: kmessview.cpp:1237 -msgctxt "Message in list tooltip" -msgid "This contact does not have you in his or her contact list." -msgstr "此人並未將您加入聯絡人清單。" - -#: kmessview.cpp:1255 +#: kmessview.cpp:1271 msgctxt "Contact email label in list tooltip" msgid "Email address" msgstr "電子郵件地址" -#: kmessview.cpp:1262 +#: kmessview.cpp:1278 msgctxt "Contact Live Messenger client label in list tooltip" msgid "Client" msgstr "客戶端程式" -#: kmessview.cpp:1274 +#: kmessview.cpp:1290 msgid "Yes" msgstr "是" -#: kmessview.cpp:1278 +#: kmessview.cpp:1294 msgid "No" msgstr "否" -#: kmessview.cpp:1281 +#: kmessview.cpp:1297 msgctxt "Contact blocked status label in list tooltip" msgid "Blocked" msgstr "被封鎖" -#: kmessview.cpp:1303 +#: kmessview.cpp:1319 msgctxt "Contact last presence label in list tooltip" msgid "Last seen" msgstr "上次看到" -#: kmessview.cpp:1320 +#: kmessview.cpp:1336 msgctxt "Contact last message label in list tooltip" msgid "Last message" msgstr "上次發送訊息" -#: kmessview.cpp:1330 +#: kmessview.cpp:1346 #, kde-format msgctxt "Group name in group tooltip" msgid "Group %1" msgstr "群組 %1" -#: kmessview.cpp:1338 +#: kmessview.cpp:1354 #, kde-format msgctxt "Contact counters in normal group tooltip, first part" msgid "%1 contact, " msgid_plural "%1 contacts, " msgstr[0] "%1 個聯絡人" -#: kmessview.cpp:1341 +#: kmessview.cpp:1357 #, kde-format msgctxt "Contact counters in normal group tooltip, second part" msgid "%1 online" msgid_plural "%1 online" msgstr[0] "%1 上線" -#: kmessview.cpp:1347 +#: kmessview.cpp:1363 #, kde-format msgctxt "Contacts count in special group tooltip" msgid "%1 contact" msgid_plural "%1 contacts" msgstr[0] "%1 個聯絡人" -#: kmessview.cpp:1768 +#: kmessview.cpp:1784 msgctxt "Default friendly name tooltip" msgid "Click here to change your friendly name" msgstr "點選此處來改變你的暱稱" -#: kmessview.cpp:1828 +#: kmessview.cpp:1844 msgctxt "Default personal message shown in the contact list" msgid "[i]Click to set a personal message[/i]" msgstr "[i]點選來設定個人訊息[/i]" -#: kmessview.cpp:1829 +#: kmessview.cpp:1845 msgctxt "Default personal message tooltip" msgid "Click here to insert a message to show to your contacts: they will see it along with your friendly name" msgstr "在此輸入要顯示給你聯絡人看的訊息:他們會在你的暱稱旁看到。" -#: kmessview.cpp:2009 +#: kmessview.cpp:2025 msgid "No chat logs could be found for this contact." msgstr "找不到這個聯絡人的聊天記錄" -#: kmessview.cpp:2010 -#: kmessview.cpp:2016 +#: kmessview.cpp:2026 +#: kmessview.cpp:2032 msgid "No chat history found" msgstr "找不到聊天紀錄" -#: kmessview.cpp:2015 +#: kmessview.cpp:2031 msgid "No chat logs could be found for this contact. Note that new chats are not logged; if you want your chats to be logged, you can enable it in your account settings." msgstr "找不到這個聯絡人的聊天記錄。注意:新的交談沒有被記錄;如果你想要你的交談被記錄,可以在帳號設定裡開啟功能。" -#: kmessview.cpp:2209 +#: kmessview.cpp:2233 #, kde-format msgid "%1 new email message" msgid_plural "%1 new email messages" msgstr[0] "%1 封新信件" +#: kmessview.cpp:2252 +msgid "Show contacts what you are listening to (click to disable)" +msgstr "顯示給聯絡人看你正在收聽什麼(點選來關閉)" + +#: kmessview.cpp:2257 +msgid "Show contacts what you are listening to (click to enable)" +msgstr "顯示給聯絡人看你正在收聽什麼(點選來開啟)" + #: kmessviewdelegate.cpp:290 #, kde-format msgctxt "Group name in the contact list with online/total contacts of that group" @@ -2710,55 +2713,63 @@ msgstr "國際化修正,拖曳圖案進入顯示圖片" msgid "Marco Mentasti" msgstr "Marco Mentasti" -#: main.cpp:185 +#: main.cpp:183 +msgid "Francesco Nwokeka" +msgstr "Francesco Nwokeka" + +#: main.cpp:183 +msgid "Now Listening toggle button above the contact list." +msgstr "在聯絡人清單上方的現正收聽按鈕" + +#: main.cpp:186 msgid "Inspiration and assorted code" msgstr "整理程式碼,給大家打氣" -#: main.cpp:185 +#: main.cpp:186 msgid "KMerlin (kmerlin.olsd.de)" msgstr "KMerlin (kmerlin.olsd.de)" -#: main.cpp:186 +#: main.cpp:187 msgid "Kopete (kopete.kde.org)" msgstr "Kopete (kopete.kde.org)" -#: main.cpp:186 +#: main.cpp:187 msgid "Old popup balloons code, initial p2p code, MSN challenge handler" msgstr "舊的彈出式泡泡程式碼,初始的 p2p 程式碼,MSN 挑戰處理器" -#: main.cpp:187 +#: main.cpp:188 msgid "Idle timer code" msgstr "閒置計時器程式碼" -#: main.cpp:187 +#: main.cpp:188 msgid "KScreensaver" msgstr "KScreensaver" -#: main.cpp:188 +#: main.cpp:189 msgid "BasKet" msgstr "BasKet" -#: main.cpp:188 +#: main.cpp:189 msgid "Close-to-tray icon screenshot code" msgstr "關閉到系統匣的圖示快照程式碼" -#: main.cpp:189 +#: main.cpp:190 msgid "Amarok" msgstr "Amarok" -#: main.cpp:189 +#: main.cpp:190 msgid "Custom crash handler implementation, System tray icon overlay implementation" msgstr "自訂的程式錯誤處理器實作,系統工具列圖示覆蓋實作" -#: main.cpp:190 +#: main.cpp:191 msgid "KNotify not giving focus bug fix and KWin focus stealing prevention workaround" msgstr "KNotify 沒有修正聚焦的程式臭蟲,而 KWin 避免失焦是可行的方案。" -#: main.cpp:190 +#: main.cpp:191 msgid "Quassel" msgstr "Quassel" -#: main.cpp:193 +#: main.cpp:194 msgid "" "You are welcome to send bugfixes and patches to the KMess help forum!\n" "If you feel your name is missing here, please contact us too!" @@ -2766,34 +2777,34 @@ msgstr "" "我們歡迎您傳送錯誤修正到 KMess 討論區!\n" "若您希望將您的名字列在這裡,歡迎與我們聯絡!" -#: main.cpp:193 +#: main.cpp:194 msgid "Your name here?" msgstr "還有您!" -#: main.cpp:196 +#: main.cpp:197 #: rc.cpp:1 msgctxt "NAME OF TRANSLATORS" msgid "Your names" msgstr "Tryneeds-Chinese 翻譯平台 http://tryneeds.westart.tw/" -#: main.cpp:197 +#: main.cpp:198 msgctxt "EMAIL OF TRANSLATORS" msgid "Your email addresses" msgstr "tryneeds@gmail.com" -#: main.cpp:203 +#: main.cpp:204 msgid "Do not show the contact list window initially" msgstr "不要在初始時顯示聯絡人清單視窗" -#: main.cpp:204 +#: main.cpp:205 msgid "Autologin with the given email address" msgstr "以給定的電子郵件自動登入" -#: main.cpp:209 +#: main.cpp:210 msgid "Run a debug test (developer build only)" msgstr "執行除錯測試〈只在開發者模式〉" -#: main.cpp:211 +#: main.cpp:212 msgid "" "Connect to the specified server instead of the official Live server.\n" "Use \"localhost\" or \"127.0.0.1\" to connect to a local KMess Test Server." @@ -3862,21 +3873,21 @@ msgctxt "Tray icon email count, text version" msgid " - %1 emails" msgstr "- %1 的 Email" -#: settings/accountpage.cpp:81 +#: settings/accountpage.cpp:83 msgid "Browse..." msgstr "瀏覽..." -#: settings/accountpage.cpp:82 +#: settings/accountpage.cpp:84 msgid "Browse and Crop Picture..." msgstr "瀏覽並剪裁影像..." -#: settings/accountpage.cpp:83 +#: settings/accountpage.cpp:85 msgid "Set Previous Image..." msgstr "設定前一個影像..." #. i18n: file: settings/accountpage.ui:133 #. i18n: ectx: property (title), widget (QGroupBox, groupBox_2) -#: settings/accountpage.cpp:459 +#: settings/accountpage.cpp:466 #: rc.cpp:389 msgid "Display Picture" msgstr "顯示圖片" @@ -5848,6 +5859,9 @@ msgstr "" "指定電子郵件地址可以讓開發者詢問你關於回報的事項,或是告知你的特色何時會實現。
    \n" "你的電子郵件地址將不會用在其它地方。" +#~ msgctxt "Message in list tooltip" +#~ msgid "This contact does not have you in his or her contact list." +#~ msgstr "此人並未將您加入聯絡人清單。" #~ msgctxt "Default personal message shown in the contact list" #~ msgid "<Enter your personal message here>" #~ msgstr "【請在此輸入您的個人訊息】" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c50d9d2..a452f0b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -76,7 +76,6 @@ SET(kmess_SOURCES notification/contactstatusnotification.cpp notification/notificationmanager.cpp notification/newemailnotification.cpp - notification/systemtraywidget.cpp settings/accountpage.cpp settings/accountsettingsdialog.cpp settings/accountsmanagerpage.cpp @@ -181,6 +180,22 @@ IF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 ) utils/likeback/likebackdialog.ui ) ENDIF( NOT ${KMESS_DISABLE_LIKEBACK} EQUAL 1 ) +# On Mac OS, add Mac-specific files +if(APPLE) + set(kmess_SOURCES ${kmess_SOURCES} notification/macnotification.cpp) +endif(APPLE) + +#new system tray spec - optional +IF( HAVE_NEW_TRAY ) + SET( kmess_SOURCES ${kmess_SOURCES} + notification/newsystemtraywidget.cpp ) + INCLUDE_DIRECTORIES( ${KNOTIFICATIONITEM_INCLUDE_DIR} ) + SET( kmess_LIBS ${kmess_LIBS} ${KNOTIFICATIONITEM_LIBRARIES} ) +ELSE() + SET( kmess_SOURCES ${kmess_SOURCES} + notification/systemtraywidget.cpp ) +ENDIF() + # If we're compiling in debug mode: IF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 ) # Enable the Network Window @@ -198,14 +213,16 @@ ENDIF( ${KMESS_ENABLE_DEBUG_OUTPUT} EQUAL 1 ) # Add XScreensaver library for away-idle detection. IF( X11_Xscreensaver_FOUND ) - SET(kmess_LIBS ${kmess_LIBS} ${X11_Xscreensaver_LIB} ${X11_X11_LIB}) + SET(kmess_LIBS ${kmess_LIBS} ${X11_Xscreensaver_LIB} ${X11_LIBRARIES} ) ENDIF( X11_Xscreensaver_FOUND ) # Set our new shiny KDE debug number to be the default add_definitions( -DKDE_DEFAULT_DEBUG_AREA=5130 ) # Define the app icon for Windows / Mac OS -KDE4_ADD_APP_ICON( kmess_SOURCES ../data/icons/hi*-app-kmess.png ) +SET( kmess_SRCS ) +KDE4_ADD_APP_ICON( kmess_SRCS ../data/icons/hi*-app-kmess.png ) +SET( kmess_SOURCES ${kmess_SOURCES} ${kmess_SRCS} ) # Create a DBus adapter from XML file QT4_ADD_DBUS_ADAPTOR( kmess_SOURCES utils/kmessdbus.xml utils/kmessdbus.h KMessDBus ) diff --git a/src/account.cpp b/src/account.cpp index 85b2d94..851a9ce 100644 --- a/src/account.cpp +++ b/src/account.cpp @@ -303,7 +303,7 @@ bool Account::getGroupFollowupMessages() const // Return the user's handle -QString Account::getHandle() const +const QString& Account::getHandle() const { return handle_; } @@ -647,8 +647,10 @@ int Account::getListPictureSize() const // Return the path to the current display picture -const QString Account::getPicturePath() const +const QString Account::getPicturePath( bool fallBack ) const { + static QString defaultPicture( KGlobal::dirs()->findResource( "data", "kmess/pics/kmesspic.png" ) ); + // Return the picture path if the user has selected to show it; else return an empty string if( ! showPicture_ ) { @@ -659,9 +661,18 @@ const QString Account::getPicturePath() const // ~/.kde/share/apps/kmess//displaypics/.png // If the file can't be found, fallback to the default picture - if( displayPicturePath_.isEmpty() || ! QFile::exists( displayPicturePath_ ) ) + if( fallBack + && ( displayPicturePath_.isEmpty() + || ! QFile::exists( displayPicturePath_ ) ) ) { - return KGlobal::dirs()->findResource( "data", "kmess/pics/kmesspic.png" ); + return defaultPicture; + } + + if( ! fallBack + && ( displayPicturePath_ == defaultPicture + || displayPicturePath_.isEmpty() ) ) + { + return QString(); } return displayPicturePath_; @@ -1536,6 +1547,19 @@ void Account::setShowHistoryBox( bool showHistoryBox ) +// Set wether to show now listening +void Account::setShowNowListening( bool showNowListening ) +{ + showNowListening_ = showNowListening; + emit changedNowListeningSettings(); + +#ifdef KMESSDEBUG_ACCOUNT_GENERAL + kDebug() << "Setting 'showNowListening' to " << showNowListening; +#endif +} + + + // Set whether offline contacts should be shown. void Account::setShowOfflineContacts( bool showOfflineContacts ) { @@ -1742,7 +1766,7 @@ void Account::updateMsnObject() QFile iFile( displayPicturePath_ ); if ( iFile.open( QIODevice::ReadOnly ) ) { - const QByteArray& data( iFile.readAll() ); + const QByteArray data( iFile.readAll() ); iFile.close(); msnObject_ = new MsnObject( handle_, "KMess.tmp", "", MsnObject::DISPLAYPIC, data ); diff --git a/src/account.h b/src/account.h index e14ae0e..bd1e9a1 100644 --- a/src/account.h +++ b/src/account.h @@ -99,7 +99,7 @@ class Account : public QObject // Whether follow-up messages from the contact should be grouped. bool getGroupFollowupMessages() const; // Return the user's handle - QString getHandle() const; + const QString& getHandle() const; // Return the length of time waited before the user goes idle. const int& getIdleTime() const; // Return the status to set upon connection @@ -185,7 +185,7 @@ class Account : public QObject // Returns whether or not to send our display picture bool getShowPicture() const; // Return the path to the *current* display picture - const QString getPicturePath() const; + const QString getPicturePath( bool fallBack = true ) const; // Return location of the display picture original const QString getOriginalPicturePath() const; // Returns the string representation of the MsnObject @@ -256,6 +256,8 @@ class Account : public QObject void setShowHistoryBox( bool showHistoryBox ); // Set whether empty groups are shown void setShowEmptyGroups( bool showEmptyGroups ); + // Set whether to show now listening + void setShowNowListening( bool showNowListening ); // Set whether offline contacts should be shown. void setShowOfflineContacts( bool showOfflineContacts ); // Set whether or not removed (reverse) contacts are shown. diff --git a/src/accountsmanager.cpp b/src/accountsmanager.cpp index b19d29d..0c40a92 100644 --- a/src/accountsmanager.cpp +++ b/src/accountsmanager.cpp @@ -363,7 +363,7 @@ void AccountsManager::slotWalletOpen( bool success ) if( passwordManager_ == 0 ) { KConfigGroup passwordGroup( KMessConfig::instance()->getGlobalConfig( "Passwords" ) ); - const QStringList& passwordAccountList( passwordGroup.keyList() ); + const QStringList passwordAccountList( passwordGroup.keyList() ); #ifdef KMESSDEBUG_ACCOUNTSMANAGER_KWALLET kDebug() << "Reading passwords from plain-text storage instead of KWallet!"; @@ -426,7 +426,7 @@ void AccountsManager::slotWalletOpen( bool success ) // Store the password for each account foreach( Account *account, accounts_ ) { - const QString& handle( account->getHandle() ); + const QString& handle = account->getHandle(); // If we have already the entry, check if the user want still save the password.. if( passwordGroup.hasKey( handle ) ) @@ -458,7 +458,7 @@ void AccountsManager::slotWalletOpen( bool success ) // Store the password for each account foreach( Account *account, accounts_ ) { - const QString& handle( account->getHandle() ); + const QString& handle = account->getHandle(); bool savePassword = ( account->getSavePassword() && ! account->getPassword().isEmpty() ); // If the password should not be saved, then delete any already saved password @@ -473,7 +473,7 @@ void AccountsManager::slotWalletOpen( bool success ) continue; } // Update the password if we should - else if( savePassword == true && account->getSavedPassword() != account->getPassword() + else if( savePassword == true && account->getSavedPassword() != account->getPassword() && passwordManager_->writePassword( handle, account->getPassword() ) != 0 ) { #ifdef KMESSDEBUG_ACCOUNTSMANAGER_KWALLET @@ -531,7 +531,7 @@ void AccountsManager::setupPasswordManager() // Wallet is open: verify if the user has any useable plaintext password set. // If so, ask if they should be deleted or copied to the wallet :) KConfigGroup passwordGroup( KMessConfig::instance()->getGlobalConfig( "Passwords" ) ); - const QStringList& passwordAccountList( passwordGroup.keyList() ); + const QStringList passwordAccountList( passwordGroup.keyList() ); if( ! passwordAccountList.isEmpty() ) { QStringList validAccounts; diff --git a/src/chat/chat.cpp b/src/chat/chat.cpp index b887eee..17c11b5 100644 --- a/src/chat/chat.cpp +++ b/src/chat/chat.cpp @@ -122,9 +122,9 @@ void Chat::contactJoined( ContactBase* contact, bool offlineContact ) { // Don't replace the bool offlineContact with contact->isOffline(), because there may be // real chats with invisible contacts - const QString& handle ( contact->getHandle() ); - const QString& friendlyName( contact->getFriendlyName( STRING_CLEANED_ESCAPED ) ); - const QStringList &participants( getParticipants() ); + const QString& handle = contact->getHandle(); + const QString& friendlyName = contact->getFriendlyName( STRING_CLEANED_ESCAPED ); + const QStringList participants ( getParticipants() ); // Don't show the message when the contact went/is offline (because in such cases, the message // is unreliable, and if we started the chat we're just pretending the contact joined) @@ -161,8 +161,8 @@ void Chat::contactJoined( ContactBase* contact, bool offlineContact ) // A contact left the chat void Chat::contactLeft( ContactBase *contact, bool isChatIdle ) { - const QString& handle ( contact->getHandle() ); - const QStringList &participants( getParticipants() ); + const QString& handle = contact->getHandle(); + const QStringList participants ( getParticipants() ); #ifdef KMESSDEBUG_CHAT_GENERAL kDebug() << "contact '" << handle << "' has left" << (isChatIdle ? " due to inactivity" : "") << "."; @@ -180,7 +180,7 @@ void Chat::contactLeft( ContactBase *contact, bool isChatIdle ) // but never if it would be the first message. if( ! firstMessage_ && ( currentAccount_->getShowSessionInfo() || participants.count() > 1 ) ) { - const QString& contactName( contact->getFriendlyName( STRING_CLEANED_ESCAPED ) ); + const QString& contactName = contact->getFriendlyName( STRING_CLEANED_ESCAPED ); QString message; if( isChatIdle ) @@ -337,7 +337,7 @@ void Chat::contactTyping( ContactBase *contact, bool forceExpiration ) const QString Chat::getCaption() { // Grep the current participants or the last participant - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); QString caption; // How many people are there in here? @@ -397,7 +397,7 @@ const QStringList Chat::getParticipants() const // Return the icon to use in the tab icon chat KIcon Chat::getParticipantsTabIcon() { - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); // If there are more participants use group icon if( participants.count() != 1 ) @@ -406,7 +406,7 @@ KIcon Chat::getParticipantsTabIcon() } // Else use the status icon of the current contact - const QString& handle( participants.first() ); + const QString& handle = participants.first(); // Find the contact, if it isn't in the contact list, use the "unknown" tab icon const ContactBase *contact = currentAccount_->getContactByHandle( handle ); @@ -530,7 +530,7 @@ bool Chat::isChatFirstMessage() // Return whether or not the contact is in this chat. bool Chat::isContactInChat( const QString &handle, bool isExclusiveChatWithContact ) { - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); #ifdef KMESSDEBUG_CHAT_CONTACTS kDebug() << "Is" << handle << "in chat" << this << "?" @@ -738,7 +738,7 @@ void Chat::saveChatAutomatically( bool saveExternalFile ) Account::ChatExportFormat format; // Set the base file name, same for all logs - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); if( participants.isEmpty() ) { // Should never, never, ever happen. @@ -775,9 +775,9 @@ void Chat::saveChatAutomatically( bool saveExternalFile ) break; } - const QString& year ( startDate_.toString( "yyyy" ) ); - const QString& month( startDate_.toString( "MM" ) ); - const QString& day ( startDate_.toString( "dd" ) ); + const QString year ( startDate_.toString( "yyyy" ) ); + const QString month( startDate_.toString( "MM" ) ); + const QString day ( startDate_.toString( "dd" ) ); // Determine the path where to save the log file switch( currentAccount_->getSavedChatDirectoryStructure() ) @@ -1050,7 +1050,7 @@ void Chat::setSwitchboardConnection( MsnSwitchboardConnection *newConnection ) // Notify that all contacts have left the chat if( ! msnSwitchboardConnection_->isEmpty() ) { - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); #ifdef KMESSDEBUG_CHAT_GENERAL kDebug() << "Removing old switchboard's participants from the chat:" << participants; @@ -1120,7 +1120,7 @@ void Chat::setSwitchboardConnection( MsnSwitchboardConnection *newConnection ) // Add to the contacts widget all the contacts that are present in the new switchboard - const QStringList &participants( getParticipants() ); + const QStringList participants( getParticipants() ); #ifdef KMESSDEBUG_CHAT_GENERAL kDebug() << "Adding new switchboard's participants to the chat:" << participants; #endif @@ -1241,7 +1241,7 @@ void Chat::showWink( const QString &handle, const QString &filename, const QStri #endif QString message; - const QString& friendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED_ESCAPED ) ); + const QString friendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED_ESCAPED ) ); // If we aren't showing winks, notify the user that we got one but don't actually display the animation. if( ! currentAccount_->getShowWinks() ) @@ -1403,7 +1403,7 @@ void Chat::slotContactChangedStatus() } QString message; - const QString &friendlyName( contact->getFriendlyName( STRING_CLEANED_ESCAPED ) ); + const QString &friendlyName = contact->getFriendlyName( STRING_CLEANED_ESCAPED ); // Display a message when the user goes offline. if( contact->isOffline() ) @@ -1452,7 +1452,7 @@ void Chat::slotReceivedNudge( ContactBase *contact ) #endif // Get friendly name - const QString& friendlyName( contact->getFriendlyName( STRING_CLEANED_ESCAPED ) ); + const QString& friendlyName = contact->getFriendlyName( STRING_CLEANED_ESCAPED ); ChatMessage message( ChatMessage::TYPE_NOTIFICATION, ChatMessage::CONTENT_NOTIFICATION_NUDGE, @@ -1476,7 +1476,7 @@ void Chat::slotReceivedNudge( ContactBase *contact ) // Signal that a message could not be sent to the switchboard void Chat::slotSendingFailed( const QString &handle, const MimeMessage &message ) { - const QString& contentType( message.getValue( "Content-Type" ) ); + const QString contentType( message.getValue( "Content-Type" ) ); QString errorMessage; QString friendlyName; @@ -1561,7 +1561,7 @@ void Chat::startFileTransfer( QList fileList ) if( KMESS_NULL(msnSwitchboardConnection_) ) return; // Ask for a contact - const QString& handle( chooseContact() ); + const QString handle( chooseContact() ); // If no contact can be chosen, stop if( handle.isEmpty() ) @@ -1695,7 +1695,7 @@ void Chat::startChat() #endif // Add the participant contacts to the chat, even if they're offline - const QStringList &participants( msnSwitchboardConnection_->getContactsInChat() ); + const QStringList participants( msnSwitchboardConnection_->getContactsInChat() ); #ifdef KMESSDEBUG_CHAT_GENERAL kDebug() << "Adding initial chat participants to the chat:" << participants; diff --git a/src/chat/chatmaster.cpp b/src/chat/chatmaster.cpp index b12e222..c4323d5 100644 --- a/src/chat/chatmaster.cpp +++ b/src/chat/chatmaster.cpp @@ -116,7 +116,7 @@ void ChatMaster::connected() continue; } - const QStringList& participants( chat->getParticipants() ); + const QStringList participants( chat->getParticipants() ); #ifdef KMESSDEBUG_CHATMASTER kDebug() << "Reactivating chat:" << participants; @@ -139,7 +139,7 @@ void ChatMaster::connected() continue; } - const QString &handle( participants.first() ); + const QString &handle = participants.first(); // Only reactivate the chat if this contact is in the connected account's list if( currentAccount_->getContactByHandle( handle ) == 0 ) @@ -1357,29 +1357,8 @@ void ChatMaster::slotGotInkMessage( const QString &ink, const QString &contactHa // Since I'd rather avoid using giflib to encode ISF data into pictures, I'll use PNG. imageMimeType = "image/png"; - QPixmap pixmap; - Isf::Drawing drawing( Isf::Stream::reader( inkEncodedData, true /* fromBase64 */ ) ); - - if( drawing.isNull() ) - { - // Create a blank picture instead of sending invalid data to KHTML - pixmap = QPixmap( 10, 10 ); - pixmap.fill( Qt::white ); - } - else - { - pixmap = drawing.pixmap(); - } - - // Save it using a buffer - QBuffer buffer( &inkEncodedData ); - buffer.open( QIODevice::WriteOnly ); - pixmap.save( &buffer, "PNG" ); - buffer.close(); - - // Encode the data with Base64 to insert it inline in the HTML image tag - inkEncodedData = inkEncodedData.toBase64(); + inkEncodedData = Isf::Stream::writerPng( drawing, true ); #endif break; } @@ -1615,7 +1594,7 @@ void ChatMaster::startApplication( P2PApplication *application ) MsnSwitchboardConnection *ChatMaster::startSwitchboard( const ChatInformation &chatInfo ) { MsnSwitchboardConnection *switchboard = 0; - const QString &handle( chatInfo.getContactHandle() ); + const QString &handle = chatInfo.getContactHandle(); #ifdef KMESSDEBUG_CHATMASTER kDebug() << "Starting new switchboard session with" << handle; @@ -1698,14 +1677,14 @@ Chat *ChatMaster::createChat( MsnSwitchboardConnection *switchboard, bool reques ChatWindow *newChatWindow; // If the new chat is a group chat, find existing group chat windows; else find private chats - const QStringList& partecipants( switchboard->getContactsInChat() ); + const QStringList partecipants( switchboard->getContactsInChat() ); newChat = getContactsChat( partecipants, true ); // If the chat was requested by a contact, check if we have a chat request // pending for that contact and remove it if( ! requestedByUser && partecipants.count() < 2 ) { - const QString& handle( partecipants.first() ); + const QString& handle = partecipants.first(); // Also change the request source to the user if we asked a chat with this contact first requestedByUser = requestedChats_.contains( handle ); if( requestedByUser ) diff --git a/src/chat/chatmessageview.cpp b/src/chat/chatmessageview.cpp index 2346443..90bbfbf 100644 --- a/src/chat/chatmessageview.cpp +++ b/src/chat/chatmessageview.cpp @@ -198,6 +198,7 @@ void ChatMessageView::clearView( bool clearHistory ) { // Remove any content currently shown, by setting up a new empty HTML page setHtml( QString() ); + isEmpty_ = true; lastContactMessages_.clear(); @@ -209,7 +210,6 @@ void ChatMessageView::clearView( bool clearHistory ) chatClearingMark_ = 0; lastMessageId_ = 0; - isEmpty_ = true; } else if( ! chatMessages_.isEmpty() ) { @@ -470,6 +470,14 @@ QString ChatMessageView::getStyleTag() const +// Whether or not there are any messages +bool ChatMessageView::hasHistory() const +{ + return ! chatMessages_.isEmpty(); +} + + + // Whether or not the message area is empty bool ChatMessageView::isEmpty() const { @@ -692,6 +700,7 @@ void ChatMessageView::setHtml( const QString &newHtmlBody ) { // Reset state variables lastMessageId_ = 0; + isEmpty_ = newHtmlBody.isEmpty(); // If the style is not working, prepare a standard HTML page if( ! chatStyle_->canConvert() ) diff --git a/src/chat/chatmessageview.h b/src/chat/chatmessageview.h index 00e52d1..a1e33e4 100644 --- a/src/chat/chatmessageview.h +++ b/src/chat/chatmessageview.h @@ -54,6 +54,8 @@ class ChatMessageView : public KHTMLPart ChatMessageStyle *getStyle() const; // Return a tag to use to compare styles and their options QString getStyleTag() const; + // Whether or not there are any messages + bool hasHistory() const; // Whether or not the message area is empty bool isEmpty() const; // Delete an emoticon from the chat. diff --git a/src/chat/chatstatusbar.cpp b/src/chat/chatstatusbar.cpp index 02e5097..286d673 100644 --- a/src/chat/chatstatusbar.cpp +++ b/src/chat/chatstatusbar.cpp @@ -260,7 +260,7 @@ void ChatStatusBar::assureVisibleText() // statusbar types increasing the text height is not wanted, // as this might rearrange the layout of items. - const QFontMetrics& fontMetrics( font() ); + const QFontMetrics fontMetrics( font() ); const QRect bounds( fontMetrics.boundingRect( 0, 0, availableTextWidth(), height(), Qt::AlignVCenter | Qt::TextWordWrap, text_ ) ); requiredHeight = bounds.height(); diff --git a/src/chat/chatview.cpp b/src/chat/chatview.cpp index e5b9de5..163bbe0 100644 --- a/src/chat/chatview.cpp +++ b/src/chat/chatview.cpp @@ -469,7 +469,7 @@ bool ChatView::saveChatToFile( const QString &path, Account::ChatExportFormat fo // Output the chat history to the file, with the right text encoding QTextStream textStream( &file ); - + // For plain text logs we use the locale codec if (format == Account::EXPORT_TEXT) { @@ -480,7 +480,7 @@ bool ChatView::saveChatToFile( const QString &path, Account::ChatExportFormat fo { textStream.setCodec( QTextCodec::codecForName("UTF-8") ); } - + textStream << chatHistory; file.close(); @@ -857,6 +857,15 @@ void ChatView::scrollToBottom() +// Change ink drawing object +void ChatView::setInkDrawing( Isf::Drawing* newDrawing ) +{ + delete inkDrawing_; + inkDrawing_ = newDrawing; +} + + + /** @@ -957,6 +966,10 @@ void ChatView::slotShowContextMenu( const QString &clickedUrl, const QPoint &poi chatViewClickedUrl_ = url; } +#ifdef KMESSDEBUG_CHATVIEW + kDebug() << "Creating popup menu entries"; +#endif + // Create items KAction *clearChatAction = KStandardAction::clear( this, SLOT(slotClearChat()), 0 ); KAction *saveToFileAction = KStandardAction::save( this, SLOT(showSaveChatDialog()), 0 ); @@ -974,7 +987,7 @@ void ChatView::slotShowContextMenu( const QString &clickedUrl, const QPoint &poi contextMenu->addAction( saveToFileAction ); // Set items disabled, depending on the text selection - if( chatMessageView_->hasSelection() ) + if( chatMessageView_->hasSelection() || ! chatMessageView_->hasHistory() ) { saveToFileAction->setEnabled( false ); } diff --git a/src/chat/chatview.h b/src/chat/chatview.h index 273f155..0db344c 100644 --- a/src/chat/chatview.h +++ b/src/chat/chatview.h @@ -72,6 +72,8 @@ class ChatView : public QWidget void scrollTo( bool forward, bool fast ); // Scroll the view down to the last line void scrollToBottom(); + // Change ink drawing object + void setInkDrawing( Isf::Drawing* newDrawing ); // Change the text zoom factor void setZoomFactor( int percentage ); // Update the messages which contain custom emoticons diff --git a/src/chat/chatwindow.cpp b/src/chat/chatwindow.cpp index 547617d..1c1c440 100644 --- a/src/chat/chatwindow.cpp +++ b/src/chat/chatwindow.cpp @@ -666,7 +666,7 @@ void ChatWindow::editFontColor() if ( result == KColorDialog::Accepted ) { // Get the string version of the selected color - const QString& fontColor( color.name() ); + const QString fontColor( color.name() ); // Set it to the stored account currentAccount_->setFontColor(fontColor); @@ -956,16 +956,60 @@ bool ChatWindow::eventFilter( QObject *obj, QEvent *event ) { QDropEvent *dropEvent = static_cast( event ); - // Process the drop only if it comes from out of our application. - if( ! dropEvent || dropEvent->source() != 0 ) + if( ! dropEvent ) { #ifdef KMESSDEBUG_CHATWINDOW kDebug() << "Ignoring invalid drop!"; #endif - break; + return true; } const QMimeData *mimeData = dropEvent->mimeData(); + + // Check for drops of ISF drawings + if( mimeData->hasImage() && ! mimeData->urls().isEmpty() ) + { + const QString marker( "data:image/png;base64," ); + const QString url( mimeData->urls().first().toString() ); + +#ifdef KMESSDEBUG_CHATWINDOW + kDebug() << "Checking if the dropped inline image is a fortified-PNG..."; +#endif + if( url.startsWith( marker ) ) + { +#ifdef KMESSDEBUG_CHATWINDOW + kDebug() << "Setting drawing to the Ink Canvas."; +#endif + QByteArray isfData( url.mid( marker.length() ).toAscii() ); + Isf::Drawing* drawing = &( Isf::Stream::readerPng( isfData, true ) ); + + // We need to both set it to the canvas and change the object stored by the chat tab, + // so the old drawing will be destroyed + getCurrentChat()->setInkDrawing( drawing ); + inkCanvas_->setDrawing( drawing ); + + // Update the canvas and switch to it + inkButton_->setChecked( true ); + slotSwitchEditor( inkButton_ ); + sendButton_->setDisabled( drawing->isNull() ); + + dropEvent->acceptProposedAction(); + return true; + } + } + + + // Process the drop only if it comes from out of our application. + if( dropEvent->source() != 0 ) + { +#ifdef KMESSDEBUG_CHATWINDOW + kDebug() << "Ignoring internal drop!"; +#endif + dropEvent->ignore(); + return true; + } + + // Handle drag and drop of files if( mimeData->hasUrls() ) { #ifdef KMESSDEBUG_CHATWINDOW @@ -1112,7 +1156,7 @@ bool ChatWindow::handleCommand( QString command ) } QString toStatus; - const QStringList& participants( getCurrentChat()->getParticipants() ); + const QStringList participants( getCurrentChat()->getParticipants() ); if( isStatusCommand ) { @@ -1378,7 +1422,7 @@ void ChatWindow::readProperties(const KConfigGroup &config ) { // The parameter is kept to mantain the same arguments as KMainWindow::readProperties(). Q_UNUSED( config ); - const KConfigGroup& group( KMessConfig::instance()->getAccountConfig( currentAccount_->getHandle(), "ChatWindow" ) ); + const KConfigGroup group( KMessConfig::instance()->getAccountConfig( currentAccount_->getHandle(), "ChatWindow" ) ); // Read the window position const QPoint pos( group.readEntry( "Position", QPoint() ) ); @@ -1405,7 +1449,7 @@ void ChatWindow::readProperties(const KConfigGroup &config ) // what's going on. restoreWindowSize( group ); - + restoreState( state ); // Read if the spelling check feature is enabled @@ -1466,11 +1510,19 @@ void ChatWindow::saveProperties( KConfigGroup &config ) // Send a ink via server void ChatWindow::sendInk() { + Chat* currentChat = getCurrentChat(); + + // Do not send empty drawings + if( currentChat->getInkDrawing()->isNull() ) + { + return; + } + bool supportGifInk = true; bool supportIsfInk = true; // Find out which ink formats are supported by all participants - const QStringList &participants( getCurrentChat()->getParticipants() ); + const QStringList participants( currentChat->getParticipants() ); foreach( const QString &handle, participants ) { const ContactBase *contact = currentAccount_->getContactByHandle( handle ); @@ -1489,18 +1541,18 @@ void ChatWindow::sendInk() { kWarning() << "Neither Ink formats are supported by the participants!"; - getCurrentChat()->showMessage( ChatMessage( ChatMessage::TYPE_SYSTEM, - ChatMessage::CONTENT_SYSTEM_ERROR, - true, - i18nc( "Error message shown in chat", - "Failed to send the handwritten message: " - "the contacts do not support it." ), - QString(), - QString() ) ); + currentChat->showMessage( ChatMessage( ChatMessage::TYPE_SYSTEM, + ChatMessage::CONTENT_SYSTEM_ERROR, + true, + i18nc( "Error message shown in chat", + "Failed to send the handwritten message: " + "the contacts do not support it." ), + QString(), + QString() ) ); return; } - InkFormat format; + InkFormat format = FORMAT_ISF; QByteArray ink; if( supportIsfInk ) @@ -1512,7 +1564,7 @@ void ChatWindow::sendInk() format = FORMAT_ISF; ink = Isf::Stream::writer( *( inkCanvas_->drawing() ) ); } - else if( supportGifInk ) + else if( supportGifInk && Isf::Stream::supportsGif() ) { #ifdef KMESSDEBUG_CHATWINDOW kDebug() << "Retrieving GIF ink data"; @@ -1527,30 +1579,21 @@ void ChatWindow::sendInk() { kWarning() << "An error occured while creating the" << ( supportIsfInk ? "ISF" : "GIF" ) << "Ink data!"; - getCurrentChat()->showMessage( ChatMessage( ChatMessage::TYPE_SYSTEM, - ChatMessage::CONTENT_SYSTEM_ERROR, - true, - i18nc( "Error message shown in chat", - "Failed to send the handwritten message: " - "an error has occurred while creating it." ), - QString(), - QString() ) ); + currentChat->showMessage( ChatMessage( ChatMessage::TYPE_SYSTEM, + ChatMessage::CONTENT_SYSTEM_ERROR, + true, + i18nc( "Error message shown in chat", + "Failed to send the handwritten message: " + "an error has occurred while creating it." ), + QString(), + QString() ) ); return; } - getCurrentChat()->sendInkMessage( format, ink ); - - // Get the pixels, to show the ink in chat - QImage image( inkCanvas_->image() ); - - // Save it as a PNG image, which KHTML will be able to show - QBuffer buffer; - buffer.open( QIODevice::WriteOnly ); - image.save( &buffer, "PNG" ); - buffer.close(); + currentChat->sendInkMessage( format, ink ); // Show the message in the browser window - const QString& text( "" ); + const QString text( "" ); ChatMessage message( ChatMessage::TYPE_OUTGOING, ChatMessage::CONTENT_MESSAGE_INK, @@ -1560,7 +1603,7 @@ void ChatWindow::sendInk() currentAccount_->getFriendlyName( STRING_ORIGINAL ), currentAccount_->getPicturePath() ); - getCurrentChat()->showMessage( message ); + currentChat->showMessage( message ); // Clear and reset the state of the send button inkCanvas_->clear(); @@ -1578,7 +1621,7 @@ void ChatWindow::sendMessage() QString text( messageEdit_->toPlainText() ); // Don't send empty messages - if( text.isEmpty() ) + if( text.trimmed().isEmpty() ) { return; } @@ -1597,7 +1640,7 @@ void ChatWindow::sendMessage() } else if( text.left( 1 ) == "/" ) { - const QString& command( text.mid( 1 ) ); + const QString command( text.mid( 1 ) ); // Handle command. If 'false' is returned, send it anyway. if ( handleCommand( command ) ) @@ -1609,15 +1652,15 @@ void ChatWindow::sendMessage() // If the text is longer than the sendable amount, put the remainder back in the text edit. // Since the message will be sent as UTF8, it's the UTF8 length we have to consider. - const QByteArray& utf8Text( text.toUtf8() ); + const QByteArray utf8Text( text.toUtf8() ); if( utf8Text.length() > maxSendableMessageLength ) { // If so, then divide the text into the first part and a remainder. - const QByteArray& remainder( utf8Text.right( utf8Text.length() - maxSendableMessageLength ) ); - text = QString::fromUtf8( utf8Text.left( maxSendableMessageLength ) ); + const QByteArray remainder( utf8Text.right( utf8Text.length() - maxSendableMessageLength ) ); + text = QString::fromUtf8( utf8Text.left( maxSendableMessageLength ) ); // Return the remainder to the message edit. - const QString& remainingText( QString::fromUtf8( remainder ) ); + const QString remainingText( QString::fromUtf8( remainder ) ); messageEdit_->setText( remainingText ); lastSentence_ = remainingText; } @@ -1953,7 +1996,7 @@ void ChatWindow::slotBlinkCaption() // Make the caption alternate case if ( blinkToUpper_ ) { - const QString& caption( QTextDocumentFragment::fromHtml( caption_.toUpper() ).toPlainText() ); + const QString caption( QTextDocumentFragment::fromHtml( caption_.toUpper() ).toPlainText() ); setWindowTitle( QString( "* " + caption ) ); } else @@ -2085,7 +2128,7 @@ void ChatWindow::slotGotTypingMessage( Chat *chat ) const QPalette palette; int tabIndex = chatTabs_->indexOf( chat ); - const QStringList& typingContacts( chat->getTypingContacts() ); + const QStringList typingContacts( chat->getTypingContacts() ); #ifdef KMESSDEBUG_CHATWINDOW_TYPING_MESSAGES kDebug() << "These contacts are typing:" << typingContacts; @@ -2133,14 +2176,14 @@ void ChatWindow::slotGotTypingMessage( Chat *chat ) // Decide what string will be used depending on how many contacts are typing if( typingContacts.count() == 1 ) { - const QString& first( typingContacts.first() ); + const QString& first = typingContacts.first(); statusString = i18n( "%1 is typing...", first ); } else { int count = typingContacts.count() - 2; - const QString& first ( typingContacts[0] ); - const QString& second ( typingContacts[1] ); + const QString& first = typingContacts[0]; + const QString& second = typingContacts[1]; if( count == 0 ) { @@ -2270,9 +2313,10 @@ void ChatWindow::slotSendButtonClicked() // Switch to the message editor, or another one -void ChatWindow::slotSwitchEditor() +void ChatWindow::slotSwitchEditor( QObject* widget ) { - const QObject *caller = sender(); + // If a specific widget was specified, use it instead + const QObject *caller = widget ? widget : sender(); bool disableSendButton = true; bool disableNewLineButton = true; @@ -2285,7 +2329,7 @@ void ChatWindow::slotSwitchEditor() customEmoticonsWidget_->hide(); winksWidget_->hide(); inkCanvas_->hide(); - + // Show the text control frame by default inkCtlFrame_->setVisible( false ); textCtlFrame_->setVisible( true ); @@ -2603,7 +2647,7 @@ void ChatWindow::slotUpdateChatInfo( Chat *chat ) return; } - const QStringList& participantsList( chat->getParticipants() ); + const QStringList participantsList( chat->getParticipants() ); if ( chat == getCurrentChat() ) { @@ -2728,7 +2772,7 @@ void ChatWindow::updateModeButtons() enableInkButton = false; #endif - const QStringList &participants( getCurrentChat()->getParticipants() ); + const QStringList participants( getCurrentChat()->getParticipants() ); foreach( const QString &handle, participants ) { const ContactBase *contact = currentAccount_->getContactByHandle( handle ); diff --git a/src/chat/chatwindow.h b/src/chat/chatwindow.h index e2309c8..7bb8e1a 100644 --- a/src/chat/chatwindow.h +++ b/src/chat/chatwindow.h @@ -187,7 +187,7 @@ class ChatWindow : public KXmlGuiWindow, private Ui::ChatWindow // The user pressed return in the message editor, so send the message void slotSendButtonClicked(); // Switch to the message editor, or another one - void slotSwitchEditor(); + void slotSwitchEditor( QObject* widget = 0 ); // The active tab was changed void slotTabChanged( int currentIndex ); // Remove a chat diff --git a/src/chat/chatwindow.ui b/src/chat/chatwindow.ui index dec6aa5..e5af393 100644 --- a/src/chat/chatwindow.ui +++ b/src/chat/chatwindow.ui @@ -517,7 +517,7 @@ Isf::InkCanvas QWidget -
    ../contrib/isf-qt/include/IsfInkCanvas
    +
    IsfInkCanvas
    1
    diff --git a/src/chat/contactframe.cpp b/src/chat/contactframe.cpp index e34c097..768c446 100644 --- a/src/chat/contactframe.cpp +++ b/src/chat/contactframe.cpp @@ -69,7 +69,7 @@ ContactFrame::ContactFrame( QWidget *parent ) layout()->setAlignment( Qt::AlignTop | Qt::AlignLeft ); // Just for show - const QPixmap& pixmap( KGlobal::dirs()->findResource( "data", "kmess/pics/unknown.png" ) ); + const QPixmap pixmap( KGlobal::dirs()->findResource( "data", "kmess/pics/unknown.png" ) ); contactPixmapLabel_->setPixmap( pixmap ); installEventFilter( this ); @@ -122,7 +122,7 @@ void ContactFrame::activate( ContactBase *contact ) // ensure we know when the contact is now invalid. connect( contact_, SIGNAL( destroyed(QObject*) ), this, SLOT( contactDestroyed(QObject*) ) ); - + if( detailedContact_ != 0 ) { // Connect the contact, to update the frame on presence info changes @@ -262,7 +262,7 @@ bool ContactFrame::eventFilter( QObject *obj, QEvent *event ) else if( eventType == QEvent::Leave && !typingTimer_.isActive() ) { QImage image( detailedContact_->getContactPicturePath() ); - + // Only disable glow effect when the contact is not typing contactPixmapLabel_->setPixmap( QPixmap::fromImage( image ) ); } @@ -547,7 +547,7 @@ void ContactFrame::showContactPopup( const QPoint &point ) copyLinkActionsList_.clear(); // Append friendly name and personal message so cycle only one time to search links - const QString& nameAndPm( detailedContact_->getFriendlyName() + " " + detailedContact_->getPersonalMessage() ); + const QString nameAndPm( detailedContact_->getFriendlyName() + " " + detailedContact_->getPersonalMessage() ); QStringList links; //Initialize index, link RegExp and found boolean for insert separator only at first found link @@ -744,9 +744,9 @@ void ContactFrame::updatePicture() } // See if the contact picture is not updated. Avoids GUI flashing on older boxes - const QString& contactPicturePath( contact_->getContactPicturePath() ); - const QFileInfo& contactPictureInfo( contactPicturePath ); - const QDateTime& contactPictureDate( contactPictureInfo.lastModified() ); + const QString contactPicturePath( contact_->getContactPicturePath() ); + const QFileInfo contactPictureInfo( contactPicturePath ); + const QDateTime contactPictureDate( contactPictureInfo.lastModified() ); if( contactPicturePath == contactPicturePath_ && contactPictureDate == contactPictureDate_ ) @@ -825,13 +825,13 @@ void ContactFrame::updateStatusWidgets() // Update the informative label if( detailedContact_ && infoLabelEnabled_ ) { - const QString& mediaString( detailedContact_->getCurrentMediaString() ); - const QString& messageString( detailedContact_->getPersonalMessage( STRING_CHAT_SETTING_ESCAPED ) ); + const QString& mediaString = detailedContact_->getCurrentMediaString(); + const QString& messageString = detailedContact_->getPersonalMessage( STRING_CHAT_SETTING_ESCAPED ); if( ! mediaString.isEmpty() ) { // Determine the icon for the various media types, if none no icon will be shown QString mediaEmoticon; - const QString& mediaType( detailedContact_->getCurrentMediaType() ); + const QString& mediaType = detailedContact_->getCurrentMediaType(); if( mediaType == "Music" ) { mediaEmoticon = EmoticonManager::instance()->getReplacement( "(8)", true ); @@ -849,7 +849,7 @@ void ContactFrame::updateStatusWidgets() { infoLabel_->setVisible( true ); infoLabel_->setText( messageString ); - infoLabel_->setToolTip( detailedContact_->getPersonalMessage( STRING_CHAT_SETTING ) ); + infoLabel_->setToolTip( detailedContact_->getPersonalMessage( STRING_CLEANED ) ); } else { diff --git a/src/chat/contactframe.ui b/src/chat/contactframe.ui index 70b587c..7d16a36 100644 --- a/src/chat/contactframe.ui +++ b/src/chat/contactframe.ui @@ -6,7 +6,7 @@ 0 0 - 350 + 137 309 @@ -114,7 +114,7 @@ - 40 + 8 20 @@ -133,8 +133,8 @@ - 96 - 96 + 102 + 102 @@ -167,6 +167,9 @@ true + + Qt::AlignCenter + Qt::NoTextInteraction @@ -179,7 +182,7 @@ - 40 + 8 20 diff --git a/src/chat/contactswidget.cpp b/src/chat/contactswidget.cpp index fdd324f..32085c4 100644 --- a/src/chat/contactswidget.cpp +++ b/src/chat/contactswidget.cpp @@ -94,7 +94,7 @@ void ContactsWidget::contactAdded( Contact *contact ) void ContactsWidget::contactJoined( ContactBase* contact ) { // See if the contact already has a frame - const QString& handle( contact->getHandle() ); + const QString& handle = contact->getHandle(); ContactFrame *contactFrame = getContactFrameByHandle( handle ); if( contactFrame != 0 ) @@ -132,7 +132,7 @@ void ContactsWidget::contactJoined( ContactBase* contact ) // A contact left the chat void ContactsWidget::contactLeft( ContactBase *contact, bool /*isChatIdle*/ ) { - const QString& handle( contact->getHandle() ); + const QString& handle = contact->getHandle(); ContactFrame *contactFrame = getContactFrameByHandle( handle ); if ( contactFrame == 0 ) @@ -242,12 +242,12 @@ bool ContactsWidget::eventFilter( QObject *obj, QEvent *event ) return true; } break; - + case QEvent::DragEnter: { QDragEnterEvent *dragEvent = static_cast( event ); const QMimeData *mimeData = dragEvent->mimeData(); - + // The mimeData object can contain one of the following objects: an image, HTML text, plain text, or a list of URLs. // We need only the first URL object if( mimeData->hasUrls() ) @@ -260,7 +260,7 @@ bool ContactsWidget::eventFilter( QObject *obj, QEvent *event ) } } break; - + case QEvent::Drop: { QDropEvent* dropEvent = static_cast( event ); @@ -277,7 +277,7 @@ bool ContactsWidget::eventFilter( QObject *obj, QEvent *event ) bool isRemoteFile = false; QString localFilePath; QImage pictureData; - + if( mimeUrl.isEmpty() ) { kWarning() << "Dropped empty MIME URL"; @@ -298,23 +298,23 @@ bool ContactsWidget::eventFilter( QObject *obj, QEvent *event ) KMessageBox::sorry( this, i18n( "Downloading of display picture failed" ), i18n("KMess") ); return true; } - + isRemoteFile = true; } - + if( ! pictureData.load( localFilePath ) ) { kWarning() << "The file dropped is not an image or doesn't exist"; return true; } - + if( isRemoteFile ) { KIO::NetAccess::removeTempFile( localFilePath ); } pictureData = pictureData.scaled( 96, 96, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation ); // Makes smallest edge 96 pixels, preserving aspect ratio - + if( pictureData.width() != 96 || pictureData.height() != 96 ) { // Copy the middle part of the picture. @@ -595,7 +595,7 @@ void ContactsWidget::slotUpdateDisplayPicture() } // The picture is unchanged, do nothing - const QString &pictureFileName( currentAccount->getPicturePath() ); + const QString pictureFileName = currentAccount->getPicturePath(); if( userPixmapLabel_->property( "PictureFileName" ) == pictureFileName ) { #ifdef KMESSDEBUG_CONTACTSWIDGET @@ -609,7 +609,7 @@ void ContactsWidget::slotUpdateDisplayPicture() #endif // Change the picture - const QPixmap& image( pictureFileName ); + const QPixmap image( pictureFileName ); userPixmapLabel_->setPixmap( image ); userPixmapLabel_->setProperty( "PictureFileName", pictureFileName ); } diff --git a/src/chat/contactswidget.ui b/src/chat/contactswidget.ui index 7cf8b6c..c6a5218 100644 --- a/src/chat/contactswidget.ui +++ b/src/chat/contactswidget.ui @@ -40,7 +40,7 @@ 0 0 221 - 190 + 184 @@ -87,8 +87,8 @@ - 96 - 96 + 102 + 102 diff --git a/src/chat/winkswidget.cpp b/src/chat/winkswidget.cpp index f7346cb..cb91405 100644 --- a/src/chat/winkswidget.cpp +++ b/src/chat/winkswidget.cpp @@ -80,7 +80,7 @@ void WinksWidget::refresh() QFileInfo fileInfo; KIcon icon; QString iconPath; - const QStringList& cabFiles( directory.entryList( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks ) ); + const QStringList cabFiles( directory.entryList( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks ) ); if( cabFiles.isEmpty() ) { @@ -132,7 +132,7 @@ void WinksWidget::refresh() else { // Search for wink image - const QStringList& images( winkDirectory.entryList( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks ) ); + const QStringList images( winkDirectory.entryList( QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks ) ); if( images.isEmpty() ) { iconPath = "view-media-artist"; @@ -165,7 +165,7 @@ void WinksWidget::refresh() WinksWidget::CABEXTRACTOR WinksWidget::getHtmlFromWink( const QString &filename, QString &html ) { const QFileInfo fileInfo( filename ); - const QString& winksDir( KMessConfig::instance()->getAccountsDirectory() + "/winks/" + fileInfo.baseName() ); + const QString winksDir( KMessConfig::instance()->getAccountsDirectory() + "/winks/" + fileInfo.baseName() ); QFile metaFile( winksDir + + "/content.xml" ); @@ -191,7 +191,7 @@ WinksWidget::CABEXTRACTOR WinksWidget::getHtmlFromWink( const QString &filename, if( exitCode != 0 ) { - const QByteArray& errorOutput( cabextract.readAll() ); + const QByteArray errorOutput( cabextract.readAll() ); kWarning().nospace() << "cabextract failed with the following output: " << errorOutput.trimmed(); return FAILED; @@ -220,7 +220,7 @@ WinksWidget::CABEXTRACTOR WinksWidget::getHtmlFromWink( const QString &filename, } // Get the package nodes - const QDomElement& packageNode( xml.namedItem("package").toElement() ); + const QDomElement packageNode( xml.namedItem("package").toElement() ); if( packageNode.isNull() ) { kWarning() << "XML element /package not found!"; @@ -239,17 +239,17 @@ WinksWidget::CABEXTRACTOR WinksWidget::getHtmlFromWink( const QString &filename, } // Get the child nodes - const QDomNodeList& packageItems( packageNode.childNodes() ); + const QDomNodeList packageItems( packageNode.childNodes() ); QString thumbnail; QString animation; QString animationType; for(int i = 0; i < packageItems.count(); i++) { - const QDomElement& child( packageItems.item(i).toElement() ); + const QDomElement child( packageItems.item(i).toElement() ); if( child.tagName() == "item" ) { - const QString& type( child.attribute( "type" ) ); + const QString type( child.attribute( "type" ) ); if( type == "animation" ) { animation = child.attribute( "file" ); @@ -277,7 +277,7 @@ WinksWidget::CABEXTRACTOR WinksWidget::getHtmlFromWink( const QString &filename, animation = Qt::escape(animation).replace("\"", """); // quotes are not escaped by QStyleSheet::escape(). animationType = animationType.remove( QRegExp("[^a-zA-Z0-9\\-/]") ); - const QString& filePath( winksDir + "/" + animation ); + const QString filePath( winksDir + "/" + animation ); // Height of 150 is a lot, but most winks are designed to be full-screen, so they can hardly be displayed smaller. html = "
    \n" @@ -301,8 +301,8 @@ const MsnObject WinksWidget::getMsnObjectWinkSelected() } // Grep the fileName of wink that the user selected and the handle to put in msn object - const QString& fileName( item->data( Qt::UserRole).toString() ); - const QString& handle( CurrentAccount::instance()->getHandle() ); + const QString fileName( item->data( Qt::UserRole).toString() ); + const QString& handle = CurrentAccount::instance()->getHandle(); // First, check if the file exists QFile file( winksDir_ + fileName ); @@ -315,7 +315,7 @@ const MsnObject WinksWidget::getMsnObjectWinkSelected() const QFileInfo fileInfo( file ); // Second, read the content of wink ( it will be used for compute sha1c in msnobject ) - const QByteArray& data( file.readAll() ); + const QByteArray data( file.readAll() ); file.close(); // Try to read the certificate for the wink, without it the WLM doesn't show the wink received @@ -328,7 +328,7 @@ const MsnObject WinksWidget::getMsnObjectWinkSelected() } // Third, read the certificate - const QByteArray& stamp( file.readAll() ); + const QByteArray stamp( file.readAll() ); file.close(); if( stamp.isEmpty() ) { diff --git a/src/contact/contact.cpp b/src/contact/contact.cpp index e975074..e065bc6 100644 --- a/src/contact/contact.cpp +++ b/src/contact/contact.cpp @@ -39,6 +39,7 @@ Contact::Contact( const QString& handle, const QString& friendlyName, int lists, friend_(false), groupIds_(groupIds), guid_(guid), + isMessengerUser_( true ), lastStatus_(STATUS_OFFLINE), movingFrom_(""), msnObject_(0), @@ -292,6 +293,14 @@ bool Contact::isFriend() const +// Whether the contact is a Messenger user +bool Contact::isMessengerUser() const +{ + return isMessengerUser_; +} + + + // Whether or not the contact is on the pending list bool Contact::isPending() const { @@ -496,6 +505,14 @@ void Contact::setFriendlyName( QString newName ) +// Change the "IsMessengerUser" property for this contact. +void Contact::setMessengerUser( bool isMessengerUser ) +{ + isMessengerUser_ = isMessengerUser; +} + + + // Change the GUID of the contact, this is only known when the contact is added to the friends list. void Contact::setGuid( const QString &guid ) { diff --git a/src/contact/contact.h b/src/contact/contact.h index 8c83014..fa27348 100644 --- a/src/contact/contact.h +++ b/src/contact/contact.h @@ -118,6 +118,8 @@ class Contact : public ContactBase bool isBlocked() const; // Whether or not the contact is on the friends list bool isFriend() const; + // Whether the contact is a Messenger user + bool isMessengerUser() const; // Whether or not the contact is on the pending list bool isPending() const; // Whether or not the contact is on the reverse list @@ -138,6 +140,8 @@ class Contact : public ContactBase void setFriend(bool isFriend); // Change the contact's friendly name void setFriendlyName(QString newName); + // Set whether or not the contact is a Messenger user + void setMessengerUser( bool isMessengerUser ); // Change the GUID of the contact, this is only known when the contact is added to the friends list. void setGuid(const QString &guid); // Set the extra information retrieved by soap response @@ -170,6 +174,8 @@ class Contact : public ContactBase QString guid_; // Extra informations QHash informations_; + // Whether the contact is a Messenger user + bool isMessengerUser_; // The previous contact's status of the contact Status lastStatus_; // Name of the original group when the contact is being moved diff --git a/src/contact/contactextension.cpp b/src/contact/contactextension.cpp index a56d7c9..b53e145 100644 --- a/src/contact/contactextension.cpp +++ b/src/contact/contactextension.cpp @@ -173,7 +173,7 @@ const QStringList& ContactExtension::getPictureList() const void ContactExtension::readProperties( const KConfigGroup &config ) { // Get the configuration group where this contact's data is stored - const KConfigGroup& extensionGroup( config.group( "Extension" ) ); + const KConfigGroup extensionGroup = config.group( "Extension" ); // When changing any of those default values, also change the saving condition // in saveProperties() ! @@ -240,12 +240,12 @@ void ContactExtension::saveProperties( KConfigGroup &config ) { extensionGroup.writeEntry( "lastSeen", lastSeen_.toTime_t() ); } - + if( ! lastMessageDate_.isNull() && lastMessageDate_.isValid() ) { extensionGroup.writeEntry( "lastMessageDate", lastMessageDate_.toTime_t() ); } - + extensionGroup.writeEntry( "pictureFile", pictureFile_ ); extensionGroup.writeEntry( "pictureFileList", pictureFileList_ ); extensionGroup.writeEntry( "soundFile", soundFile_ ); @@ -277,7 +277,7 @@ void ContactExtension::setAlternativeName( const QString& newAlternativeName ) void ContactExtension::setContactAlternativePicturePath( const QString& _newVal ) { alternativePictureFile_ = _newVal; - + emit changedPicture(); } diff --git a/src/contact/group.cpp b/src/contact/group.cpp index f9dee15..f1ca9c8 100644 --- a/src/contact/group.cpp +++ b/src/contact/group.cpp @@ -104,7 +104,7 @@ bool Group::isSpecialGroup() const void Group::readProperties( const KConfigGroup &config ) { // Get the configuration group where this group's data is stored - const KConfigGroup& groupConfig( config.group( id_ ) ); + const KConfigGroup groupConfig( config.group( id_ ) ); // Obtain the sort positiong of this group. Special groups have no sorting. if( ! isSpecialGroup() ) diff --git a/src/contact/msnobject.cpp b/src/contact/msnobject.cpp index 5bfefc9..95b41d7 100644 --- a/src/contact/msnobject.cpp +++ b/src/contact/msnobject.cpp @@ -183,7 +183,7 @@ void MsnObject::loadObject( const QString& object ) sha1c_ = getAttribute("SHA1C", object).toUtf8(); // Get the friendly name from the object - const QString& friendlyEncoded( getAttribute( "Friendly", object ) ); + const QString friendlyEncoded( getAttribute( "Friendly", object ) ); // The string is empty, store an empty friendly if( friendlyEncoded.isEmpty() ) @@ -216,7 +216,7 @@ bool MsnObject::verifyFile( const QString &fileName ) const return false; } - const QByteArray& fileData( file.readAll() ); + const QByteArray fileData( file.readAll() ); file.close(); return generateDataHash( fileData ) == sha1d_; @@ -299,7 +299,7 @@ bool MsnObject::hasChanged( const QString &newObj ) const return true; } - const QString& objSha1d( getAttribute( "SHA1D", newObj ) ); + const QString objSha1d( getAttribute( "SHA1D", newObj ) ); // The data hash is more important than the full object hash, if it's present, use it if( ! sha1d_.isEmpty() && ! objSha1d.isEmpty() ) diff --git a/src/contact/msnstatus.cpp b/src/contact/msnstatus.cpp index 4a1ed46..d41a830 100644 --- a/src/contact/msnstatus.cpp +++ b/src/contact/msnstatus.cpp @@ -116,6 +116,38 @@ QPixmap MsnStatus::getIcon( const Status status, const Flags flags ) +/** + * Returns the icon name for the specified status + * + * Only the base icon name can be returned. + * + * @param status KMess::MsnStatus for which to create the picture + * @return The status icon + */ +QString MsnStatus::getIconName( const Status status ) +{ + // Set the base icon depending on the status + switch( status ) + { + case STATUS_ONLINE: return "user-online"; + case STATUS_BUSY: return "user-busy"; + case STATUS_BE_RIGHT_BACK: + case STATUS_AWAY: return "user-away"; + case STATUS_ON_THE_PHONE: + case STATUS_OUT_TO_LUNCH: + case STATUS_IDLE: return "user-away-extended"; + case STATUS_INVISIBLE: return "user-invisible"; + case STATUS_OFFLINE: return "user-offline"; + + default: + kWarning() << "Invalid status" << status << "!"; + } + + return "user-online"; +} + + + /** * Returns a three-letter code (like BSY for Busy) for a status * diff --git a/src/contact/msnstatus.h b/src/contact/msnstatus.h index a8997af..64c63fa 100644 --- a/src/contact/msnstatus.h +++ b/src/contact/msnstatus.h @@ -82,6 +82,8 @@ class MsnStatus // Returns an icon for a status static QPixmap getIcon( const Status status, const Flags flags = FlagNone ); + // Returns the icon name for the specified status + static QString getIconName( const Status status ); // Returns a three-letter code (like BSY) for a status static QString getCode( const Status status ); // Returns the localized name for a status diff --git a/src/dialogs/addcontactdialog.cpp b/src/dialogs/addcontactdialog.cpp index 4b35f37..c551c57 100644 --- a/src/dialogs/addcontactdialog.cpp +++ b/src/dialogs/addcontactdialog.cpp @@ -118,7 +118,7 @@ AddContactDialog::~AddContactDialog() */ void AddContactDialog::interfaceChanged() { - const QString& emailAddress( emailAddressEdit_->text() ); + const QString emailAddress( emailAddressEdit_->text() ); /** * If you try to add a contact handle which doesn't pass basic mail validation (addresses like "" or "none" diff --git a/src/dialogs/addemoticondialog.cpp b/src/dialogs/addemoticondialog.cpp index 640d8e1..aff7544 100644 --- a/src/dialogs/addemoticondialog.cpp +++ b/src/dialogs/addemoticondialog.cpp @@ -75,7 +75,7 @@ AddEmoticonDialog::AddEmoticonDialog( EmoticonTheme *theme, QWidget *parent ) movie_ = new QMovie(); movie_->setCacheMode ( QMovie::CacheAll ); - + // Force an update of the widgets (mainly to show the KMess logo as // the preview and to disable the Ok button) interfaceChanged(); @@ -145,8 +145,8 @@ void AddEmoticonDialog::editEmoticon( const QString &pictureName, const QString void AddEmoticonDialog::interfaceChanged() { bool enable = true; - const QString& currentShortcut ( shortcutEdit_->text() ); - const QString& currentEmoticonPath( pictureEdit_ ->text() ); + const QString currentShortcut ( shortcutEdit_->text() ); + const QString currentEmoticonPath( pictureEdit_ ->text() ); // Check if the current emoticon path is empty. if( currentEmoticonPath.isEmpty() ) diff --git a/src/dialogs/chathistorydialog.cpp b/src/dialogs/chathistorydialog.cpp index 5387a39..dfc552e 100644 --- a/src/dialogs/chathistorydialog.cpp +++ b/src/dialogs/chathistorydialog.cpp @@ -114,7 +114,7 @@ ChatHistoryDialog::ChatHistoryDialog( QWidget *parent ) if( ! kmessApp->getContactListWindow()->isConnected() || CurrentAccount::instance()->isGuestAccount() ) { - const QString ¤tHandle( handleComboBox_->itemText( 0 ) ); + const QString currentHandle( handleComboBox_->itemText( 0 ) ); historyAccount_ = AccountsManager::instance()->getAccountByHandle( currentHandle ); handleComboBox_->setCurrentItem( currentHandle ); } @@ -460,7 +460,7 @@ void ChatHistoryDialog::loadContactsList() // Change the account for which to show logs void ChatHistoryDialog::reloadHandle( int index ) { - const QString &handle( handleComboBox_->itemText( index ) ); + const QString handle( handleComboBox_->itemText( index ) ); historyAccount_ = AccountsManager::instance()->getAccountByHandle( handle ); loadContactsList(); diff --git a/src/dialogs/contactaddeduserdialog.cpp b/src/dialogs/contactaddeduserdialog.cpp index 8ee68d1..4a3451f 100644 --- a/src/dialogs/contactaddeduserdialog.cpp +++ b/src/dialogs/contactaddeduserdialog.cpp @@ -16,6 +16,7 @@ ***************************************************************************/ #include "contactaddeduserdialog.h" +#include "../contact/contact.h" #include "../model/contactlist.h" #include "../contact/group.h" #include "../currentaccount.h" @@ -67,6 +68,14 @@ ContactAddedUserDialog::ContactAddedUserDialog( const QString &contactHandle, co , contactHandle ) ); } + // if they're already a friend, ie in the contact list, don't allow the "add" option to + // be selected. only options should be to allow or block. + Contact *c = CurrentAccount::instance()->getContactList()->getContactByHandle( contactHandle ); + if ( c && c->isFriend() ) + { + addContactOption_->setEnabled( false ); + } + // Fill up the groups list from the contactlist data QList groupList( CurrentAccount::instance()->getContactList()->getGroupList() ); QListWidgetItem *item; diff --git a/src/dialogs/contactpropertiesdialog.cpp b/src/dialogs/contactpropertiesdialog.cpp index eb21b4d..42a893a 100644 --- a/src/dialogs/contactpropertiesdialog.cpp +++ b/src/dialogs/contactpropertiesdialog.cpp @@ -143,7 +143,7 @@ void ContactPropertiesDialog::applyChanges() for( int i = 0; i < groupList_->count(); i++ ) { item = groupList_->item( i ); - const QString& currentId( item->data( 6 ).toString() ); + const QString currentId( item->data( 6 ).toString() ); if( item->checkState() == Qt::Checked ) { @@ -177,11 +177,11 @@ void ContactPropertiesDialog::applyChanges() // Choose a picture file (KFile dialog) void ContactPropertiesDialog::choosePicture() { - const KUrl& file( KFileDialog::getImageOpenUrl( alternativePicturePath_ , this ) ); + const KUrl file( KFileDialog::getImageOpenUrl( alternativePicturePath_ , this ) ); if ( ! file.isEmpty() ) { - const QPixmap& pixmap( file.toLocalFile() ); + const QPixmap pixmap( file.toLocalFile() ); // If it's a valid image if( ! pixmap.isNull() ) @@ -353,7 +353,7 @@ void ContactPropertiesDialog::restoreContactPicture() originalPicture = contact_->getContactDefaultPicturePath(); } - const QPixmap& pixmap( originalPicture ); + const QPixmap pixmap( originalPicture ); if( ! pixmap.isNull() ) { @@ -381,7 +381,7 @@ void ContactPropertiesDialog::setupWidgets() trueNameLabel_->setText( contact_->getTrueFriendlyName( STRING_LIST_SETTING_ESCAPED ) ); // Set the informations about contact - const QString& pm( contact_->getPersonalMessage( STRING_LIST_SETTING_ESCAPED ) ); + const QString& pm = contact_->getPersonalMessage( STRING_LIST_SETTING_ESCAPED ); if( pm.isEmpty() ) { // Hide to avoid blank space @@ -456,7 +456,7 @@ void ContactPropertiesDialog::setupWidgets() soundSelect_->setUrl( extension->getContactSoundPath() ); // Set the group list - const QStringList& groupIdsList( contact_->getGroupIds() ); + const QStringList& groupIdsList = contact_->getGroupIds(); const QList& groupContactList( CurrentAccount::instance()->getContactList()->getGroupList() ); QListWidgetItem *item; @@ -486,19 +486,20 @@ void ContactPropertiesDialog::setupWidgets() } // Set the pictures list - const QStringList& pictureList( extension->getPictureList() ); + const QStringList& pictureList = extension->getPictureList(); foreach( const QString &pictureFile, pictureList ) { // Load into QPixmap and check if the pixmap is valid - if( ! pixmap.load( pictureFile ) ) + QPixmap icon( pictureFile ); + if( icon.isNull() ) { continue; } // Set the new item and put it into pictures list item = new QListWidgetItem(); - item->setIcon( QIcon( pixmap ) ); + item->setIcon( icon ); item->setData( Qt::UserRole, pictureFile ); QFile fileDat( pictureFile + ".dat" ); @@ -513,7 +514,7 @@ void ContactPropertiesDialog::setupWidgets() } // Set up the emoticon blacklist - const QStringList& blackList( contact_->getEmoticonBlackList() ); + const QStringList& blackList = contact_->getEmoticonBlackList(); foreach( const QString &shortcut, blackList ) { item = new QListWidgetItem(); @@ -576,7 +577,7 @@ void ContactPropertiesDialog::slotPictureSelectionChanged() // The play sound button has been pressed void ContactPropertiesDialog::slotPlaySound() { - const QString& currentFile( soundSelect_->url().url() ); + const QString currentFile( soundSelect_->url().url() ); if( currentFile.isEmpty() ) { return; @@ -675,10 +676,10 @@ void ContactPropertiesDialog::slotUsePicture() const QFileInfo fileInfo( file ); CurrentAccount *account = CurrentAccount::instance(); - const QString& accountHandle( account->getHandle() ); - const QString& pictureDirPath( KMessConfig::instance()->getAccountDirectory( accountHandle ) + "/displaypics/" ); + const QString& accountHandle = account->getHandle(); + const QString pictureDirPath( KMessConfig::instance()->getAccountDirectory( accountHandle ) + "/displaypics/" ); - const QString& newFileName( pictureDirPath + fileInfo.fileName() ); + const QString newFileName( pictureDirPath + fileInfo.fileName() ); // If the file already exists in the personal picture directory, use it // Else copy it from contact directory diff --git a/src/dialogs/invitedialog.cpp b/src/dialogs/invitedialog.cpp index 1517ccd..629d4a4 100644 --- a/src/dialogs/invitedialog.cpp +++ b/src/dialogs/invitedialog.cpp @@ -130,7 +130,7 @@ void InviteDialog::addContact() void InviteDialog::addOtherContactEntry() { // Grep the text and clean the QLineEdit - const QString& handle( otherEdit_->text() ); + const QString handle( otherEdit_->text() ); otherEdit_->setText( "" ); // Check if the handle is empty or if the users to invite list contains already it @@ -212,7 +212,7 @@ void InviteDialog::removeContact() // The search text was changed void InviteDialog::searchTextChanged() { - const QString& text( searchEdit_->text().toLower() ); + const QString text( searchEdit_->text().toLower() ); ContactEntry *contactEntry; foreach( contactEntry, contactEntryList_ ) @@ -240,11 +240,11 @@ void InviteDialog::updateInterface( const QStringList &usersAlreadyInChat, bool QHashIterator it( currentAccount->getContactList()->getContactList() ); // Interate to add each contact - const QString& currentHandle( currentAccount->getHandle() ); + const QString& currentHandle = currentAccount->getHandle(); while ( it.hasNext() ) { contact = it.next().value(); - const QString& handle( contact->getHandle() ); + const QString& handle = contact->getHandle(); // If the current user is already in multi-chat, jump to next if( usersAlreadyInChat.contains( handle ) ) @@ -258,6 +258,12 @@ void InviteDialog::updateInterface( const QStringList &usersAlreadyInChat, bool continue; } + // skip non-messenger contacts. + if ( ! contact->isMessengerUser() ) + { + continue; + } + // Check if the contact is online or if we want also the offline contacts if( contact->isOnline() || ! onlyOnline ) { diff --git a/src/dialogs/userpicturesdialog.cpp b/src/dialogs/userpicturesdialog.cpp index 7ee1bfc..20edea3 100644 --- a/src/dialogs/userpicturesdialog.cpp +++ b/src/dialogs/userpicturesdialog.cpp @@ -108,7 +108,7 @@ void UserPicturesDialog::usePicture() return; } - emit pictureUpdate( false, currentItem->data( 6 ).toString() ); + emit pictureUpdate( false, currentItem->data( Qt::UserRole ).toString() ); } @@ -133,7 +133,7 @@ void UserPicturesDialog::deletePicture() } // Check if the file exists and remove it - const QString& filename( currentItem->data( 6 ).toString() ); + const QString filename( currentItem->data( Qt::UserRole ).toString() ); if( QFile::exists( filename ) ) { QFile::remove( filename ); @@ -150,7 +150,7 @@ void UserPicturesDialog::updateWidgets( const QString &handle ) { int number = 0; const QDir dir( KMessConfig::instance()->getAccountDirectory( handle ) + "/displaypics" ); - const QString& dirPath( dir.absolutePath() ); + const QString dirPath( dir.absolutePath() ); QListWidgetItem *item; @@ -158,7 +158,6 @@ void UserPicturesDialog::updateWidgets( const QString &handle ) clearList(); QString path; - QPixmap pixmap; foreach( const QString &file, dir.entryList( QDir::Files | QDir::NoDotAndDotDot ) ) { // To avoid listing of temporary picture file @@ -168,10 +167,15 @@ void UserPicturesDialog::updateWidgets( const QString &handle ) } path = dirPath + "/" + file; - if( pixmap.load( path ) ) + + // bug in 4.6.1/4.6.2 - QPixmap doesn't call detach() before load(), so the previous code + // here caused multiple copies of the last pixmap to be loaded to appear in the list box. + // workaround. this is fixed in 4.6.3. + QPixmap icon( path ); + if( ! icon.isNull() ) { - item = new QListWidgetItem( pixmap, QString::number( ++number ), listPictures_ ); - item->setData( 6, path ); + item = new QListWidgetItem( icon, QString::number( ++number ), listPictures_ ); + item->setData( Qt::UserRole, path ); } } diff --git a/src/emoticontheme.cpp b/src/emoticontheme.cpp index 024c022..3f1f81e 100644 --- a/src/emoticontheme.cpp +++ b/src/emoticontheme.cpp @@ -188,20 +188,20 @@ bool EmoticonTheme::createTheme( const QString& themeDir ) int i, l; QStringList shortcuts; QString shortcut; - const QDomNodeList& allEmoticons( xml.elementsByTagName( "emoticon" ) ); + const QDomNodeList allEmoticons( xml.elementsByTagName( "emoticon" ) ); for( i = 0; i < allEmoticons.count(); i++ ) { - const QDomElement& node( allEmoticons.at( i ).toElement() ); - const QString& emoticonFile( node.attribute( "file" ) ); + const QDomElement node( allEmoticons.at( i ).toElement() ); + const QString emoticonFile( node.attribute( "file" ) ); - const QDomNodeList& shortcutNodes( node.elementsByTagName( "string" ) ); + const QDomNodeList shortcutNodes( node.elementsByTagName( "string" ) ); shortcuts.clear(); // Load all the shortcut for the current emoticons for( l = 0; l < shortcutNodes.count(); l++ ) { - const QDomElement& shortcutNode( shortcutNodes.at( l ).toElement() ); + const QDomElement shortcutNode( shortcutNodes.at( l ).toElement() ); shortcut = shortcutNode.text(); shortcut.truncate( 7 ); shortcuts.append( shortcut ); @@ -414,12 +414,12 @@ QString EmoticonTheme::getThemeIcon( QString themeDir ) return QString::null; } - const QDomNodeList& allEmoticons( xml.elementsByTagName( "emoticon" ) ); + const QDomNodeList allEmoticons( xml.elementsByTagName( "emoticon" ) ); for( int i = 0; i < allEmoticons.count(); i++ ) { - const QDomElement& node( allEmoticons.at( i ).toElement() ); - const QString& emoticonFile( node.attribute( "file" ) ); + const QDomElement node( allEmoticons.at( i ).toElement() ); + const QString emoticonFile( node.attribute( "file" ) ); const Emoticon emoticon( emoticonFile, "", themeDir ); if( emoticon.isValid() ) @@ -631,7 +631,7 @@ bool EmoticonTheme::saveTheme() QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextStream xmlOutput( &xmlFile ); xmlOutput.setCodec( codec ); - + // Start the XML tree by writing the root tag xmlOutput << "" << endl << "" << endl << endl; @@ -642,14 +642,14 @@ bool EmoticonTheme::saveTheme() continue; } - // We only need base names of the emoticons: the specs - const QString& file( QFileInfo( emoticon->getPicturePath() ).baseName() ); + // We only need base names of the emoticons: the specs + const QString file( QFileInfo( emoticon->getPicturePath() ).baseName() ); // New emoticon: the file name is encoded as HTML to avoid XML parsing errors xmlOutput << "\t" << endl; // Add a for each shortcut which maps to this emoticon, - const QStringList &codes( emoticon->getShortcuts() ); + const QStringList &codes = emoticon->getShortcuts(); for( QStringList::ConstIterator it = codes.begin(); it != codes.end(); ++it ) { // Encode the shortcuts as HTML to avoid XML parsing errors @@ -739,12 +739,12 @@ void EmoticonTheme::updateCache() } // Generate the HTML tag which represents the emoticon - const QString& htmlSmall( emoticon->getHtml( true ) ); - const QString& htmlLarge( emoticon->getHtml( false ) ); - const QString& dataHash( emoticon->getDataHash() ); + const QString htmlSmall( emoticon->getHtml( true ) ); + const QString htmlLarge( emoticon->getHtml( false ) ); + const QString& dataHash = emoticon->getDataHash(); // Traverse all shortcuts of this emoticon - const QStringList &codes( emoticon->getShortcuts() ); + const QStringList &codes = emoticon->getShortcuts(); foreach( const QString &code, codes ) { // Convert to HTML the main significant HTML control characters @@ -902,7 +902,7 @@ void EmoticonTheme::updateTitles() foreach( Emoticon *emoticon, emoticons_ ) { - const QString& name( emoticon->getPictureName() ); + const QString& name = emoticon->getPictureName(); if( ! emoticonTitles.value( name, QString() ).isEmpty() ) { emoticon->setTooltip( emoticonTitles[ name ] ); @@ -958,17 +958,17 @@ bool EmoticonTheme::updateTheme( const QString& themeDir ) int i, l; QString shortcut; - const QDomNodeList& allEmoticons( xml.elementsByTagName( "emoticon" ) ); + const QDomNodeList allEmoticons( xml.elementsByTagName( "emoticon" ) ); for( i = 0; i < allEmoticons.count(); i++ ) { - const QDomElement& node( allEmoticons.at( i ).toElement() ); - const QString& emoticonFile( node.attribute( "file" ) ); + const QDomElement node( allEmoticons.at( i ).toElement() ); + const QString emoticonFile( node.attribute( "file" ) ); - const QDomNodeList& shortcutNodes( node.elementsByTagName( "string" ) ); + const QDomNodeList shortcutNodes( node.elementsByTagName( "string" ) ); for( l = 0; l < shortcutNodes.count(); l++ ) { - const QDomElement& shortcutNode( shortcutNodes.at( l ).toElement() ); + const QDomElement shortcutNode( shortcutNodes.at( l ).toElement() ); shortcut = shortcutNode.text(); shortcut.truncate( 7 ); themeFiles.insert( shortcut, emoticonFile ); @@ -984,7 +984,7 @@ bool EmoticonTheme::updateTheme( const QString& themeDir ) { // Loop through all codes of the emoticon bool codeFound = false; - const QStringList &codes( emoticon->getShortcuts() ); + const QStringList &codes = emoticon->getShortcuts(); for( QStringList::ConstIterator it = codes.begin(); it != codes.end(); ++it ) { diff --git a/src/kmess.cpp b/src/kmess.cpp index 4a0751e..61178db 100644 --- a/src/kmess.cpp +++ b/src/kmess.cpp @@ -429,7 +429,7 @@ void KMess::changedNowListeningSettings() Status status = currentAccount_->getStatus(); // Enable only if not offline or invisible - bool isOnline = ( status != STATUS_OFFLINE && status != STATUS_INVISIBLE ); + bool isOnline = ( status != STATUS_OFFLINE /*&& status != STATUS_INVISIBLE */); nowListeningClient_->setEnabled( currentAccount_->getShowNowListening() && isOnline ); #ifdef KMESSDEBUG_KMESS @@ -452,10 +452,13 @@ void KMess::changedSong( const QString &artist, const QString &album, const QStr } else { - // Update notification connection. - QStringList arguments; - arguments << track << artist << album << "" << ""; - msnNotificationConnection_->changeCurrentMedia( "", "Music", true, "{0} - {1}", arguments ); + if ( currentAccount_->getStatus() != STATUS_INVISIBLE && currentAccount_->getStatus() != STATUS_OFFLINE ) + { + // Update notification connection. + QStringList arguments; + arguments << track << artist << album << "" << ""; + msnNotificationConnection_->changeCurrentMedia( "", "Music", true, "{0} - {1}", arguments ); + } } // Update KMessView @@ -671,12 +674,14 @@ void KMess::showRenameGroupDialog( QString groupId ) bool okPressed = false; // Otherwise, get the new group name.. - const QString& currentName( group->getName() ); + const QString& currentName = group->getName(); // Launch a dialog to get a new group name - const QString& newGroupName( KInputDialog::getText(i18n( "Rename Group" ), - i18n( "Enter a new name for this group:" ), - currentName, &okPressed, this ) ); + const QString newGroupName( KInputDialog::getText( i18n( "Rename Group" ), + i18n( "Enter a new name for this group:" ), + currentName, + &okPressed, + this ) ); if( okPressed && currentName != newGroupName ) { @@ -893,6 +898,11 @@ void KMess::connectWithAccount(QString handle, QString password, bool rememberAc account->setUseAutologin( true ); } + if ( ! autologin ) + { + account->setUseAutologin( false ); + } + startConnection( account ); return; } @@ -1244,11 +1254,7 @@ bool KMess::initialize() slotConnectionStatusChanged( Solid::Networking::status() ); // Connect current account signals for Now Listening - connect( currentAccount_, SIGNAL( accountInvisible() ), - this, SLOT ( changedNowListeningSettings() )); - connect( currentAccount_, SIGNAL( accountOffline() ), - this, SLOT ( changedNowListeningSettings() )); - connect( currentAccount_, SIGNAL( accountOnline() ), + connect( currentAccount_, SIGNAL( changedStatus() ), this, SLOT ( changedNowListeningSettings() )); // Connect current account diff --git a/src/kmessinterface.cpp b/src/kmessinterface.cpp index 2bb20e9..0be8ddf 100644 --- a/src/kmessinterface.cpp +++ b/src/kmessinterface.cpp @@ -17,7 +17,12 @@ #include "kmessinterface.h" -#include "notification/systemtraywidget.h" +#ifdef HAVE_NEW_TRAY + #include "notification/newsystemtraywidget.h" +#else + #include "notification/systemtraywidget.h" +#endif + #include "settings/globalsettingsdialog.h" #include "utils/likeback/likeback.h" #include "utils/kmessconfig.h" @@ -63,7 +68,7 @@ KMessInterface::KMessInterface( QWidget *parent ) KMessInterface::~KMessInterface() { delete statusLabel_; - delete systemTrayWidget_; + #ifdef KMESSDEBUG_KMESSINTERFACE kDebug() << "DESTROYED."; #endif @@ -429,16 +434,13 @@ bool KMessInterface::initSystemTrayWidget() menu->addAction( showSettingsAction_ ); menu->addAction( globalSettings_ ); +#ifndef HAVE_NEW_TRAY // Make the connections for the system tray widget connect( systemTrayWidget_, SIGNAL( quitSelected() ), this, SLOT ( menuQuit() ) ); - systemTrayWidget_->show(); - -#ifdef KMESSTEST - KMESS_ASSERT( systemTrayWidget_ != 0 ); - KMESS_ASSERT( systemTrayWidget_->isVisible() ); #endif + return true; } diff --git a/src/kmessview.cpp b/src/kmessview.cpp index 3b3f788..958de2b 100644 --- a/src/kmessview.cpp +++ b/src/kmessview.cpp @@ -134,6 +134,8 @@ KMessView::~KMessView() // The currently playing song was changed. void KMessView::changedSong( const QString &artist, const QString &/*album*/, const QString &track, bool playing ) { + songPlaying_ = playing; + if( playing ) { // Show status line @@ -154,6 +156,9 @@ void KMessView::changedSong( const QString &artist, const QString &/*album*/, co nowListeningFrame_->setHidden(true); nowListeningFrame_->setMaximumHeight(0); } + + // update size of the DP. + slotUpdateDisplayPicture(); } @@ -161,7 +166,7 @@ void KMessView::changedSong( const QString &artist, const QString &/*album*/, co // Get the specified item's or the current item's data const ModelDataList KMessView::getItemData( const QModelIndex &index ) { - const QModelIndexList& selection( selectionModel_->selectedIndexes() ); + const QModelIndexList selection( selectionModel_->selectedIndexes() ); QModelIndex itemIndex( index ); // If the index is not valid, get the current selection @@ -183,7 +188,7 @@ const ModelDataList KMessView::getItemData( const QModelIndex &index ) } // Get the item data - const QVariant& data( itemIndex.data() ); + const QVariant data( itemIndex.data() ); // If the data is not a variant map, abort if( ! data.canConvert( QVariant::Map ) ) @@ -195,7 +200,7 @@ const ModelDataList KMessView::getItemData( const QModelIndex &index ) } // Convert the variant data to a normal map - const ModelDataList& itemData( data.toMap() ); + const ModelDataList itemData( data.toMap() ); // Do nothing if there's no data if( itemData.isEmpty() ) @@ -256,10 +261,13 @@ bool KMessView::initialize( QAbstractItemModel *viewModel ) return false; } + //set the nowListening button + slotUpdateNowListeningToggle(); + // Set an icon for the email label // Using "knotify" icon because it's available everywhere. "multimedia" is SUSE-specific. - emailPixmapLabel_ ->setPixmap( loader->loadIcon( "mail-mark-unread", KIconLoader::NoGroup ) ); - nowListeningPixmapLabel_->setPixmap( loader->loadIcon( "speaker", KIconLoader::NoGroup ) ); + emailPixmapLabel_ ->setPixmap( loader->loadIcon( "mail-mark-unread", KIconLoader::Small ) ); + nowListeningPixmapLabel_->setPixmap( loader->loadIcon( "speaker", KIconLoader::Small ) ); searchIcon_ ->setPixmap( loader->loadIcon( "edit-find-user", KIconLoader::Small ) ); // Create a menu for the status button @@ -277,6 +285,7 @@ bool KMessView::initialize( QAbstractItemModel *viewModel ) int appFontSize = appFont.pointSize(); friendlyNameInput_->setStyleSheet( "QLabel { font-size: " + QString::number( appFontSize + 2 ) + "pt; }" ); personalMessageInput_->setStyleSheet( "QLabel { font-size: " + QString::number( appFontSize - 1 ) + "pt; }" ); + nowListeningLabel_->setStyleSheet( "QLabel { font-style: italic; font-size: " + QString::number( appFontSize - 1 ) +"pt; }" ); // Hide the now listening until something is playing changedSong( QString(), QString(), QString(), false ); @@ -305,6 +314,8 @@ bool KMessView::initialize( QAbstractItemModel *viewModel ) // These update the display pic size depending on the email & now listening options connect( currentAccount_, SIGNAL( changedNowListeningSettings() ), this, SLOT ( slotUpdateDisplayPicture() ) ); + connect( currentAccount_, SIGNAL( changedNowListeningSettings() ), + this, SLOT (slotUpdateNowListeningToggle() ) ); connect( currentAccount_, SIGNAL( changedEmailDisplaySettings() ), this, SLOT ( slotUpdateDisplayPicture() ) ); @@ -339,6 +350,10 @@ bool KMessView::initialize( QAbstractItemModel *viewModel ) connect( searchEdit_, SIGNAL( textChanged(QString) ), this, SLOT ( slotSearchContact(QString) ) ); + // Connect toggle now listening button + connect( nowListeningPushButton_, SIGNAL( clicked() ), + this, SLOT ( slotToggleNowListening()) ); + // Enable the search box if the user has left it open at the last disconnection toggleShowSearchFrame( currentAccount_->getShowSearchBar() ); @@ -366,18 +381,20 @@ void KMessView::slotContactChangedStatus( Contact *contact, bool showNotify ) // One contact is now online/offline, put it in history combobox if( showNotify ) { - const QString& friendlyname( contact->getFriendlyName() ); + const QString& contactName = currentAccount_->getShowContactEmail() + ? contact->getHandle() + : contact->getFriendlyName(); QString item; if( contact->isOnline() ) { item = i18n( "[%1] %2 goes online", QTime::currentTime ().toString( "HH:mm:ss" ) - , friendlyname ); + , contactName ); } else { item = i18n( "[%1] %2 goes offline", QTime::currentTime ().toString( "HH:mm:ss" ) - , friendlyname ); + , contactName ); } // Remove oldest item if the count is >= 500 elements @@ -420,12 +437,11 @@ void KMessView::toggleShowSearchFrame( bool show ) if( show ) { searchFrame_->show(); - searchEdit_->setFocus(); + searchEdit_->setClickMessage( i18n( "Search in contact list..." ) ); } else { // Remove the query when closing the search bar - searchEdit_->clearFocus(); searchEdit_->setText( QString() ); searchFrame_->hide(); @@ -601,7 +617,7 @@ bool KMessView::eventFilter(QObject *obj, QEvent *event) // Detect enter key press to open a chat with the selected contact if( key == Qt::Key_Return || key == Qt::Key_Enter ) { - const QModelIndexList& selection( selectionModel_->selectedIndexes() ); + const QModelIndexList selection( selectionModel_->selectedIndexes() ); // Get the currently selected item if( ! selection.isEmpty() ) @@ -837,7 +853,7 @@ void KMessView::rebuildContactActions() // Since we need both a name to display and a group ID to distinguish groups, // but KActions only support the name, we'll use the Qt objectName to store // their internal id - const QString& id( group->getId() ); + const QString& id = group->getId(); KAction *copyAction = new KAction( group->getName(), copyContactToGroup_ ); KAction *moveAction = new KAction( group->getName(), moveContactToGroup_ ); copyAction->setObjectName( id ); @@ -901,7 +917,7 @@ void KMessView::slotGroupChanged( const QModelIndex &index ) } // Get the data from the selected index - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); // Do nothing if the input index was not valid if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemGroup ) @@ -931,7 +947,7 @@ void KMessView::showContextMenu( const QPoint &point ) const ContactList *contactList = currentAccount_->getContactList(); // Get the data from the selected index - const ModelDataList& itemData( getItemData( contactListView_->indexAt( point ) ) ); + const ModelDataList itemData( getItemData( contactListView_->indexAt( point ) ) ); // The index was empty if( itemData.isEmpty() ) @@ -942,12 +958,12 @@ void KMessView::showContextMenu( const QPoint &point ) // Depending on the item type, show the appropriate menu if( itemData[ "type" ] == ContactListModelItem::ItemContact ) { - const QString& handle( itemData[ "handle" ].toString() ); + const QString handle( itemData[ "handle" ].toString() ); const Contact *contact = contactList->getContactByHandle( handle ); bool isBlocked = contact->isBlocked(); bool isFriend = contact->isFriend(); - const QStringList& contactGroups( contact->getGroupIds() ); + const QStringList& contactGroups = contact->getGroupIds(); // Only if not added yet addContact_ ->setVisible( ! isFriend ); @@ -1043,7 +1059,7 @@ void KMessView::showContextMenu( const QPoint &point ) if( contact != 0 ) { // Append friendly name and personal message so cycle only one time to search links - const QString& nameAndPm( contact->getFriendlyName() + ' ' + contact->getPersonalMessage() ); + const QString nameAndPm( contact->getFriendlyName() + ' ' + contact->getPersonalMessage() ); QStringList links; //Initialize index, link RegExp and found boolean for insert separator only at first found link @@ -1131,11 +1147,11 @@ void KMessView::copyText() // Show the contact & group tool tip void KMessView::showToolTip( const QPoint &point ) { - const QModelIndex& index( contactListView_->indexAt( contactListView_->mapFromGlobal( point ) ) ); + const QModelIndex index( contactListView_->indexAt( contactListView_->mapFromGlobal( point ) ) ); QString tipText; // Read the actual data off the model index - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); // Do nothing if the index is not valid if( ! index.isValid() || itemData.isEmpty() ) @@ -1200,8 +1216,8 @@ void KMessView::showToolTip( const QPoint &point ) } // If the contact is listening to music, show it - const QString& mediaType ( itemData[ "mediaType" ].toString() ); - const QString& mediaString( itemData[ "mediaString" ].toString() ); + const QString mediaType ( itemData[ "mediaType" ].toString() ); + const QString mediaString( itemData[ "mediaString" ].toString() ); if( ! mediaString.isEmpty() ) { QString mediaEmoticon; @@ -1226,17 +1242,18 @@ void KMessView::showToolTip( const QPoint &point ) } // Add a message about our presence in this contact's list - if( itemData[ "isReverse" ].toBool() ) - { + // fontknocker: removed until reverse list memberships are resolved. +// if( itemData[ "isReverse" ].toBool() ) +// { tipText = tipText.arg( "" ); - } - else - { - tipText = tipText.arg( "" + - i18nc( "Message in list tooltip", - "This contact does not have you in his or her contact list." ) + - "" ); - } +// } +// else +// { +// tipText = tipText.arg( "" + +// i18nc( "Message in list tooltip", +// "This contact does not have you in his or her contact list." ) + +// "" ); +// } // Here starts the list of simple property:value lines @@ -1256,7 +1273,7 @@ void KMessView::showToolTip( const QPoint &point ) .arg( itemData[ "handle" ].toString() ) ); // Add client identifier - const QString& clientName( itemData[ "clientName" ].toString() ); + const QString clientName( itemData[ "clientName" ].toString() ); if( ! clientName.isEmpty() ) { tipText = tipText.arg( propertyLine.arg( i18nc( "Contact Live Messenger client label in list tooltip", "Client" ) ) @@ -1282,7 +1299,7 @@ void KMessView::showToolTip( const QPoint &point ) .arg( blockedString ) ); // Add last seen date - const QDateTime& lastSeen( itemData[ "lastSeen" ].toDateTime() ); + const QDateTime lastSeen( itemData[ "lastSeen" ].toDateTime() ); QString lastSeenString; if( ( (Status) itemData[ "status" ].toInt() ) != STATUS_OFFLINE ) @@ -1304,7 +1321,7 @@ void KMessView::showToolTip( const QPoint &point ) .arg( lastSeenString ) ); // Add last message date - const QDateTime& lastMessage( itemData[ "lastMessage" ].toDateTime() ); + const QDateTime lastMessage( itemData[ "lastMessage" ].toDateTime() ); QString lastMessageString; if( lastMessage.toTime_t() == 0 || lastMessage.toTime_t() == UINT_MAX @@ -1364,7 +1381,7 @@ void KMessView::showToolTip( const QPoint &point ) void KMessView::slotEmailContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not valid, do nothing if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1415,7 +1432,7 @@ void KMessView::slotItemSingleClicked( const QModelIndex &index ) void KMessView::slotItemClicked( const QModelIndex &index, const bool accidental ) { // Get the data from the selected index - const ModelDataList& itemData( getItemData( index ) ); + const ModelDataList itemData( getItemData( index ) ); // The index was empty if( itemData.isEmpty() ) @@ -1465,7 +1482,7 @@ void KMessView::slotMoveGroupDown() const ContactList *contactList = currentAccount_->getContactList(); // Get the group data from the selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); Group *group = contactList->getGroupById( itemData[ "id" ].toString() ); if( ! group || itemData.isEmpty() ) { @@ -1504,7 +1521,7 @@ void KMessView::slotMoveGroupUp() const ContactList *contactList = currentAccount_->getContactList(); // Get the group data from the selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); Group *group = contactList->getGroupById( itemData[ "id" ].toString() ); if( ! group || itemData.isEmpty() ) { @@ -1545,7 +1562,7 @@ void KMessView::slotMoveGroupUp() void KMessView::slotForwardAddContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1563,7 +1580,7 @@ void KMessView::slotForwardAddContact() void KMessView::slotForwardAllowContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1581,7 +1598,7 @@ void KMessView::slotForwardAllowContact() void KMessView::slotForwardBlockContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1599,7 +1616,7 @@ void KMessView::slotForwardBlockContact() void KMessView::slotForwardCopyContact( const QString &newGroupId ) { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1617,7 +1634,7 @@ void KMessView::slotForwardCopyContact( const QString &newGroupId ) void KMessView::slotForwardMoveContact( const QString &newGroupId ) { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The selection was not valid if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1652,7 +1669,7 @@ void KMessView::slotForwardMoveContact( const QString &newGroupId ) void KMessView::slotForwardRemoveContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1668,7 +1685,7 @@ void KMessView::slotForwardRemoveContact() void KMessView::slotForwardRemoveFromGroup() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was invalid if( itemData.isEmpty() ) @@ -1677,7 +1694,7 @@ void KMessView::slotForwardRemoveFromGroup() } // Get the ID of the group which contained this instance of the contact - const ModelDataList& parentItemData( getItemData( selectionModel_->selectedIndexes().first().parent() ) ); + const ModelDataList parentItemData( getItemData( selectionModel_->selectedIndexes().first().parent() ) ); if( parentItemData.isEmpty() || parentItemData[ "type" ] != ContactListModelItem::ItemGroup ) { return; @@ -1692,7 +1709,7 @@ void KMessView::slotForwardRemoveFromGroup() void KMessView::slotForwardRemoveGroup() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was invalid if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemGroup ) @@ -1711,7 +1728,7 @@ void KMessView::slotForwardRemoveGroup() void KMessView::slotForwardRenameGroup() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was invalid if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemGroup ) @@ -1738,7 +1755,7 @@ void KMessView::slotForwardStartChat() void KMessView::slotForwardUnblockContact() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -1765,8 +1782,8 @@ void KMessView::slotForwardUnblockContact() */ void KMessView::updateFriendlyName( bool refreshOnly ) { - const QString& defaultTooltip( i18nc( "Default friendly name tooltip", "Click here to change your friendly name" ) ); - const QString& defaultName( currentAccount_->getFriendlyName( STRING_ORIGINAL ).trimmed() ); + const QString defaultTooltip( i18nc( "Default friendly name tooltip", "Click here to change your friendly name" ) ); + const QString defaultName( currentAccount_->getFriendlyName( STRING_ORIGINAL ).trimmed() ); // When refreshing the message or when the focus losing isn't voluntary, don't update it on the server if( refreshOnly || ! isActiveWindow() || ! topLevelWidget()->isActiveWindow() ) @@ -1825,8 +1842,8 @@ void KMessView::updateFriendlyName( bool refreshOnly ) */ void KMessView::updatePersonalMessage( bool refreshOnly ) { - const QString& defaultMessage( i18nc( "Default personal message shown in the contact list", "[i]Click to set a personal message[/i]" ) ); - const QString& defaultTooltip( i18nc( "Default personal message tooltip", "Click here to insert a message to show to your contacts: they will see it along with your friendly name" ) ); + const QString defaultMessage( i18nc( "Default personal message shown in the contact list", "[i]Click to set a personal message[/i]" ) ); + const QString defaultTooltip( i18nc( "Default personal message tooltip", "Click here to insert a message to show to your contacts: they will see it along with your friendly name" ) ); // When refreshing the message or when the focus losing isn't voluntary, don't update it on the server if( refreshOnly || ! isActiveWindow() || ! topLevelWidget()->isActiveWindow() ) @@ -1836,7 +1853,7 @@ void KMessView::updatePersonalMessage( bool refreshOnly ) #endif // Refresh the message - const QString &message( currentAccount_->getPersonalMessage( STRING_ORIGINAL ).trimmed() ); + const QString message( currentAccount_->getPersonalMessage( STRING_ORIGINAL ).trimmed() ); if( message.isEmpty() ) { personalMessageInput_->setToolTip( defaultTooltip ); @@ -1852,7 +1869,7 @@ void KMessView::updatePersonalMessage( bool refreshOnly ) } // Get message - const QString& message( personalMessageInput_->text().trimmed() ); + const QString message( personalMessageInput_->text().trimmed() ); #ifdef KMESSDEBUG_KMESSVIEW_GENERAL kDebug() << "Updating personal message to:" << message; @@ -1908,7 +1925,7 @@ void KMessView::slotSearchContact( const QString& searchFor ) #endif QString searchExpression; - const QString& regexpMagic( "regexp:" ); + const QString regexpMagic( "regexp:" ); // If the search string starts with "regexp:", allow searching with a regexp :) if( searchFor.startsWith( regexpMagic ) ) @@ -1938,7 +1955,7 @@ void KMessView::slotSearchContact( const QString& searchFor ) for( int row = viewModel_->rowCount() - 1; row >= 0; --row ) { - const QModelIndex& index( viewModel_->index( row, 0, QModelIndex() ) ); + const QModelIndex index( viewModel_->index( row, 0, QModelIndex() ) ); // Skip invalid items if( ! index.isValid() ) @@ -1950,7 +1967,7 @@ void KMessView::slotSearchContact( const QString& searchFor ) } // Access the index's data - const ModelDataList& itemData( getItemData( index ) ); + const ModelDataList itemData( getItemData( index ) ); // Skip items which have no children if( itemData.isEmpty() || itemData[ "type" ].toInt() != ContactListModelItem::ItemGroup ) @@ -1985,7 +2002,7 @@ void KMessView::slotSearchContact( const QString& searchFor ) void KMessView::slotShowChatHistory() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -2026,7 +2043,7 @@ void KMessView::slotShowChatHistory() void KMessView::slotShowContactProfile() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -2034,7 +2051,7 @@ void KMessView::slotShowContactProfile() return; } - const QString& handle ( itemData[ "handle" ].toString() ); + const QString handle( itemData[ "handle" ].toString() ); KMessShared::openBrowser( KUrl( "http://members.msn.com/default.msnw?mem=" + handle + "&mkt=" + KGlobal::locale()->language() + "&pgmarket" ) ); } @@ -2044,7 +2061,7 @@ void KMessView::slotShowContactProfile() void KMessView::slotShowContactProperties() { // Get the data from the currently selected index - const ModelDataList& itemData( getItemData() ); + const ModelDataList itemData( getItemData() ); // The index was not empty if( itemData.isEmpty() || itemData[ "type" ] != ContactListModelItem::ItemContact ) @@ -2072,14 +2089,22 @@ void KMessView::slotShowContactProperties() +//toggle now listening +void KMessView::slotToggleNowListening() +{ + currentAccount_->setShowNowListening( ! currentAccount_->getShowNowListening() ); +} + + + // Update the users display pic void KMessView::slotUpdateDisplayPicture() { // Adjust the picture size depending on the rest of the widgets: // it should be small only when both now playing and new email info are off. int size = 96; - if( ! currentAccount_->getShowNowListening() - && ( ! currentAccount_->getShowEmail() || ! currentAccount_->getEmailSupported() ) ) + if( ( ! currentAccount_->getShowNowListening() || ! songPlaying_ ) + && ( ! currentAccount_->getShowEmail() || ! currentAccount_->getEmailSupported() ) ) { size = 64; } @@ -2097,7 +2122,7 @@ void KMessView::slotUpdateDisplayPicture() displayPicFrame_->show(); // The picture is unchanged, do nothing - const QString &pictureFileName( currentAccount_->getPicturePath() ); + const QString pictureFileName( currentAccount_->getPicturePath() ); if( displayPicFrame_->property( "PictureFileName" ) == pictureFileName ) { #ifdef KMESSDEBUG_KMESSVIEW @@ -2111,7 +2136,7 @@ void KMessView::slotUpdateDisplayPicture() #endif // Change the picture - const QPixmap& image( pictureFileName ); + const QPixmap image( pictureFileName ); currentAccountDisplayPic_->setPixmap( image ); displayPicFrame_->setProperty( "PictureFileName", pictureFileName ); } @@ -2155,7 +2180,7 @@ void KMessView::slotUpdateGroups() for( int row = viewModel_->rowCount() - 1; row >= 0; row-- ) { - const QModelIndex& index( viewModel_->index( row, 0, QModelIndex() ) ); + const QModelIndex index( viewModel_->index( row, 0, QModelIndex() ) ); #ifdef KMESSDEBUG_KMESSVIEW_ITEM_VISIBILITY kDebug() << "Current row:" << row << "of" << viewModel_->rowCount(); @@ -2175,7 +2200,7 @@ void KMessView::slotUpdateGroups() } // Access the index's data - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); // Skip items which have no children if( itemData.isEmpty() || itemData[ "type" ].toInt() != ContactListModelItem::ItemGroup ) @@ -2206,9 +2231,9 @@ void KMessView::slotUpdateGroups() // Update the email count. void KMessView::slotUpdateNoEmails() { - const QString& message( i18np( "%1 new email message", - "%1 new email messages", - currentAccount_->getNoEmails() ) ); + const QString message( i18np( "%1 new email message", + "%1 new email messages", + currentAccount_->getNoEmails() ) ); // Update the label emailLabel_->setText( message ); @@ -2219,6 +2244,23 @@ void KMessView::slotUpdateNoEmails() +// set the icon and tooltip for the now listening toggle button. +void KMessView::slotUpdateNowListeningToggle() +{ + if( currentAccount_->getShowNowListening() ) + { + nowListeningPushButton_->setIcon( KIconLoader::global()->loadIcon( "audio-volume-high", KIconLoader::Small, 0, KIconLoader::DisabledState ) ); + nowListeningPushButton_->setToolTip( i18n( "Show contacts what you are listening to (click to disable)" ) ); + } + else + { + nowListeningPushButton_->setIcon( KIconLoader::global()->loadIcon( "audio-volume-muted", KIconLoader::Small, 0, KIconLoader::DisabledState ) ); + nowListeningPushButton_->setToolTip( i18n( "Show contacts what you are listening to (click to enable)" ) ); + } +} + + + // Update the user's status. void KMessView::slotUpdateUserStatus() { diff --git a/src/kmessview.h b/src/kmessview.h index 4552591..e119a67 100644 --- a/src/kmessview.h +++ b/src/kmessview.h @@ -155,6 +155,8 @@ class KMessView : public QWidget, private Ui::KMessView void slotShowContactProfile(); // Display the properties of the current contact void slotShowContactProperties(); + // Toggle showing of now listening + void slotToggleNowListening(); // Update the users display pic void slotUpdateDisplayPicture(); // Change whether the email label is displayed based on account settings. @@ -163,6 +165,8 @@ class KMessView : public QWidget, private Ui::KMessView void slotUpdateGroups(); // Update the email count. void slotUpdateNoEmails(); + // Update now listening toggle icon/tooltip + void slotUpdateNowListeningToggle(); // Update the user's status. void slotUpdateUserStatus(); // Update the contact list widgets @@ -222,6 +226,8 @@ class KMessView : public QWidget, private Ui::KMessView QTimer updateTimer_; // Quick ref to the tree view's filter model ContactListModelFilter *viewModel_; + // True if the useris listening to music, false otherwise. + bool songPlaying_; signals: // Request to add a contact diff --git a/src/kmessview.ui b/src/kmessview.ui index 7881824..5da5a09 100644 --- a/src/kmessview.ui +++ b/src/kmessview.ui @@ -31,6 +31,9 @@ + + 1 + @@ -167,11 +170,129 @@ + + -1 + - - - + + + 0 + + + + + + + + + + + + 24 + 24 + + + + + 24 + 24 + + + + + + + + + + + + + + 24 + 24 + + + + true + + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + 3 + + + 0 + + + + + + 0 + 0 + + + + + 16 + 16 + + + + + 16 + 16 + + + + true + + + false + + + 1 + + + Qt::LinksAccessibleByMouse + + + + + + + + 0 + 0 + + + + Don't remove this, it makes maketrans break + + + + @@ -273,77 +394,6 @@ - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Plain - - - 0 - - - - 3 - - - 0 - - - - - - 0 - 0 - - - - - 16 - 16 - - - - - 16 - 16 - - - - true - - - false - - - 1 - - - - - - - - 0 - 0 - - - - Don't remove this, it makes maketrans break - - - - - - @@ -517,16 +567,16 @@ QLabel
    kurllabel.h
    - - GradientElideLabel - QLabel -
    utils/gradientelidelabel.h
    -
    InlineEditLabel QLabel
    utils/inlineeditlabel.h
    + + GradientElideLabel + QLabel +
    utils/gradientelidelabel.h
    +
    KLineEdit diff --git a/src/kmessviewdelegate.cpp b/src/kmessviewdelegate.cpp index fabcd4e..a3e0bd0 100644 --- a/src/kmessviewdelegate.cpp +++ b/src/kmessviewdelegate.cpp @@ -51,15 +51,19 @@ */ KMessViewDelegate::KMessViewDelegate( QWidget *parent ) : QStyledItemDelegate( parent ) - , iconLoader_( KIconLoader::global() ) { // Set up the group label style fontBold_.setBold( true ); - // Create the label used to render the HTML text labels - textLabel_ = new QLabel(); - textLabel_->setTextFormat( Qt::RichText ); - textLabel_->setAlignment( Qt::AlignTop ); + // create the text document used to render HTML text labels. + textDocument_ = new QTextDocument(); + textDocument_->setDocumentMargin( 0.0 ); + + QTextOption noWrap; + noWrap.setWrapMode( QTextOption::NoWrap ); + noWrap.setAlignment( Qt::AlignTop ); + + textDocument_->setDefaultTextOption( noWrap ); // Save the current account's reference currentAccount_ = CurrentAccount::instance(); @@ -67,6 +71,14 @@ KMessViewDelegate::KMessViewDelegate( QWidget *parent ) // Cache the icons for the various media types mediaEmoticonMusic_ = EmoticonManager::instance()->getReplacement( "(8)", true ); mediaEmoticonGaming_ = EmoticonManager::instance()->getReplacement( "(xx)", true ); + + KIconLoader *loader = KIconLoader::global(); + + arrowUp_ = loader->loadIcon( "arrow-up", KIconLoader::Small ); + arrowDown_ = loader->loadIcon( "arrow-down", KIconLoader::Small ); + arrowLeft_ = loader->loadIcon( "arrow-left", KIconLoader::Small ); + arrowRight_ = loader->loadIcon( "arrow-right", KIconLoader::Small ); + } @@ -76,7 +88,7 @@ KMessViewDelegate::KMessViewDelegate( QWidget *parent ) */ KMessViewDelegate::~KMessViewDelegate() { - delete textLabel_; + delete textDocument_; } @@ -113,7 +125,7 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op QPainter::TextAntialiasing, true ); // Read the actual data off the model index - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); // We're only able to display groups and contacts if( itemData[ "type" ].toInt() != ContactListModelItem::ItemGroup @@ -148,26 +160,22 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op { if( itemData[ "isExpanded" ].toBool() ) { - groupIconName = "arrow-down"; + iconPixmap = arrowDown_; } else if( QApplication::isRightToLeft() ) { - groupIconName = "arrow-left"; + iconPixmap = arrowLeft_; } else { - groupIconName = "arrow-right"; + iconPixmap = arrowRight_; } } else { // Show only arrow down if there aren't contacts to show in group - groupIconName = "arrow-down"; + iconPixmap = arrowDown_; } - - iconPixmap = iconLoader_->loadIcon( groupIconName - , KIconLoader::NoGroup - , KIconLoader::SizeSmall ); } else // Contact pixmaps { @@ -309,7 +317,7 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op if( ( fm.width( text ) + labelRect.height() ) > labelRect.width() ) { - QImage label( labelRect.size(), QImage::Format_ARGB32 ); + QPixmap label( labelRect.size() ); label.fill( Qt::transparent ); // create a linear gradient, white to transparent @@ -336,7 +344,7 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op pLabel.setCompositionMode( QPainter::CompositionMode_DestinationIn ); pLabel.fillRect( labelRect, QBrush( gradient ) ); - painter->drawImage( labelRect, label ); + painter->drawPixmap( labelRect, label ); } else { @@ -388,11 +396,11 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op QString messageString; - const QString& mediaString( itemData[ "mediaString" ].toString() ); + const QString mediaString( itemData[ "mediaString" ].toString() ); if( ! mediaString.isEmpty() ) { // Determine icon for the various media types - const QString& mediaType ( itemData[ "mediaType" ].toString() ); + const QString mediaType( itemData[ "mediaType" ].toString() ); if( mediaType == "Music" ) { messageString = mediaEmoticonMusic_ + "" + Qt::escape( mediaString ) + ""; @@ -432,17 +440,16 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op painter->translate( labelRect.topLeft() ); labelRect.translate( - labelRect.topLeft() ); - textLabel_->setGeometry( labelRect ); - textLabel_->setText( text ); + textDocument_->setHtml( text ); QFontMetrics fm( painter->font() ); const int labelWidth = fm.width( text ); // Paint directly when it fits in the available space... + // The + rect.height() is to have a nicer effect when resizing the window :) if( ( labelWidth + labelRect.height() ) <= labelRect.width() ) { - // The + rect.height() is to have a nicer effect when resizing the window :) - textLabel_->render( painter, QPoint(), QRegion(), 0 ); + textDocument_->drawContents( painter ); } // ...otherwise (when the text goes over the available space) fade it away else @@ -470,18 +477,18 @@ void KMessViewDelegate::paint( QPainter *painter, const QStyleOptionViewItem &op true ); // Adjust the label to the contained text - textLabel_->adjustSize(); + textDocument_->adjustSize(); // When using a right-to-left aligned language (like Arabic) the label needs to be // moved on the right side of the available space to honor the alignment. QPoint offset( 0, 0 ); if( QApplication::isRightToLeft() ) { - offset.rx() = labelRect.width() - textLabel_->width(); + offset.rx() = labelRect.width() - textDocument_->idealWidth(); } // Paint the label over the image - textLabel_->render( &pixmapPainter, offset, QRegion(), 0 ); + textDocument_->drawContents( &pixmapPainter ); // Blend together the image and the gradient pixmapPainter.setCompositionMode( QPainter::CompositionMode_DestinationIn ); @@ -510,20 +517,20 @@ QSize KMessViewDelegate::sizeHint( const QStyleOptionViewItem &option, const QMo Q_UNUSED( option ); // Read the actual data off the model index - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); - // the height of the item should be + // the height of the item should be // large enough to accommodate the font. QFont generalFont = KGlobalSettings::generalFont(); QFontMetricsF metrics( generalFont ); - + QSize size( KIconLoader::SizeSmall + 2, KIconLoader::SizeSmall + 4 ); - + if ( size.height() < metrics.height() ) { size.setHeight( metrics.height() ); } - + if( itemData.isEmpty() ) { return size; @@ -547,19 +554,19 @@ QSize KMessViewDelegate::sizeHint( const QStyleOptionViewItem &option, const QMo } qreal fontHeight = metrics.height() * 2; // x2 to account for PSM. - + if ( fontHeight > pictureSize.height() ) { pictureSize.setHeight( fontHeight ); } - + return pictureSize; } else { return size; } - + case ContactListModelItem::ItemGroup: default: return size; diff --git a/src/kmessviewdelegate.h b/src/kmessviewdelegate.h index c89042b..2e7cbc6 100644 --- a/src/kmessviewdelegate.h +++ b/src/kmessviewdelegate.h @@ -19,14 +19,13 @@ #define KMESSVIEWDELEGATE_H #include - +#include // Forward declarations class CurrentAccount; -class KIconLoader; class QFont; class QLabel; - +class QTextDocument; /** @@ -63,15 +62,15 @@ class KMessViewDelegate : public QStyledItemDelegate CurrentAccount *currentAccount_; // Bold font QFont fontBold_; - // Icon loader to make painting a bit faster - KIconLoader *iconLoader_; // Cached emoticon replacement for the now listening icon QString mediaEmoticonMusic_; // Cached emoticon replacement for the now playing icon QString mediaEmoticonGaming_; - // Label for rich text painting - QLabel *textLabel_; + // QTextDocument for rich text painting + QTextDocument *textDocument_; + // cached icons. + QPixmap arrowUp_, arrowDown_, arrowLeft_, arrowRight_; }; diff --git a/src/main.cpp b/src/main.cpp index 14611fa..48c5ac6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -180,6 +180,7 @@ int main(int argc, char *argv[]) aboutData.addCredit( ki18n("Pieterjan Camerlynck"), ki18n("Roaming Service support"), "pieterjan" "." "camerlynck" "@" "gmail" "." "com" ); aboutData.addCredit( ki18n("Anastasios Bourazanis"), ki18n("Emoticon preview in settings page,clickable contact properties dialog text"), "a.brzns" "@" "gmail" "." "com"); aboutData.addCredit( ki18n("Marco Mentasti"), ki18n("Internationalization fixes, drag'n'drop of images into display pictures"), "marcomentasti" "@" "gmail" "." "com" ); + aboutData.addCredit( ki18n("Francesco Nwokeka"), ki18n("Now Listening toggle button above the contact list."), "" ); // Other apps aboutData.addCredit( ki18n("KMerlin (kmerlin.olsd.de)"), ki18n("Inspiration and assorted code")); diff --git a/src/model/contactlist.cpp b/src/model/contactlist.cpp index a10c22f..7b44e50 100644 --- a/src/model/contactlist.cpp +++ b/src/model/contactlist.cpp @@ -68,7 +68,7 @@ ContactList::~ContactList() // Add a contact to the contact list Contact * ContactList::addContact( const QString& handle, const QString& friendlyName, int lists, - QStringList groupIds, const QString& guid ) + QStringList groupIds, const QString& guid, bool isMessenger ) { // Ignore call if we are closing... // TODO: prevent this issue from happening in the first place. @@ -98,7 +98,9 @@ Contact * ContactList::addContact( const QString& handle, const QString& friendl // Create the contact Contact *contact = new Contact( handle, friendlyName, lists, groupIds, guid ); - contacts_.insert( handle, contact ); + contact->setMessengerUser( isMessenger ); + + contacts_.insert( handle.toLower(), contact ); // Add the contact to the special groups if( contact->isFriend() ) @@ -135,7 +137,7 @@ Contact * ContactList::addContact( const QString& handle, const QString& friendl } // form a QModelIndex for the group which will parent this contact - const QModelIndex& groupIdx( index( groupNode->row(), 0, QModelIndex() ) ); + const QModelIndex groupIdx( index( groupNode->row(), 0, QModelIndex() ) ); if ( !groupIdx.isValid() ) { @@ -1219,7 +1221,7 @@ Contact* ContactList::getContactByGuid( QString guid ) const Contact* ContactList::getContactByHandle( QString handle ) const { // Optimized with hashing because it's called a lot - return contacts_.value( handle, 0 ); + return contacts_.value( handle.toLower(), 0 ); } @@ -1408,8 +1410,8 @@ QModelIndex ContactList::parent( const QModelIndex &index ) const */ void ContactList::slotContactMoved( Contact *contact ) { - const QStringList& groupIds( contact->getGroupIds() ); - const QString& handle (contact->getHandle() ); + const QStringList& groupIds = contact->getGroupIds(); + const QString& handle = contact->getHandle(); // Add the current groups to the nodes in which the contact should now be visible ModelItemList newNodes; @@ -1468,7 +1470,7 @@ void ContactList::slotContactMoved( Contact *contact ) { if( ! node->childContact( handle ) ) { - const QModelIndex& groupIndex( index( node->row(), 0, QModelIndex() ) ); + const QModelIndex groupIndex( index( node->row(), 0, QModelIndex() ) ); beginInsertRows( groupIndex, node->childCount(), node->childCount() ); @@ -1642,7 +1644,7 @@ void ContactList::removeContactFromGroup ( const QString& handle, ContactListMod return; } - const QModelIndex& groupIndex( index(groupItem->row(), 0, QModelIndex() ) ); + const QModelIndex groupIndex( index(groupItem->row(), 0, QModelIndex() ) ); if ( !groupIndex.isValid() ) { kWarning() << "Group does not exist in the contact list"; @@ -1842,7 +1844,7 @@ void ContactList::readProperties() kDebug() << "Loading properties for the contact list"; #endif - const QString& handle( CurrentAccount::instance()->getHandle() ); + const QString& handle = CurrentAccount::instance()->getHandle(); KConfigGroup config( KMessConfig::instance()->getContactListConfig( handle, "Groups" ) ); // Load the settings for all groups @@ -1918,7 +1920,7 @@ void ContactList::saveProperties() } // Get the position of the contacts settings of this account - const QString& handle( CurrentAccount::instance()->getHandle() ); + const QString& handle = CurrentAccount::instance()->getHandle(); // There always are at least some special groups to be saved: we can never skip saving // like it's done with contacts below @@ -1989,8 +1991,8 @@ void ContactList::saveProperties( const Group *group ) const { return; } - - const QString& handle( CurrentAccount::instance()->getHandle() ); + + const QString& handle = CurrentAccount::instance()->getHandle(); KConfigGroup config( KMessConfig::instance()->getContactListConfig( handle, "Groups" ) ); // Save the group, by removing the const @@ -2011,8 +2013,8 @@ void ContactList::saveProperties( const Contact *contact ) const { return; } - - const QString& handle( CurrentAccount::instance()->getHandle() ); + + const QString& handle = CurrentAccount::instance()->getHandle(); KConfigGroup config( KMessConfig::instance()->getContactListConfig( handle, "Contacts" ) ); // Save the contact diff --git a/src/model/contactlist.h b/src/model/contactlist.h index 76e9447..c76d98c 100644 --- a/src/model/contactlist.h +++ b/src/model/contactlist.h @@ -66,7 +66,7 @@ class ContactList : public QAbstractItemModel virtual ~ContactList(); // Add a contact to the contact list Contact * addContact( const QString& handle, const QString& friendlyName, int lists, - QStringList groupIds, const QString& guid ); + QStringList groupIds, const QString& guid, bool isMessenger = true ); // Change a contact's status (and update the friendly name) void changeContactStatus( const QString& handle, Status status, const QString& friendlyName = QString(), diff --git a/src/model/contactlistmodelfilter.cpp b/src/model/contactlistmodelfilter.cpp index ad97253..1cb0611 100644 --- a/src/model/contactlistmodelfilter.cpp +++ b/src/model/contactlistmodelfilter.cpp @@ -141,7 +141,7 @@ bool ContactListModelFilter::filterAcceptsRow( int sourceRow, const QModelIndex& return false; } - const ModelDataList& itemData( index.data().toMap() ); + const ModelDataList itemData( index.data().toMap() ); if( itemData.isEmpty() ) { @@ -167,6 +167,12 @@ bool ContactListModelFilter::filterAcceptsRow( int sourceRow, const QModelIndex& { case ContactListModelItem::ItemContact: { + // don't show non-messenger users. + if ( itemData[ "isMessengerUser" ].toBool() == false ) + { + return false; + } + Status contactStatus = (Status) itemData[ "status" ].toInt(); // Contacts in special groups are always visible. Their group may be not, though. diff --git a/src/model/contactlistmodelitem.cpp b/src/model/contactlistmodelitem.cpp index 12f2de5..f79d8c1 100644 --- a/src/model/contactlistmodelitem.cpp +++ b/src/model/contactlistmodelitem.cpp @@ -323,85 +323,83 @@ const QVariant ContactListModelItem::data( int role ) const // Output the sorting information case SortRole: { - int sortIndex; + QString sortValue; if( itemType_ == ItemContact ) { const Contact *contact = static_cast( object_ ); - sortIndex = 8000; // default sortIndex + sortValue = "8"; // default sortValue if( contact == 0 ) { - return QVariant( sortIndex ); + return QVariant( sortValue ); } // Contacts are sorted by their status switch( contact->getStatus() ) { - case STATUS_ONLINE: sortIndex = 1000; break; - case STATUS_BE_RIGHT_BACK: sortIndex = 2000; break; - case STATUS_IDLE: sortIndex = 3000; break; - case STATUS_AWAY: sortIndex = 4000; break; - case STATUS_OUT_TO_LUNCH: sortIndex = 5000; break; - case STATUS_ON_THE_PHONE: sortIndex = 6000; break; - case STATUS_BUSY: sortIndex = 7000; break; + case STATUS_ONLINE: sortValue = "1"; break; + case STATUS_BE_RIGHT_BACK: sortValue = "2"; break; + case STATUS_IDLE: sortValue = "3"; break; + case STATUS_AWAY: sortValue = "4"; break; + case STATUS_OUT_TO_LUNCH: sortValue = "5"; break; + case STATUS_ON_THE_PHONE: sortValue = "6"; break; + case STATUS_BUSY: sortValue = "7"; break; case STATUS_INVISIBLE: case STATUS_OFFLINE: - default: sortIndex = 8000; break; + default: sortValue = "8"; break; } - // Add to the index the first character of the friendly name, so that - // when two contacts have the same status, there's a (rough but fast) - // sorting method - const QString& sortChar( contact->getFriendlyName().mid( 0, 1 ) ); - if( ! sortChar.isEmpty() ) + // Add first characters of the friendly name to sortValue + const QString sortStr( contact->getFriendlyName().mid( 0, 15 ) ); + if( ! sortStr.isEmpty() ) { - sortIndex += sortChar.at( 0 ).toUpper().toAscii(); + sortValue += sortStr; } } else if( itemType_ == ItemGroup ) { const Group *group = static_cast( object_ ); - sortIndex = 32766; // default sortIndex + sortValue = "A"; // default sortValue if( group == 0 ) { - return QVariant( sortIndex ); + return QVariant( sortValue ); } - const QString& groupId( group->getId() ); + const QString& groupId = group->getId(); - // These numbers are set so that the groups always come after the contacts in the root group + // These literals are set so that the groups always come after the contacts in the root group // Non-special groups must be the first if( ! group->isSpecialGroup() ) { - sortIndex = 10000 + group->getSortPosition(); + sortValue = QString("9%1").arg(group->getSortPosition()); } // The Individuals group must come right after them else if( groupId == SpecialGroups::INDIVIDUALS ) { - sortIndex = 32762; + sortValue = "B"; } // The Online group must come right after it else if( groupId == SpecialGroups::ONLINE ) { - sortIndex = 32763; + sortValue = "C"; } // The Offline group must follow Online else if( groupId == SpecialGroups::OFFLINE ) { - sortIndex = 32764; + sortValue = "D"; } // Then the remaining special groups, Allowed else if( groupId == SpecialGroups::ALLOWED ) { - sortIndex = 32765; + sortValue = "E"; } // And Removed else { - sortIndex = 32766; + sortValue = "F"; } } else @@ -412,7 +410,7 @@ const QVariant ContactListModelItem::data( int role ) const return QVariant( 0 ); } - return QVariant( sortIndex ); + return QVariant( sortValue ); } break; @@ -492,6 +490,7 @@ const QVariant ContactListModelItem::data( int role ) const itemData[ "clientName" ] = contact->getClientName(); itemData[ "lastSeen" ] = contact->getExtension()->getLastSeen(); itemData[ "lastMessage" ] = contact->getExtension()->getLastMessageDate(); + itemData[ "isMessengerUser" ] = contact->isMessengerUser(); if( parentNode_->object() ) { @@ -519,6 +518,7 @@ const QVariant ContactListModelItem::data( int role ) const // Find out how many of the group's contacts are online uint numOnlineContacts = 0; + uint numMsgrContacts = 0; foreach( ContactListModelItem *item, childItems_ ) { if( item->getType() != ItemContact ) @@ -532,13 +532,18 @@ const QVariant ContactListModelItem::data( int role ) const { numOnlineContacts++; } + + if( contact && contact->isMessengerUser() ) + { + numMsgrContacts++; + } } itemData[ "type" ] = ItemGroup; itemData[ "id" ] = group->getId(); itemData[ "name" ] = group->getName(); itemData[ "onlineContacts" ] = QString::number( numOnlineContacts ); - itemData[ "totalContacts" ] = QString::number( childCount() ); + itemData[ "totalContacts" ] = QString::number( numMsgrContacts ); itemData[ "isExpanded" ] = group->isExpanded(); itemData[ "isSpecialGroup" ] = group->isSpecialGroup(); } diff --git a/src/network/applications/msnobjecttransferp2p.cpp b/src/network/applications/msnobjecttransferp2p.cpp index 9feed78..8782de9 100644 --- a/src/network/applications/msnobjecttransferp2p.cpp +++ b/src/network/applications/msnobjecttransferp2p.cpp @@ -557,7 +557,7 @@ void MsnObjectTransferP2P::showTransferComplete() // Read the stamp value, there is the certificate of the wink // This is a X509 certificate, signed by the Microsoft // If this value is missing, we can show the wink anyway and be able to sent it to no WLM clients - const QString& stamp( msnObject_.getAttribute( QString( "stamp" ), msnObject_.objectString() ) ); + const QString stamp( msnObject_.getAttribute( QString( "stamp" ), msnObject_.objectString() ) ); if( stamp.isEmpty() ) { break; diff --git a/src/network/msnchallengehandler.cpp b/src/network/msnchallengehandler.cpp index 6c1d06d..2a1e735 100644 --- a/src/network/msnchallengehandler.cpp +++ b/src/network/msnchallengehandler.cpp @@ -90,7 +90,7 @@ const QString MSNChallengeHandler::computeHash( const QString& challengeString ) for( int i = 0; i < challengeIntegers.count(); i++ ) { QString sNumHex; - const QString& sNum( challengeKey.mid( i * 4, 4 ) ); + const QString sNum( challengeKey.mid( i * 4, 4 ) ); // Go through the number string, determining the hex equivalent of each value // and add that to our new hex string for this number. diff --git a/src/network/msnconnection.cpp b/src/network/msnconnection.cpp index 582a6cf..fdf71f2 100644 --- a/src/network/msnconnection.cpp +++ b/src/network/msnconnection.cpp @@ -682,7 +682,7 @@ void MsnConnection::parseMultiPacketMimeMessage( const QStringList &command, con #endif // Get associated multi-packet message buffer, create one if it doesn't exist yet. - const QString& messageId( mimeMessage.getValue("Message-ID") ); + const QString messageId( mimeMessage.getValue("Message-ID") ); MultiPacketMessage *multiPacketMessage; if( ! multiPacketBuffer_.contains( messageId ) ) { @@ -702,7 +702,7 @@ void MsnConnection::parseMultiPacketMimeMessage( const QStringList &command, con } // Parse message if complete multi-packet message is received. - const MimeMessage &fullMimeMessage( multiPacketMessage->getMessage() ); + const MimeMessage &fullMimeMessage = multiPacketMessage->getMessage(); parseMimeMessage( command, fullMimeMessage ); // Delete handler class @@ -755,7 +755,7 @@ int MsnConnection::sendMimeMessage( AckType ackType, const MimeMessage &message } // Create the "MSG id type length" header - const QByteArray& rawMessage( message.getMessage() ); + const QByteArray rawMessage( message.getMessage() ); // Build the command int ack = ack_++; @@ -776,7 +776,7 @@ int MsnConnection::sendMimeMessage( AckType ackType, const MimeMessage &message int MsnConnection::sendPayloadMessage( const QString &prefix, const QString &arguments, const QString &payload ) { // Send payload, as UTF-8 encoded raw string. - const QByteArray& binPayload( payload.toUtf8() ); + const QByteArray binPayload( payload.toUtf8() ); return sendPayloadMessage( prefix, arguments, binPayload ); } @@ -1058,7 +1058,7 @@ void MsnConnection::writeData( const QString& data ) kDebug() << objectName() << "- >>> " << data.trimmed(); #endif - const QByteArray& binData( data.toUtf8() ); + const QByteArray binData( data.toUtf8() ); qint64 noBytesWritten = socket_->writeData( binData ); if( noBytesWritten != binData.length() ) // Note that the previous code used data.length instead of unicode.length(), but I diff --git a/src/network/msnnotificationconnection.cpp b/src/network/msnnotificationconnection.cpp index ed274c1..ee2339f 100644 --- a/src/network/msnnotificationconnection.cpp +++ b/src/network/msnnotificationconnection.cpp @@ -79,6 +79,7 @@ MsnNotificationConnection::MsnNotificationConnection() connected_(false), currentAccount_(0), enableNotifications_(false), + goneOnline_(false), initialized_(false), isInitiatingConnection_(false), lastStatus_(-1), @@ -109,7 +110,7 @@ MsnNotificationConnection::MsnNotificationConnection() loginTimer_.setSingleShot( true ); connect( &loginTimer_, SIGNAL( timeout() ), this, SLOT ( slotAuthenticationFailed() ) ); - + notificationUnlockTimer_.setSingleShot( true ); connect( ¬ificationUnlockTimer_, SIGNAL( timeout() ), this, SLOT( unlockNotifications() ) ); } @@ -188,6 +189,15 @@ void MsnNotificationConnection::addExistingContact( QString handle, const QStrin kDebug() << "Re-adding contact " << handle; #endif + Contact *c = contactList_->getContactByHandle( handle ); + if ( c && c->isFriend () ) + { +#ifdef KMESSDEBUG_NOTIFICATION_GENERAL + kDebug () << handle << "is already on the address book; ignoring"; +#endif + return; + } + // Request the re-adding of contact to AB AddressBookService *addressBook = createAddressBookService(); addressBook->addContact( handle, groupsId , true ); @@ -209,8 +219,36 @@ void MsnNotificationConnection::addNewContact( QString handle, const QStringList kDebug() << "Adding contact " << handle; #endif - // Request the adding of contact to AB AddressBookService *addressBook = createAddressBookService(); + Contact *c = contactList_->getContactByHandle( handle ); + + // if they already exist, ensure we tell AB service of this. + if ( c && c->isFriend() ) + { + // now move them from the pending list onto the allow list. + if ( c->isPending() ) + { + + // mark them as a messenger user first if they aren't already! + if ( ! c->isMessengerUser() ) + { + addressBook->markMessengerUser( c->getGuid() ); + c->setMessengerUser( true ); + } + + // this is a bit of a hack. + addressBook->removePending( handle ); + addressBook->unblockContact( handle ); + } + else + { +#ifdef KMESSDEBUG_NOTIFICATION_GENERAL + kDebug() << handle << "is already on the address book; ignoring."; +#endif + return; + } + } + addressBook->addContact( handle, groupsId ); } @@ -343,7 +381,7 @@ void MsnNotificationConnection::changeCurrentMedia( const QString &application, */ void MsnNotificationConnection::changedMsnObject() { - if(isConnected()) + if( isConnected() && goneOnline_ ) { // Send the same status message, with a new msn object changeStatus(currentAccount_->getStatus()); @@ -386,7 +424,7 @@ void MsnNotificationConnection::changeFriendlyName( QString newName ) AddressBookService *addressBook = createAddressBookService(); addressBook->contactUpdate( AddressBookService::PROPERTY_FRIENDLYNAME, newName ); - + RoamingService *roaming = createRoamingService(); roaming->updateProfile(); @@ -406,7 +444,7 @@ void MsnNotificationConnection::changePersonalProperties( const QString& cid, in { // Send BLP command for privacy settings, please refer to: // http://msnpiki.msnfanatic.com/index.php/Command:BLP - const QString& blpToSend( ( blp == 0 ) ? "BL" : "AL" ); + const QString blpToSend( ( blp == 0 ) ? "BL" : "AL" ); sendCommand( "BLP", blpToSend ); // Check if necessary to retrieve information ( like pm, picture ) from msn storage @@ -537,6 +575,14 @@ void MsnNotificationConnection::changeProperty( QString handle, QString type, QS */ void MsnNotificationConnection::changeStatus( const Status newStatus ) { + const QString statusCode( MsnStatus::getCode( newStatus ) ); + + if( newStatus == STATUS_OFFLINE ) + { + kWarning() << "Cannot change status to Offline!"; + return; + } + quint32 capabilities = Contact::MSN_CAP_INK_GIF // If Isf-Qt is disabled, we can still receive GIF images | Contact::MSN_CAP_WINKS @@ -552,15 +598,8 @@ void MsnNotificationConnection::changeStatus( const Status newStatus ) capabilities |= Contact::MSN_CAP_INK_ISF; #endif - const QString& statusCode( MsnStatus::getCode( newStatus ) ); const QString objStr( QUrl::toPercentEncoding( currentAccount_->getMsnObjectString() ) ); - /* - // To test the old file transfer: - sendCommand( "CHG", newStatus + " 0"); - return; - */ - if( objStr.isEmpty() ) { // Just don't send it if we don't have it. @@ -628,6 +667,8 @@ void MsnNotificationConnection::closeConnection() offlineImService_ = 0; passportLoginService_ = 0; isInitiatingConnection_ = false; + initialStatusSent_ = false; + goneOnline_ = false; lastStatus_ = -1; roamingService_ = 0; @@ -736,7 +777,7 @@ OfflineImService* MsnNotificationConnection::createOfflineImService() { // Extract the 't' and 'p' values from the current authentication ticket string // This is done beacuse sendMessage() could has requested one new ticket - const QStringList& fields( currentAccount_->getToken( "Messenger" ).split("&") ); + const QStringList fields( currentAccount_->getToken( "Messenger" ).split("&") ); QString authT, authP; foreach( const QString &field, fields ) @@ -849,18 +890,18 @@ QByteArray MsnNotificationConnection::createTripleDes ( const QByteArray &key, c // Initialize a triple-DES CBC encryption gcry_cipher_hd_t handle; gcry_cipher_open( &handle, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, 0 ); - + // Set key and IV gcry_cipher_setkey( handle, key.constData(), key.size() ); gcry_cipher_setiv( handle, iv.constData(), iv.size() ); - + // Encrypt the data. The out buffer has to have the same size as the in buffer. char *encrypted = new char[ secret.size() ]; gcry_cipher_encrypt( handle, (void*) encrypted, secret.size(), secret.constData(), secret.size() ); - + // Clean up the cipher handle gcry_cipher_close( handle ); - + QByteArray encryptedByteArray( encrypted, secret.size() ); delete [] encrypted; return encryptedByteArray; @@ -917,6 +958,14 @@ void MsnNotificationConnection::goOnline() } initialStatusSent_ = true; + if( goneOnline_ ) + { +#ifdef KMESSDEBUG_NOTIFICATION_GENERAL + kDebug() << "Already gone online, skipping call."; +#endif + return; + } + #ifdef KMESSDEBUG_NOTIFICATION_GENERAL kDebug() << "Going online!"; #endif @@ -933,7 +982,7 @@ void MsnNotificationConnection::goOnline() // Get the initial status to use: if we were previously disconnected by an error or network // issue, use the last status instead int initialStatus = currentAccount_->getInitialStatus(); - if( lastStatus_ != -1 && lastStatus_ != STATUS_OFFLINE ) + if( lastStatus_ != -1 && lastStatus_ != STATUS_OFFLINE && lastStatus_ != STATUS_IDLE ) { #ifdef KMESSDEBUG_NOTIFICATION_GENERAL kDebug() << "Last status was set:" << MsnStatus::getCode( (Status)lastStatus_ ); @@ -989,6 +1038,12 @@ void MsnNotificationConnection::goOnline() // start a sliding timer: whilst we're receiving the first ILNs do not display notifications. // when 10sec have elapsed after the last ILN then we unlock the notifications. notificationUnlockTimer_.start( 10000 ); + + goneOnline_ = true; + +#ifdef KMESSDEBUG_NOTIFICATION_GENERAL + kDebug() << "Gone online!"; +#endif } @@ -1074,7 +1129,7 @@ void MsnNotificationConnection::gotChl( const QStringList& command ) { // Handle challenge query MSNChallengeHandler handler; - const QString& response( handler.computeHash( command[2] ) ); + const QString response( handler.computeHash( command[2] ) ); // Send response sendPayloadMessage( "QRY", handler.getProductId(), response ); @@ -1121,9 +1176,9 @@ void MsnNotificationConnection::gotIln( const QStringList& command ) if ( notificationUnlockTimer_.isActive() ) notificationUnlockTimer_.start( 2000 ); // Get the contact info from the message - const QString& handle ( command[3].toLower() ); - const QString& friendlyName ( QUrl::fromPercentEncoding( command[5].toUtf8() ) ); - QString msnObject ( QUrl::fromPercentEncoding( command[7].toUtf8() ) ); + const QString handle ( command[3].toLower() ); + const QString friendlyName ( QUrl::fromPercentEncoding( command[5].toUtf8() ) ); + QString msnObject ( QUrl::fromPercentEncoding( command[7].toUtf8() ) ); uint capabilities = command[6].toUInt(); Status status = MsnStatus::codeToStatus( command[2] ); @@ -1182,9 +1237,9 @@ void MsnNotificationConnection::gotNln( const QStringList& command ) if(KMESS_NULL(contactList_)) return; // Get the contact info from the message - const QString& handle ( command[2].toLower() ); - const QString& friendlyName ( QUrl::fromPercentEncoding( command[4].toUtf8() ) ); - QString msnObject ( QUrl::fromPercentEncoding( command[6].toUtf8() ) ); + const QString handle ( command[2].toLower() ); + const QString friendlyName ( QUrl::fromPercentEncoding( command[4].toUtf8() ) ); + QString msnObject ( QUrl::fromPercentEncoding( command[6].toUtf8() ) ); Status status = MsnStatus::codeToStatus( command[1] ); uint capabilities = command[5].toUInt(); @@ -1242,8 +1297,8 @@ void MsnNotificationConnection::gotOut( const QStringList& command ) // Received a property change (friendly name, phone number, etc..) void MsnNotificationConnection::gotPrp( const QStringList& command ) { - const QString& propertyName ( command[1] ); - const QString& propertyValue( QUrl::fromPercentEncoding( command[2].toUtf8() ) ); + const QString propertyName ( command[1] ); + const QString propertyValue( QUrl::fromPercentEncoding( command[2].toUtf8() ) ); if( propertyName == "MFN" ) { @@ -1286,13 +1341,13 @@ void MsnNotificationConnection::gotRml( const QStringList &command ) void MsnNotificationConnection::gotRng( const QStringList& command ) { // Pull the data from the message - const QString& chatId ( command[1] ); - const QString& serverAndPort( command[2] ); - const QString& auth ( command[4] ); - const QString& handle ( command[5].toLower() ); + const QString& chatId = command[1]; + const QString& serverAndPort = command[2]; + const QString& auth = command[4]; + const QString& handle = command[5].toLower(); - const QString& server ( serverAndPort.section(':', 0, 0) ); - const QString& portString( serverAndPort.section(':', 1, 1) ); + const QString server ( serverAndPort.section(':', 0, 0) ); + const QString portString( serverAndPort.section(':', 1, 1) ); bool goodPort; quint16 port = (quint16) portString.toUInt( &goodPort ); @@ -1338,9 +1393,9 @@ void MsnNotificationConnection::gotUbx( const QStringList &command, const QByteA } // Parse payload - const QDomElement& root( xml.namedItem("Data").toElement() ); - const QString& psm( root.namedItem("PSM").toElement().text() ); - QString currentMedia( root.namedItem("CurrentMedia").toElement().text() ); + const QDomElement root ( xml.namedItem("Data").toElement() ); + const QString psm ( root.namedItem("PSM").toElement().text() ); + QString currentMedia( root.namedItem("CurrentMedia").toElement().text() ); QString mediaType; // Append current media if set. @@ -1405,7 +1460,7 @@ void MsnNotificationConnection::gotUrl( const QStringList& command ) // Check if in the hash there is already the ack request // Remove the item with the key "ack" and value "SERVICE" and switch the element // so the key will be the "SERVICE" and the value will be the URL. - const QString& service( hash.take( command[1] ) ); + const QString service( hash.take( command[1] ) ); if( ! service.isEmpty() ) { @@ -1428,7 +1483,7 @@ void MsnNotificationConnection::gotUsr( const QStringList& command ) { if(KMESS_NULL(currentAccount_)) return; - const QString& step( command[2] ); + const QString& step = command[2]; // This is either asking for authentication or confirming it if( step == "SSO" ) @@ -1439,7 +1494,7 @@ void MsnNotificationConnection::gotUsr( const QStringList& command ) // closed before this point, we just try again with HTTP, which usually works. isInitiatingConnection_ = false; - const QString& policy ( command[4] ); // Policy + const QString& policy = command[4]; // Policy nonceBase64_ = command[5].toAscii(); // Base64 nonce // Change statusbar @@ -1504,14 +1559,13 @@ void MsnNotificationConnection::gotVer( const QStringList& command ) */ void MsnNotificationConnection::gotXfr(const QStringList& command) { - // Get id of transaction - int transactionId = command[1].toInt(); + int transactionId = command[1].toInt(); - // Get informations about the server from that - const QString& serverType ( command[2] ); - const QString& serverAndPort ( command[3] ); - const QString& server ( serverAndPort.section( ':', 0, 0 ) ); - const QString& portString( serverAndPort.section( ':', 1, 1 ) ); + // Get informations about the server + const QString& serverType = command[2]; + const QString& serverAndPort = command[3]; + const QString server ( serverAndPort.section( ':', 0, 0 ) ); + const QString portString( serverAndPort.section( ':', 1, 1 ) ); // Convert the port to an integer bool goodPort; @@ -1609,7 +1663,7 @@ void MsnNotificationConnection::putAdl( const QString &handle, int list ) // If handle is present then the adl isn't initial ADL command, so use command for add someone into one list if( ! handle.isEmpty() ) { - const QStringList& splittedHandle( handle.split( "@" ) ); + const QStringList splittedHandle( handle.split( "@" ) ); const QString payload( "" "" @@ -1669,7 +1723,7 @@ void MsnNotificationConnection::putAdl( const QString &handle, int list ) if( list != 0 ) { // Split the domain from handle - const QStringList& splittedHandle( currentContact->getHandle().split( "@" ) ); + const QStringList splittedHandle( currentContact->getHandle().split( "@" ) ); // Set the user type userType = 1; @@ -1693,13 +1747,14 @@ void MsnNotificationConnection::putAdl( const QString &handle, int list ) adlList += currentAdl; } } - else + + // contact is in the pending list, so get user confirmation. + if ( currentContact->isPending() ) { // The user should decide in which list add it emit contactAddedUser( currentContact->getHandle() ); } - // Send the buffer if the send variable is true or the current contact is the last of the list if( send || ! i.hasNext() ) { @@ -1715,7 +1770,7 @@ void MsnNotificationConnection::putAdl( const QString &handle, int list ) // Send the RML command void MsnNotificationConnection::putRml( const QString &handle, int list ) { - const QStringList& splittedHandle( handle.split( "@" ) ); + const QStringList splittedHandle( handle.split( "@" ) ); const QString payload( "" "" @@ -1787,7 +1842,7 @@ void MsnNotificationConnection::loginSucceeded() if( !gcry_control( GCRYCTL_INITIALIZATION_FINISHED_P ) ) { gcry_check_version( 0 ); - + // We don't need secure memory for this, I guess... Passwords and // everything have already been sent. gcry_control( GCRYCTL_DISABLE_SECMEM, 0 ); @@ -1914,7 +1969,7 @@ bool MsnNotificationConnection::openConnection() } enableNotifications_ = false; - + // If the last connection was using HTTP, try again using TCP first. switchToTcpSocket(); @@ -2113,8 +2168,8 @@ void MsnNotificationConnection::parseMimeMessage( const QStringList& command, co kDebug() << "Got " << mainMessage.getSubValue("Content-Type") << "."; #endif - const QString& contentType( mainMessage.getSubValue("Content-Type") ); - const MimeMessage& message( mainMessage.getBody() ); + const QString contentType( mainMessage.getSubValue("Content-Type") ); + const MimeMessage message( mainMessage.getBody() ); #ifdef KMESSDEBUG_NOTIFICATION_MESSAGES mainMessage.print(); @@ -2155,7 +2210,7 @@ void MsnNotificationConnection::parseMimeMessage( const QStringList& command, co } // Parse the Mail-Data field. - const QString& mailDataSrc( message.getValue("Mail-Data") ); + const QString mailDataSrc( message.getValue("Mail-Data") ); if( mailDataSrc == "too-large" ) { // After a certain ammount of messages, the XML is replaced with "too-large". @@ -2229,8 +2284,8 @@ void MsnNotificationConnection::parseMimeMessage( const QStringList& command, co if( message.getValue("Type") == "1" ) { int timeLeft = message.getValue("Arg1").toInt(); - const QString& textTimeLeft( i18ncp( "Time left before server maintenance", - "%1 minute", "%1 minutes", timeLeft ) ); + const QString textTimeLeft( i18ncp( "Time left before server maintenance", + "%1 minute", "%1 minutes", timeLeft ) ); if( timeLeft > 2 ) { emit statusMessage( i18n("Server closes for maintenance in %1!", textTimeLeft ), false ); @@ -2579,11 +2634,11 @@ void MsnNotificationConnection::removeContact(QString handle, bool block) // Remove the contact from AB AddressBookService *addressBook = createAddressBookService();; addressBook->deleteContact( contactId ); - + // if not blocking, make sure we re-add to the Allow list. // ABContactDelete removes them from the Allow list for some reason. This was what // caused the "you've been added" dialog to popup for deleted contacts on the next login. - if ( ! block ) + if ( ! block && ! contact->isBlocked() ) { allowContact( handle ); } @@ -2805,7 +2860,7 @@ void MsnNotificationConnection::slotContactDeleted( const QString& contactId ) return; } - const QString& handle( contact->getHandle() ); + const QString& handle = contact->getHandle(); contact->setFriend( false ); // Remove it from our FL. @@ -2842,15 +2897,16 @@ void MsnNotificationConnection::slotGotAddressBookList( const QList< QHash contactInfo( contact.next() ); - const QString& handle( contactInfo.take( "handle" ).toString() ); - const QString& friendlyName( contactInfo.take( "friendlyName" ).toString() ); - const QString& contactId( contactInfo.take( "contactId" ).toString() ); - const QStringList& guidList( contactInfo.take( "guidList" ).toStringList() ); + const QString handle( contactInfo.take( "handle" ).toString() ); + const QString friendlyName( contactInfo.take( "friendlyName" ).toString() ); + const QString contactId( contactInfo.take( "contactId" ).toString() ); + const QStringList guidList( contactInfo.take( "guidList" ).toStringList() ); + bool isMessenger( contactInfo.take( "isMessengerUser" ).toBool() ); // Add each contact in our AB to contactlist ( FL ) lists = contactsRole_.take( handle ) | Contact::MSN_LIST_FRIEND; - Contact *contact = contactList_->addContact( handle, friendlyName, lists , guidList , contactId ); + Contact *contact = contactList_->addContact( handle, friendlyName, lists , guidList , contactId, isMessenger ); // Set the remaining informations if( contact != 0 ) { @@ -2866,7 +2922,7 @@ void MsnNotificationConnection::slotGotAddressBookList( const QList< QHashaddContact( handle , handle , i.value(), QStringList(), "" ); } @@ -3043,7 +3099,7 @@ void MsnNotificationConnection::slotError( QString error, MsnSocketBase::ErrorTy openConnection(); return; } - + // Clean up the mess left by the SOAP classes if( qobject_cast( sender() ) != 0 ) { diff --git a/src/network/msnnotificationconnection.h b/src/network/msnnotificationconnection.h index 2f07b30..7cc9fb4 100644 --- a/src/network/msnnotificationconnection.h +++ b/src/network/msnnotificationconnection.h @@ -338,6 +338,8 @@ class MsnNotificationConnection : public MsnConnection CurrentAccount *currentAccount_; // Whether or not to enable presence notifications bool enableNotifications_; + // Whether the goOnline() operation was completed + bool goneOnline_; // Group where to initially place a newly added contact QString initialContactAddedGroup_; // Whether or not the object was initialized diff --git a/src/network/msnswitchboardconnection.cpp b/src/network/msnswitchboardconnection.cpp index 7b5a0bb..ec19c47 100644 --- a/src/network/msnswitchboardconnection.cpp +++ b/src/network/msnswitchboardconnection.cpp @@ -505,9 +505,9 @@ const QString MsnSwitchboardConnection::convertHtmlColorToMsnColor( const QStrin #endif // Get the color components - const QString& red ( color.mid(1, 2) ); - const QString& green( color.mid(3, 2) ); - const QString& blue ( color.mid(5, 2) ); + const QString red ( color.mid(1, 2) ); + const QString green( color.mid(3, 2) ); + const QString blue ( color.mid(5, 2) ); // Reassemble the color if ( blue != "00" ) @@ -551,9 +551,9 @@ const QString MsnSwitchboardConnection::convertMsnColorToHtmlColor( QString& col } // Get the color components - const QString& blue ( color.mid( 0, 2 ) ); - const QString& green( color.mid( 2, 2 ) ); - const QString& red ( color.mid( 4, 2 ) ); + const QString blue ( color.mid( 0, 2 ) ); + const QString green( color.mid( 2, 2 ) ); + const QString red ( color.mid( 4, 2 ) ); // Reassemble the components return "#" + red + green + blue; @@ -640,11 +640,11 @@ void MsnSwitchboardConnection::gotBye(const QStringList& command) // Received the initial roster information for new contacts joining a session. void MsnSwitchboardConnection::gotIro(const QStringList& command) { - const QString& handle ( command[4].toLower() ); - QString friendlyName( QUrl::fromPercentEncoding( command[5].toUtf8() ) ); - uint capabilities = command[6].toUInt(); + const QString handle ( command[4].toLower() ); + QString friendlyName ( QUrl::fromPercentEncoding( command[5].toUtf8() ) ); + uint capabilities = command[6].toUInt(); - const QString& altFriendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED ) ); + const QString altFriendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED ) ); if( ! altFriendlyName.isEmpty() ) { friendlyName = altFriendlyName; @@ -658,11 +658,11 @@ void MsnSwitchboardConnection::gotIro(const QStringList& command) // Received notification of a new client in the session. void MsnSwitchboardConnection::gotJoi(const QStringList& command) { - const QString& handle ( command[1].toLower() ); - QString friendlyName( QUrl::fromPercentEncoding( command[2].toUtf8() ) ); - uint capabilities = command[3].toUInt(); + const QString handle ( command[1].toLower() ); + QString friendlyName( QUrl::fromPercentEncoding( command[2].toUtf8() ) ); + uint capabilities = command[3].toUInt(); - const QString& altFriendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED ) ); + const QString altFriendlyName( currentAccount_->getContactFriendlyNameByHandle( handle, STRING_CLEANED ) ); if( ! altFriendlyName.isEmpty() ) { friendlyName = altFriendlyName; @@ -732,7 +732,7 @@ void MsnSwitchboardConnection::gotNak( const QStringList& command ) #endif // Don't display failure notices for P2P or other kinds of MIME messages - const QString& contentType( mimeMessage.getValue( "Content-Type" ) ); + const QString contentType( mimeMessage.getValue( "Content-Type" ) ); if( ! contentType.startsWith( "text/plain" ) && ! contentType.startsWith( "text/x-msnmsgr-datacast" ) && ! contentType.startsWith( "image/gif" ) @@ -1033,7 +1033,7 @@ void MsnSwitchboardConnection::parseChatMessage( const QString &contactHandle, c QString messageFriendlyName( friendlyName ); if( message.hasField( "P4-Context" ) ) { - const QString& friendlyNameP4( message.getValue( "P4-Context" ) ); + const QString friendlyNameP4( message.getValue( "P4-Context" ) ); if( ! friendlyNameP4.isEmpty() ) { messageFriendlyName = friendlyNameP4; @@ -1045,10 +1045,10 @@ void MsnSwitchboardConnection::parseChatMessage( const QString &contactHandle, c #endif // Get the font and color from the format string - QString family( message.getSubValue( "X-MMS-IM-Format", "FN" ) ); - const QString& effects( message.getSubValue( "X-MMS-IM-Format", "EF" ) ); - QString color( message.getSubValue( "X-MMS-IM-Format", "CO" ) ); - + QString family( message.getSubValue( "X-MMS-IM-Format", "FN" ) ); + const QString effects( message.getSubValue( "X-MMS-IM-Format", "EF" ) ); + QString color( message.getSubValue( "X-MMS-IM-Format", "CO" ) ); + family = QUrl::fromPercentEncoding( family.toUtf8() ); color = convertMsnColorToHtmlColor( color ); @@ -1090,8 +1090,8 @@ void MsnSwitchboardConnection::parseClientCapsMessage( const QString &contactHan // N: not logging // Retrieve client identifier from the message - const MimeMessage& subMessage( message.getBody() ); - const QString& clientFullName( subMessage.getValue("Client-Name") ); + const MimeMessage& subMessage = message.getBody(); + const QString clientFullName( subMessage.getValue("Client-Name") ); // store in contact extension, except if contact is an InvitedContact ContactBase *contact = currentAccount_->getContactByHandle( contactHandle ); @@ -1227,11 +1227,11 @@ void MsnSwitchboardConnection::parseEmoticonMessage( const QString &contactHandl #endif // Store the emoticon code for the contact. - const MsnObject& msnObject(msnObjectData); - contact->addEmoticonDefinition(emoticonCode, msnObject.getDataHash()); + const MsnObject msnObject( msnObjectData ); + contact->addEmoticonDefinition( emoticonCode, msnObject.getDataHash() ); // Ask the ChatMaster to download emoticons. - emit gotMsnObject(msnObjectData, contactHandle); + emit gotMsnObject( msnObjectData, contactHandle ); } } @@ -1291,13 +1291,13 @@ void MsnSwitchboardConnection::parseError( const QStringList& command, const QBy void MsnSwitchboardConnection::parseMimeMessage(const QStringList& command, const MimeMessage &message) { // Get the message type from the head - const QString& contentType( message.getSubValue( "Content-Type" ) ); + const QString contentType( message.getSubValue( "Content-Type" ) ); #ifdef KMESSDEBUG_SWITCHBOARD_GENERAL kDebug() << "Received mime message of type '" << contentType << "'."; #endif // Get the sender's handle and friendly name - const QString& contactHandle( command[1] ); + const QString contactHandle( command[1] ); QString friendlyName; QString contactPicture; @@ -1355,7 +1355,7 @@ void MsnSwitchboardConnection::parseMimeMessage(const QStringList& command, cons { // This is a mime application message, the old format for invitations. // Extract the actual MIME message from the body of the Mime container, pass it to the ChatMaster/ApplicationList. - const MimeMessage& subMessage( message.getBody() ); + const MimeMessage& subMessage = message.getBody(); emit gotMessage( subMessage, contactHandle ); } else if( contentType == "application/x-msnmsgrp2p" ) @@ -1371,7 +1371,7 @@ void MsnSwitchboardConnection::parseMimeMessage(const QStringList& command, cons else if( contentType == "text/x-msnmsgr-datacast" ) { // This is a datacast message, contact wants to send a nudge or voice clip - const MimeMessage& subMessage( message.getBody() ); + const MimeMessage& subMessage = message.getBody(); parseDatacastMessage( contactHandle, subMessage ); } else if( contentType == "image/gif" ) @@ -1427,7 +1427,7 @@ void MsnSwitchboardConnection::parseP2PMessage( const QString &contactHandle, co { // The switchboad is a "broadcast" channel for all messages, // so in a multi-chat the message could be for an other contact. - const QString& p2pDest( message.getValue("P2P-Dest") ); + const QString p2pDest( message.getValue("P2P-Dest") ); if( p2pDest.isEmpty() ) { // P2P dest is empty if we produce an error when a session is not initiated yet (MSNSLP header also has To: set) @@ -1447,7 +1447,7 @@ void MsnSwitchboardConnection::parseP2PMessage( const QString &contactHandle, co // Extract the actual P2P message from the body of the Mime container. // Dispatch the message to the central ApplicationList of the Contact (maintained by ChatMaster). - const P2PMessage& subMessage( message.getBinaryBody() ); + const P2PMessage& subMessage = message.getBinaryBody(); emit gotMessage( subMessage, contactHandle ); } @@ -1466,7 +1466,7 @@ void MsnSwitchboardConnection::parseTypingMessage( const QString &/*contactHandl } // The contact informs it's typing a normal message - const QString& typingUser( message.getValue( "TypingUser" ) ); + const QString typingUser( message.getValue( "TypingUser" ) ); ContactBase *contact = currentAccount_->getContactByHandle( typingUser ); @@ -1488,7 +1488,7 @@ void MsnSwitchboardConnection::sendApplicationMessage( const MimeMessage &messag #endif // Check which type of message is sent - const QString& contentType( message.getValue("Content-Type") ); + const QString contentType( message.getValue("Content-Type") ); if( contentType == "application/x-msnmsgrp2p" ) { // Message contains binary P2P message data @@ -1534,15 +1534,16 @@ void MsnSwitchboardConnection::sendChatMessage( const QString& text ) // Check if any custom emoticon is being sent in the message. // This has to be sent first so the receiving client will be aware that // there will be custom emoticons in the next message. - QString code, pictureFile; + QString code; + QString pictureFile; QString emoticonObjects; QStringList addedEmoticons; - int lastPos = 0; - int matchStart = 0; - EmoticonManager *manager = EmoticonManager::instance(); - const QRegExp& emoticonRegExp( manager->getPattern( true ) ); - const QHash& emoticonPictures( manager->getFileNames( true ) ); - const QString& emoticonThemePath( manager->getThemePath( true ) ); + int lastPos = 0; + int matchStart = 0; + EmoticonManager* manager = EmoticonManager::instance(); + const QRegExp& emoticonRegExp = manager->getPattern( true ); + const QHash& emoticonPictures = manager->getFileNames( true ); + const QString& emoticonThemePath = manager->getThemePath( true ); // We'll loop until we reach the end of the string or there are no more emoticons to parse if( ! emoticonRegExp.isEmpty() ) @@ -1608,7 +1609,7 @@ void MsnSwitchboardConnection::sendChatMessage( const QString& text ) } // Read the file and create an MSNObject of the emoticon - const QByteArray& data( iFile.readAll() ); + const QByteArray data( iFile.readAll() ); iFile.close(); MsnObject test( currentAccount_->getHandle(), pictureFile, QString::null, MsnObject::EMOTICON, data ); @@ -1636,9 +1637,9 @@ void MsnSwitchboardConnection::sendChatMessage( const QString& text ) // Then send the real text message // Get the formatting properties and convert them to MSN's IM format - const QFont& font( currentAccount_->getFont() ); - const QString& fontFamily( QUrl::toPercentEncoding( font.family() ) ); - const QString& color ( convertHtmlColorToMsnColor( currentAccount_->getFontColor() ) ); + const QFont& font = currentAccount_->getFont(); + const QString fontFamily( QUrl::toPercentEncoding( font.family() ) ); + const QString color ( convertHtmlColorToMsnColor( currentAccount_->getFontColor() ) ); // Determine effects QString effects; @@ -1647,7 +1648,7 @@ void MsnSwitchboardConnection::sendChatMessage( const QString& text ) if( font.underline() ) effects += "U"; // Determine text direction - const QString& rtl( text.isRightToLeft() ? "; RL=1" : "" ); + const QString rtl( text.isRightToLeft() ? "; RL=1" : "" ); // Create the message MimeMessage message; @@ -1685,7 +1686,7 @@ void MsnSwitchboardConnection::sendChatMessage( const QString& text ) int pos = 0; int prevPos = 0; QString messagePart; - const QString& body( message.getBody() ); + const QString& body = message.getBody(); int parts = (int) ceil( ( (float) bodyLength / (float) maxSendableSingleMessageLength ) ); @@ -1744,7 +1745,7 @@ void MsnSwitchboardConnection::sendInk( InkFormat format, const QByteArray& ink } // Verify whether all contacts are capable to view this Ink message or not - ContactBase *unsupportingContact; + ContactBase *unsupportingContact = 0; foreach( const QString &handle, contactsInChat_ ) { contact = currentAccount_->getContactByHandle( handle ); @@ -1920,7 +1921,7 @@ void MsnSwitchboardConnection::sendMimeMessageWhenReady(AckType ackType, const M KMESS_ASSERT( connectionState_ == SB_CHAT_STARTED ); #endif - const QString &contentType( message.getSubValue( "Content-Type" ) ); + const QString contentType( message.getSubValue( "Content-Type" ) ); if( backgroundConnection_ ) { @@ -2081,7 +2082,7 @@ void MsnSwitchboardConnection::sendMimeMessageWhenReady(AckType ackType, const M } // Only send chat messages - const QString& contentType( message.getValue( "Content-Type" ) ); + const QString contentType( message.getValue( "Content-Type" ) ); if( ! contentType.startsWith( "text/plain" ) ) { #ifdef KMESSDEBUG_SWITCHBOARD_GENERAL diff --git a/src/network/soap/addressbookservice.cpp b/src/network/soap/addressbookservice.cpp index 7325f92..57b8b66 100644 --- a/src/network/soap/addressbookservice.cpp +++ b/src/network/soap/addressbookservice.cpp @@ -79,7 +79,7 @@ void AddressBookService::addContact( const QString &handle, const QStringList& g " \n" ); if( ! alreadyExists ) { - body += " LivePending\n"; + body += " Regular\n"; } body += " " + handle + "\n" @@ -379,6 +379,34 @@ void AddressBookService::deleteGroup( const QString &groupId ) +// marks a contact Id as a messenger user (isMessengerUser = true ) +// Hotmail contacts will appear on our AB (but they'll be isMessengerUser = false) +// if these contacts are added to our Messenger list we need to update them as +// valid messenger users. AB service won't do this for us, apparently. +void AddressBookService::markMessengerUser( const QString &contactId ) +{ + QString body( "\n" + " 00000000-0000-0000-0000-000000000000\n" + " \n" + " \n" + " " + contactId + "\n" + " \n" + " true\n" + " \n" + " IsMessengerUser\n" + " \n" + " \n" + "" ); + + sendSecureRequest( new SoapMessage( SERVICE_URL_ADDRESSBOOK, + "http://www.msn.com/webservices/AddressBook/ABContactUpdate", + createCommonHeader( "Timer" ), + body ), + "Contacts" ); +} + + + void AddressBookService::renameGroup( const QString &groupId, const QString &name ) { QString body( "\n" @@ -408,6 +436,17 @@ void AddressBookService::renameGroup( const QString &groupId, const QString &nam +/** + * Remove a user from the Pending list. + */ +void AddressBookService::removePending( const QString &handle ) +{ + SoapMessage *msg = getMembershipListUpdate( handle, "Pending", false ); + sendSecureRequest( msg, "Contacts" ); +} + + + /** * @brief Retrieve the address book. * @@ -513,14 +552,14 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) // Parse the adress book lists // First parse the one containing the groups - const QDomNodeList& groups( body.elementsByTagName( "Group" ) ); + const QDomNodeList groups( body.elementsByTagName( "Group" ) ); for( int index = 0; index < groups.count(); index++ ) { - const QDomNode& group( groups.item( index ) ); + const QDomNode group( groups.item( index ) ); - const QString& groupId( XmlFunctions::getNodeValue( group, "groupId" ) ); - const QString& name( textNodeDecode( XmlFunctions::getNodeValue( group, "groupInfo/name" ) ) ); + const QString groupId( XmlFunctions::getNodeValue( group, "groupId" ) ); + const QString name( textNodeDecode( XmlFunctions::getNodeValue( group, "groupInfo/name" ) ) ); if( groupId.isEmpty() || name.isEmpty() ) { @@ -534,7 +573,7 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) } // Then parse the list which contains the contacts - const QDomNodeList& contactsNode( body.elementsByTagName( "Contact" ) ); + const QDomNodeList contactsNode( body.elementsByTagName( "Contact" ) ); QList< QHash > contacts; QString handle; QString information; @@ -542,24 +581,24 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) for( int index = 0; index < contactsNode.count(); index++ ) { - const QDomNode& contact( contactsNode.item( index ) ); - const QDomNode& contactInfo( XmlFunctions::getNode( contact, "contactInfo" ) ); + const QDomNode contact( contactsNode.item( index ) ); + const QDomNode contactInfo( XmlFunctions::getNode( contact, "contactInfo" ) ); // Get some user information - const QString& contactType( XmlFunctions::getNodeValue( contactInfo, "contactType" ) ); - const QString& friendlyName( textNodeDecode( XmlFunctions::getNodeValue( contactInfo, "displayName" ) )); + const QString contactType( XmlFunctions::getNodeValue( contactInfo, "contactType" ) ); + const QString friendlyName( textNodeDecode( XmlFunctions::getNodeValue( contactInfo, "displayName" ) )); // Check if the contact type is Me: it has the information about personal profile if( contactType == "Me" ) { - const QString& cid( XmlFunctions::getNodeValue( contactInfo, "CID" ) ); + const QString cid( XmlFunctions::getNodeValue( contactInfo, "CID" ) ); // Search for "...MSN.IM.BLPVALUE.." - const QDomNodeList& annotations( contactInfo.toElement().elementsByTagName( "Annotation" ) ); + const QDomNodeList annotations( contactInfo.toElement().elementsByTagName( "Annotation" ) ); int blp = 0; // = 0 fixes compile time warning for( int index2 = 0; index2 < annotations.count(); index2++ ) { - const QDomNode& annotation( annotations.at( index2 ) ); + const QDomNode annotation( annotations.at( index2 ) ); if( XmlFunctions::getNodeValue( annotation, "Name" ) == "MSN.IM.BLP" ) { @@ -573,11 +612,14 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) continue; } - // If the contact is not in our Messenger contact list, skip it. - if( XmlFunctions::getNodeValue( contactInfo, "isMessengerUser" ) == "false" ) - { - continue; - } + // If the contact is not in our Messenger contact list, skip it. + // adam (24 Jul 10): can't skip these users. non-messenger (i.e, hotmail only) + // users will appear on our AB list. we might need to add them one day. if that + // happens we'll need a Contact instance to refer to. +// if( XmlFunctions::getNodeValue( contactInfo, "isMessengerUser" ) == "false" ) +// { +// continue; +// } // Store all information about contact in one qhash QHash contactInformations; @@ -624,7 +666,7 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) contactInformations.insert( "hasSpace", information ); // Check if the contact is assigned to any groups - const QDomNodeList& guids( contactInfo.toElement().elementsByTagName( "guid" ) ); + const QDomNodeList guids( contactInfo.toElement().elementsByTagName( "guid" ) ); guidList.clear(); if( ! guids.isEmpty() ) { @@ -652,7 +694,7 @@ void AddressBookService::parseAddressBook( const QDomElement &body ) // Parse the membership lists void AddressBookService::parseMembershipLists( const QDomElement &body ) { - const QDomNodeList& services( body.elementsByTagName( "Service" ) ); + const QDomNodeList services( body.elementsByTagName( "Service" ) ); // New, empty accounts have no Services if( services.count() == 0 ) @@ -663,7 +705,7 @@ void AddressBookService::parseMembershipLists( const QDomElement &body ) for( int serviceIndex = 0; serviceIndex < services.count(); serviceIndex++ ) { - const QDomNode& service( services.item( serviceIndex ) ); + const QDomNode service( services.item( serviceIndex ) ); // Get the name of the service QString serviceType( XmlFunctions::getNodeValue( service, "Info/Handle/Type" ) ); @@ -674,7 +716,7 @@ void AddressBookService::parseMembershipLists( const QDomElement &body ) continue; } - const QDomNodeList &memberships( XmlFunctions::getNode( service, "Memberships" ).childNodes() ); + const QDomNodeList memberships( XmlFunctions::getNode( service, "Memberships" ).childNodes() ); // TODO Parse the timestamp of current retrieve to update the timestamp in the XML list /* @@ -692,7 +734,7 @@ void AddressBookService::parseMembershipLists( const QDomElement &body ) for( int index = 0; index < memberships.count(); index++ ) { // Parse each role structure - const QDomNode& membership( memberships.item( index ) ); + const QDomNode membership( memberships.item( index ) ); role = XmlFunctions::getNodeValue( membership, "MemberRole" ); roleId = 0; @@ -707,12 +749,13 @@ void AddressBookService::parseMembershipLists( const QDomElement &body ) } // Parse each member - const QDomNodeList& members( membership.toElement().elementsByTagName( "Member" ) ); + const QDomNodeList members( membership.toElement().elementsByTagName( "Member" ) ); for( int i = 0; i < members.count(); i++ ) { // FIXME: This only works for the "Messenger" service. Others don't have the PassportName nor Email nodes. // We need a flexible system! - const QDomNode& memberNode( members.item( i ) ); + const QDomNode memberNode( members.item( i ) ); + handle = XmlFunctions::getNodeValue( memberNode, "PassportName" ).toLower(); if( handle.isEmpty() ) @@ -730,6 +773,15 @@ void AddressBookService::parseMembershipLists( const QDomElement &body ) continue; } + // skip non-passport contacts in the membership lists (ie, Yahoo). + // we can't handle them when manipulating the membership lists. + QString type = XmlFunctions::getNodeValue( memberNode, "Type" ).toLower(); + if ( type != "passport" ) + { + kDebug() << "Skipped non-passport contact" << handle; + continue; + } + // Insert the current contact in the hash with their respective role // If the contact is already listed, the new value is OR'ed (set bit flag) with the old roleId contactsRole.insert( handle, contactsRole.value( handle, 0 ) | roleId ); @@ -882,9 +934,9 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) // A contact was added to the AB QStringList info ( data.value.toStringList() ); - const QString& handle ( info.takeFirst() ); - const QStringList& groupsId ( info ); - const QString& contactId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); + const QString handle ( info.takeFirst() ); + const QStringList groupsId ( info ); + const QString contactId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); // If the contact is valid, signal that the contact was added to AB if( ! contactId.isEmpty() && ! handle.isEmpty() ) @@ -896,7 +948,7 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) { // A contact was deleted from the AB - const QString& contactId( data.value.toString() ); + const QString contactId( data.value.toString() ); if( ! contactId.isEmpty() ) { @@ -907,9 +959,9 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) { // A contact was added to the Membership list in a certain Role - const QStringList& info ( data.value.toStringList() ); - const QString& handle( info.value( 0 ) ); - const QString& role ( info.value( 1 ) ); + const QStringList info ( data.value.toStringList() ); + const QString handle( info.value( 0 ) ); + const QString role ( info.value( 1 ) ); if( role == "BL" ) { @@ -924,8 +976,8 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) { // A contact was added to a group - const QString& groupId ( data.value.toString() ); - const QString& contactId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); + const QString groupId ( data.value.toString() ); + const QString contactId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); if( ! contactId.isEmpty() && ! groupId.isEmpty() ) { @@ -936,9 +988,9 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) { // A contact was removed from a group - const QStringList& info ( data.value.toStringList() ); - const QString& contactId( info.value( 0 ) ); - const QString& groupId ( info.value( 1 ) ); + const QStringList info ( data.value.toStringList() ); + const QString contactId( info.value( 0 ) ); + const QString groupId ( info.value( 1 ) ); if( ! contactId.isEmpty() && ! groupId.isEmpty() ) { @@ -948,8 +1000,8 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) else if( data.type == "GroupAdd" ) { // A group was added - const QString& name ( data.value.toString() ); - const QString& groupId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); + const QString name ( data.value.toString() ); + const QString groupId( body.elementsByTagName( "guid" ).item(0).toElement().text() ); if( ! groupId.isEmpty() && ! name.isEmpty() ) { @@ -959,7 +1011,7 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) else if( data.type == "GroupDelete" ) { // A group was removed - const QString& groupId( data.value.toString() ); + const QString groupId( data.value.toString() ); if( ! groupId.isEmpty() ) { @@ -969,9 +1021,9 @@ void AddressBookService::parseSecureResult( SoapMessage *message ) else if( data.type == "GroupRename" ) { // A group was renamed - const QStringList& info ( data.value.toStringList() ); - const QString& groupId( info.value( 0 ) ); - const QString& name ( info.value( 1 ) ); + const QStringList info ( data.value.toStringList() ); + const QString groupId( info.value( 0 ) ); + const QString name ( info.value( 1 ) ); if( ! groupId.isEmpty() && ! name.isEmpty() ) { @@ -1005,7 +1057,7 @@ void AddressBookService::unblockContact( const QString &handle ) // Create a message to update the membership list SoapMessage *AddressBookService::getMembershipListUpdate( const QString &handle, const QString &role, bool adding ) { - QString body( "\n" + QString body( "xmlns=\"http://www.msn.com/webservices/AddressBook\">\n" " \n" " 0\n" " Messenger\n" @@ -1022,17 +1074,18 @@ SoapMessage *AddressBookService::getMembershipListUpdate( const QString &handle, " \n" " \n" " \n" - " \n" - "" ); + " \n" ); QString action; if( adding ) { action = "http://www.msn.com/webservices/AddressBook/AddMember"; + body = ""; } else { action = "http://www.msn.com/webservices/AddressBook/DeleteMember"; + body = ""; } return new SoapMessage( SERVICE_URL_ADDRESSBOOK_SHARING, diff --git a/src/network/soap/addressbookservice.h b/src/network/soap/addressbookservice.h index 1772160..c609848 100644 --- a/src/network/soap/addressbookservice.h +++ b/src/network/soap/addressbookservice.h @@ -64,8 +64,12 @@ class AddressBookService : public PassportLoginService void deleteGroup( const QString &groupId ); // Create a message to update the membership list SoapMessage *getMembershipListUpdate( const QString &handle, const QString &role, bool adding ); + // Mark a contact as a Messenger user + void markMessengerUser( const QString &contactId ); // Rename group void renameGroup( const QString &groupId, const QString &name ); + // Remove a user from the PL + void removePending( const QString &handle ); // Retrieve the address book void retrieveAddressBook( const QString &fromTimestamp = QString() ); // Retrieve the membership lists diff --git a/src/network/soap/httpsoapconnection.cpp b/src/network/soap/httpsoapconnection.cpp index dc04175..5422167 100644 --- a/src/network/soap/httpsoapconnection.cpp +++ b/src/network/soap/httpsoapconnection.cpp @@ -26,6 +26,7 @@ #include "config-kmess.h" #include +#include #include #include #include @@ -303,7 +304,7 @@ void HttpSoapConnection::sendNextRequest() return; } - const QString &endpointAddress( currentRequest_->getEndPoint() ); + const QString &endpointAddress = currentRequest_->getEndPoint(); QNetworkRequest request; QUrl endpoint( endpointAddress ); @@ -440,22 +441,25 @@ void HttpSoapConnection::slotAuthenticationRequired( QNetworkReply *reply, QAuth // The request to the remote server finished void HttpSoapConnection::slotRequestFinished( QNetworkReply *reply ) { + QMutexLocker locker( &lockMutex_ ); + // An unexpected response has arrived if( currentRequest_ == 0 ) { + kWarning() << "No request in progress!"; return; } // A response has arrived, stop the timeout detection timer responseTimer_.stop(); - const QByteArray& replyContents( reply->readAll() ); - const int statusCode = reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).toInt(); - const QString& error( reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString() ); + const QByteArray& replyContents = reply->readAll(); + const int statusCode = reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).toInt(); + const QString error ( reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString() ); #ifdef KMESSDEBUG_HTTPSOAPCONNECTION_GENERAL bool requestSuccess = false; - const QUrl &replyUrl( reply->url() ); + const QUrl replyUrl( reply->url() ); kDebug() << "Received response: code" << statusCode << reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ) << " from" << replyUrl; @@ -491,10 +495,10 @@ void HttpSoapConnection::slotRequestFinished( QNetworkReply *reply ) // Verify if the server is redirecting us to another server if( currentResponse->getFaultCode() == "psf:Redirect" ) { - const QUrl& originalUrl( currentResponse->getEndPoint() ); - const QUrl& redirectUrl( XmlFunctions::getNodeValue( currentResponse->getFault(), "redirectUrl" ) ); - const QString& originalHost( originalUrl.host() ); - const QString& redirectHost( redirectUrl.host() ); + const QUrl& originalUrl = currentResponse->getEndPoint(); + const QUrl redirectUrl( XmlFunctions::getNodeValue( currentResponse->getFault(), "redirectUrl" ) ); + const QString originalHost( originalUrl.host() ); + const QString redirectHost( redirectUrl.host() ); #ifdef KMESSDEBUG_HTTPSOAPCONNECTION_GENERAL kDebug() << "Received redirection from:" << originalHost << "to:" << redirectHost; @@ -530,8 +534,8 @@ void HttpSoapConnection::slotRequestFinished( QNetworkReply *reply ) } else { - const QUrl& originalUrl( currentResponse->getEndPoint() ); - const QString& originalHost( originalUrl.host() ); + const QUrl originalUrl( currentResponse->getEndPoint() ); + const QString originalHost( originalUrl.host() ); QString preferredHostName( XmlFunctions::getNodeValue( currentResponse->getHeader(), "ServiceHeader/PreferredHostName" ) ); diff --git a/src/network/soap/httpsoapconnection.h b/src/network/soap/httpsoapconnection.h index 00d140c..f8b8ee3 100644 --- a/src/network/soap/httpsoapconnection.h +++ b/src/network/soap/httpsoapconnection.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -117,6 +118,7 @@ class HttpSoapConnection : public QObject QNetworkAccessManager *http_; /// Whether a message is being sent or not bool isSending_; + QMutex lockMutex_; /// Timer used to detect timeouts when sending requests QTimer responseTimer_; /// The last SOAP action diff --git a/src/network/soap/offlineimservice.cpp b/src/network/soap/offlineimservice.cpp index 09c9b30..1ae3454 100644 --- a/src/network/soap/offlineimservice.cpp +++ b/src/network/soap/offlineimservice.cpp @@ -500,12 +500,12 @@ void OfflineImService::storeMessage( const QString &to, const QString &message, { MSNChallengeHandler handler; - const QByteArray &windowsNewLine( "\r\n" ); - const QString &from ( currentAccount_->getHandle() ); + const QByteArray windowsNewLine( "\r\n" ); + const QString from ( currentAccount_->getHandle() ); // Limit the friendly name to 48 chars to avoid the server doesn't accept the oim // The loop is necessary to avoid the cutting of one multi-byte character - const QString &originalFriendlyName( currentAccount_->getFriendlyName( STRING_CLEANED ) ); + const QString originalFriendlyName( currentAccount_->getFriendlyName( STRING_CLEANED ) ); QByteArray friendlyName; int size = 48; @@ -516,7 +516,7 @@ void OfflineImService::storeMessage( const QString &to, const QString &message, } while( friendlyName.size() > 48 ); - const QString &offlineImKey( currentAccount_->getOfflineImKey() ); + const QString &offlineImKey = currentAccount_->getOfflineImKey(); // Save the session data in the SOAP message, to allow slots to identify the source session MessageData data; diff --git a/src/network/soap/passportloginservice.cpp b/src/network/soap/passportloginservice.cpp index b35c67c..d5471a3 100644 --- a/src/network/soap/passportloginservice.cpp +++ b/src/network/soap/passportloginservice.cpp @@ -132,7 +132,7 @@ const QString PassportLoginService::createHotmailToken( const QString &passportT } // Create the percent encoded string - const QString& encodedString( QUrl::toPercentEncoding( + const QString encodedString( QUrl::toPercentEncoding( "" " " @@ -155,13 +155,13 @@ const QString PassportLoginService::createHotmailToken( const QString &passportT "&nonce=" + QUrl::toPercentEncoding( nonce.toBase64() ) ); // Compute the keys with HMAC-Sha1 algorithm - const QByteArray& key1( QByteArray::fromBase64( proofToken.toLatin1() ) ); + const QByteArray key1( QByteArray::fromBase64( proofToken.toLatin1() ) ); - const QByteArray& magic( "WS-SecureConversation" + nonce ); + const QByteArray magic( "WS-SecureConversation" + nonce ); - const QByteArray& key2( KMessShared::deriveKey( key1, magic ) ); + const QByteArray key2( KMessShared::deriveKey( key1, magic ) ); - const QByteArray& hash( KMessShared::createHMACSha1( key2, token.toLatin1() ) ); + const QByteArray hash( KMessShared::createHMACSha1( key2, token.toLatin1() ) ); token += "&hash=" + QUrl::toPercentEncoding( hash.toBase64() ); @@ -199,7 +199,7 @@ void PassportLoginService::parseSecureFault( SoapMessage *message ) */ void PassportLoginService::parseSecureResult( SoapMessage *message ) { - const QString& resultType( message->getBody().firstChildElement().nodeName() ); + const QString resultType( message->getBody().firstChildElement().nodeName() ); kWarning() << "Could not parse response type" << resultType << "from endpoint" << message->getEndPoint(); @@ -287,7 +287,7 @@ void PassportLoginService::parseSoapFault( SoapMessage *message ) return; } - const QString& faultCode( message->getFaultCode() ); + const QString faultCode( message->getFaultCode() ); // React accordingly to the received error if related to login issues, // if not, fall back to the base class fault parsing @@ -423,7 +423,7 @@ void PassportLoginService::parseSoapFault( SoapMessage *message ) */ void PassportLoginService::parseSoapResult( SoapMessage *message ) { - const QDomElement& body( message->getBody().firstChildElement() ); + const QDomElement body( message->getBody().firstChildElement() ); // Remove the request from the list inProgressRequests_.remove( getCurrentRequest() ); @@ -440,7 +440,7 @@ void PassportLoginService::parseSoapResult( SoapMessage *message ) kDebug() << "Obtaining security tokens.."; #endif - const QDomNodeList& authTokens( body.childNodes() ); + const QDomNodeList authTokens( body.childNodes() ); if( authTokens.count() == 0 ) { // Likely a login error. @@ -458,9 +458,9 @@ void PassportLoginService::parseSoapResult( SoapMessage *message ) tokenExpirationDates_.clear(); for( uint index = 0; index < authTokens.length(); ++index ) { - const QDomNode &tokenResponse( authTokens.item( index ) ); + const QDomNode tokenResponse( authTokens.item( index ) ); - const QString &referenceEndPoint( XmlFunctions::getNodeValue( tokenResponse, "AppliesTo/EndpointReference/Address" ) ); + const QString referenceEndPoint( XmlFunctions::getNodeValue( tokenResponse, "AppliesTo/EndpointReference/Address" ) ); // Extract the token's expiration date const QString creationString ( XmlFunctions::getNodeValue( tokenResponse, "LifeTime/Created" ) ); @@ -778,8 +778,8 @@ void PassportLoginService::sendSecureRequest( SoapMessage *message, const QStrin kDebug() << "Sending secure request with token:" << requiredTokenName; #endif - const QString &tokenValue( currentAccount_->getToken( requiredTokenName ) ); - const QDateTime &tokenExpiration( tokenExpirationDates_[ requiredTokenName ] ); + const QString tokenValue( currentAccount_->getToken( requiredTokenName ) ); + const QDateTime &tokenExpiration = tokenExpirationDates_[ requiredTokenName ]; int timeDifference = QDateTime::currentDateTime().secsTo( tokenExpiration ); diff --git a/src/network/soap/roamingservice.cpp b/src/network/soap/roamingservice.cpp index a3ddf12..ff65c61 100644 --- a/src/network/soap/roamingservice.cpp +++ b/src/network/soap/roamingservice.cpp @@ -150,12 +150,12 @@ void RoamingService::updateProfile() #endif return; } - + // either the PSM or the friendly name has changed, so update them both. lastKnownPersonalMessage_ = currentPersonalMessage; lastKnownFriendlyName_ = currentAccount->getFriendlyName( STRING_ORIGINAL ); - + #ifdef KMESSDEBUG_ROAMINGSERVICE kDebug() << "Uploading personal message, profile ID:" << profileResourceId_; #endif @@ -351,8 +351,7 @@ void RoamingService::processProfileResult( const QDomElement &body ) const QDomNode expressionProfile( XmlFunctions::getNode( body, "GetProfileResponse/GetProfileResult/ExpressionProfile" ) ); - QString partialPictureUrl( XmlFunctions::getNodeValue( expressionProfile, "StaticUserTilePublicURL" ) ); - QString fullPictureUrl( "http://byfiles.storage.msn.com" + partialPictureUrl ); + QString fullPictureUrl( XmlFunctions::getNodeValue( expressionProfile, "StaticUserTilePublicURL" ) ); QString pictureLastModified( XmlFunctions::getNodeValue( expressionProfile, "Photo/DateModified" ) ); QString pictureName( XmlFunctions::getNodeValue( expressionProfile, "Photo/Name" ) ); // This message also contains DisplayName @@ -387,8 +386,11 @@ void RoamingService::processProfileResult( const QDomElement &body ) } // Only download the picture if it is enabled - if( partialPictureUrl.isEmpty() || ! currentAccount->getShowPicture() ) + if( fullPictureUrl.isEmpty() || ! currentAccount->getShowPicture() ) { +#ifdef KMESSDEBUG_ROAMINGSERVICE + kDebug() << "Display picture disabled, not using received picture:" << fullPictureUrl; +#endif return; } @@ -407,7 +409,7 @@ void RoamingService::processProfileResult( const QDomElement &body ) } // Check if the picture on the server is newer - const QString displayPicturePath( currentAccount->getPicturePath() ); + const QString displayPicturePath( currentAccount->getPicturePath( false /* don't fallback to the kmess default pic */ ) ); QFileInfo info( displayPicturePath ); // KDateTime is used to process the timestamp from the server, @@ -419,12 +421,24 @@ void RoamingService::processProfileResult( const QDomElement &body ) kDebug() << "Downloading display picture from storage"; #endif // Download the picture from the server into a temporary file - QNetworkAccessManager *manager = new QNetworkAccessManager; - manager->get( QNetworkRequest( QUrl( fullPictureUrl ) ) ); + QNetworkAccessManager *manager = new QNetworkAccessManager( this ); connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT ( receivedDisplayPicture(QNetworkReply*) ) ); + + manager->get( QNetworkRequest( QUrl( fullPictureUrl ) ) ); } + else + { +#ifdef KMESSDEBUG_ROAMINGSERVICE + kDebug() << "DP path:" << displayPicturePath << " Last modification date:" << info.lastModified() + << "vs. server dp's date:" << KDateTime::fromString( pictureLastModified, KDateTime::ISODate ).toClockTime().dateTime(); +#endif + } + +#ifdef KMESSDEBUG_ROAMINGSERVICE + kDebug() << "Done."; +#endif } @@ -435,11 +449,28 @@ void RoamingService::receivedDisplayPicture( QNetworkReply *reply ) CurrentAccount *currentAccount = CurrentAccount::instance(); #ifdef KMESSDEBUG_ROAMINGSERVICE - kDebug() << "Received display picture, saving file"; + kDebug() << "Saving received display picture of size" << reply->size(); #endif + if( reply->size() == 0 ) + { +#ifdef KMESSDEBUG_ROAMINGSERVICE + kDebug() << "Received empty content, ignoring response."; +#endif + return; + } + + if( ! reply->header( QNetworkRequest::LocationHeader ).toString().isEmpty() ) + { +#ifdef KMESSDEBUG_ROAMINGSERVICE + kDebug() << "Received Location: header, ignoring response."; + kDebug() << "Location:" << reply->header( QNetworkRequest::LocationHeader ).toString(); +#endif + return; + } + // We need to also delete the calling QNetworkAccessManager to avoid memory leaks - QNetworkAccessManager *manager = qobject_cast( sender() ); + QNetworkAccessManager *manager = reply->manager(); // check if the picture dir exists QDir accountDir( KMessConfig::instance()->getAccountDirectory( currentAccount->getHandle() ) ); @@ -468,6 +499,7 @@ void RoamingService::receivedDisplayPicture( QNetworkReply *reply ) // Save the picture on file, we'll move it later to a good place file.write( reply->readAll() ); + file.flush(); file.close(); reply->deleteLater(); @@ -546,7 +578,7 @@ void RoamingService::createDocument( const QString& name, const QString& mimeTyp // list the display pictures on the server (gets displayPictureResourceId), this method is currently not used -void RoamingService::findDocuments() +void RoamingService::findDocuments() { QString body( "\n" "\n" @@ -622,7 +654,7 @@ void RoamingService::deleteRelationships( const QString& source_rid, const QStri { sourceHandle = "" + KMessShared::htmlEscape( source_rid ) + "\n"; } - + QString body( "\n" "\n" + sourceHandle + "\n" "\n" diff --git a/src/notification/chatnotification.cpp b/src/notification/chatnotification.cpp index dbbb59d..5412c4a 100644 --- a/src/notification/chatnotification.cpp +++ b/src/notification/chatnotification.cpp @@ -145,7 +145,7 @@ void ChatNotification::notify( const ChatMessage &message, Chat *chat ) contact = currentAccount->addInvitedContact( handle ); } - const QString& friendlyName( contact->getFriendlyName( STRING_LIST_SETTING_ESCAPED ) ); + const QString& friendlyName = contact->getFriendlyName( STRING_LIST_SETTING_ESCAPED ); #ifdef KMESSDEBUG_CHATNOTIFICATION kDebug() << "Contact" << handle; diff --git a/src/notification/contactstatusnotification.cpp b/src/notification/contactstatusnotification.cpp index 34e1791..9243970 100644 --- a/src/notification/contactstatusnotification.cpp +++ b/src/notification/contactstatusnotification.cpp @@ -126,7 +126,7 @@ void ContactStatusNotification::notify( Contact *contact, bool isNeeded ) } - const QString& friendlyName( contact->getFriendlyName( STRING_LIST_SETTING_ESCAPED ) ); + const QString& friendlyName = contact->getFriendlyName( STRING_LIST_SETTING_ESCAPED ); QString text; Status status = contact->getStatus(); Status lastStatus = contact->getLastStatus(); diff --git a/src/notification/macnotification.cpp b/src/notification/macnotification.cpp new file mode 100644 index 0000000..a4cd53f --- /dev/null +++ b/src/notification/macnotification.cpp @@ -0,0 +1,194 @@ +/*************************************************************************** + macnotification.cpp - Notifications on Mac OS X + ------------------- + begin : Thursday June 3 2010 + copyright : (C) 2010 by Sjors Gielen + email : sjors@kmess.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "macnotification.h" + +enum MacNotifyOption +{ + NoNotify = 0, + DockNotify, + GrowlNotify, + SoundNotify, +}; + +#define MessageSound "kmess_msg.mp3" +#define ContactOnlineSound "kmess_logon.mp3" +#define ContactOfflineSound "kmess_logoff.mp3" +#define ChatSound "kmess_chat.mp3" +#define CREATE_ICON if( icon_ == 0 ) { icon_ = new QSystemTrayIcon(); } + +QSystemTrayIcon *MacNotification::icon_(0); + +bool MacNotification::growlSupported() +{ + CREATE_ICON; + return icon_->supportsMessages(); +} + +void MacNotification::notify( const QString &event, const QString &text, + NotificationManager::EventSettings settings ) +{ + QString textTitle; + int opt = NoNotify; + QString sound; + if( event == "status" ) + { + textTitle = i18n("Contact changed status"); + opt = GrowlNotify; + } + else if( event == "new email" ) + { + textTitle = i18n("You received a new e-mail message"); + opt = GrowlNotify | SoundNotify; + sound = MessageSound; + } + else if( event == "nudge" ) + { + textTitle = i18n("A contact nudged you!"); + opt = GrowlNotify | DockNotify | SoundNotify; + sound = ChatSound; + } + else if( event == "chat start" ) + { + textTitle = i18n("A contact started a chat with you"); + opt = GrowlNotify | DockNotify | SoundNotify; + sound = ChatSound; + } + else if( event == "new message" ) + { + textTitle = i18n("A contact messaged you"); + opt = GrowlNotify | DockNotify | SoundNotify; + sound = ChatSound; + } + else if( event == "contact online" ) + { + textTitle = i18n("A contact came online"); + opt = GrowlNotify | SoundNotify; + sound = ContactOnlineSound; + } + else if( event == "contact offline" ) + { + textTitle = i18n("A contact went offline"); + opt = GrowlNotify; + sound = ContactOfflineSound; + } + else if( event == "contact status" ) + { + textTitle = i18n("A contact changed status"); + opt = GrowlNotify; + } + else + { + textTitle = i18n("KMess notification"); + opt = GrowlNotify | DockNotify | SoundNotify; + sound = MessageSound; + } + + // This is one of the reasons KNotify is this annoying. It supports HTML, so + // everybody sends HTML to it; but then suddenly you realise that it uses + // or wants to use backends that *don't* support HTML. But it has no flags + // to check that, and even if there would be, nobody would check them + // anyway. + qDebug() << "Stripping html: " << text; + QString displayText = stripHtml( text ); + qDebug() << "Outcome: " << displayText; + + if( opt & DockNotify ) + { + MacNotification::jumpIcon(); + } + if( opt & SoundNotify ) + { + MacNotification::playSound( sound ); + } + if( opt & GrowlNotify ) + { + MacNotification::showGrowlBalloon( textTitle, displayText ); + } +} + +QString MacNotification::stripHtml( const QString &text ) +{ + // Strip all HTML from the incoming text, quickly and dirty, by using + // QDom. + QDomDocument stripper; + stripper.setContent( "" + text + "" ); + return stripHtml( stripper.documentElement() ); +} + +QString MacNotification::stripHtml( const QDomNode &e ) +{ + if( e.isText() ) + return e.toText().data(); + + QString data; + for( int i = 0; i < e.childNodes().size(); ++i ) + { + data.append( stripHtml( e.childNodes().at(i) ) ); + } + return data; +} + +void MacNotification::showGrowlBalloon( const QString &title, const QString &text ) +{ + // One of the ways to display a Growl notification is by using + // QSystemTrayIcon. We don't actually want to *display* a system tray + // icon, therefore we show the icon, show the message, hide the icon. + // TODO: replace this with more native code so we have more features + CREATE_ICON; + icon_->show(); + icon_->showMessage( title, + text, + QSystemTrayIcon::NoIcon, + 10000 ); + icon_->hide(); +} + +void MacNotification::playSound( const QString &name ) +{ + Phonon::MediaObject *obj = new Phonon::MediaObject(); + obj->setCurrentSource( Phonon::MediaSource("/tmp/" + name) ); + Phonon::AudioOutput *out = + new Phonon::AudioOutput(); + Phonon::createPath(obj, out); + obj->play(); + connect( obj, SIGNAL( finished() ), out, SLOT( deleteLater() ) ); + connect( obj, SIGNAL( finished() ), obj, SLOT( deleteLater() ) ); +} + +/** + * @brief Bounce the icon in the Dock. + * + * This method causes the application icon to bounce in the dock. + */ +void MacNotification::jumpIcon() +{ + // A widget has to be given, but since this call works applicationwide on + // Mac instead of on a specific widget, we give through a nullpointer. + QApplication::alert((QWidget*)0,0); +} diff --git a/src/notification/macnotification.h b/src/notification/macnotification.h new file mode 100644 index 0000000..21f85f8 --- /dev/null +++ b/src/notification/macnotification.h @@ -0,0 +1,67 @@ +/*************************************************************************** + macnotification.h - Notifications on Mac OS X + ------------------- + begin : Thursday June 3 2010 + copyright : (C) 2010 by Sjors Gielen + email : sjors@kmess.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef MACNOTIFICATION_H +#define MACNOTIFICATION_H + +#include +#include + +#include "notificationmanager.h" + +class QSystemTrayIcon; +class QDomNode; + +/** + * @brief Support for Mac-style notifications on OS X + * + * This file is compiled along if we are compiling a Mac binary. It adds + * support for Growl notifications and the 'jumping' of the icon. + * + * Because of the nature of KNotify, it is very unlikely that KNotify will + * ever implement this. Therefore, we implement it ourselves. + * + * @author Sjors Gielen + * @ingroup Notification + */ +class MacNotification : public QObject +{ + Q_OBJECT + + public: + //MacNotification(); + //~MacNotification(); + static bool growlSupported(); + + public slots: + static void showGrowlBalloon( const QString &title, const QString &text ); + static void playSound( const QString &filename ); + static void jumpIcon(); + static void notify( const QString &event, const QString &text, + NotificationManager::EventSettings settings ); + + static QString stripHtml( const QString& ); + static QString stripHtml( const QDomNode& ); + + private: + static QSystemTrayIcon *icon_; + +}; + + + +#endif diff --git a/src/notification/newsystemtraywidget.cpp b/src/notification/newsystemtraywidget.cpp new file mode 100644 index 0000000..321578b --- /dev/null +++ b/src/notification/newsystemtraywidget.cpp @@ -0,0 +1,231 @@ +/*************************************************************************** + newsystemtraywidget.cpp - description + ------------------- + begin : Mon Aug 31 2009 + copyright : (C) 2009 by Valerio Pilo + email : valerio@kmess.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "newsystemtraywidget.h" + +#include "../contact/msnstatus.h" +#include "../utils/kmessshared.h" +#include "../currentaccount.h" +#include "../account.h" +#include "../kmessdebug.h" +#include "config-kmess.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + + + +// The constructor +SystemTrayWidget::SystemTrayWidget( QWidget *parent ) + : KStatusNotifierItem( "kmess", parent ) +{ + CurrentAccount *currentAccount_ = CurrentAccount::instance(); + + // Connect the "changed status" and "changed friendly name" signals + connect( currentAccount_, SIGNAL( changedStatus() ), + this, SLOT ( statusChanged() ) ); + connect( currentAccount_, SIGNAL( changedFriendlyName() ), + this, SLOT ( statusChanged() ) ); + + // Connect email related signals + connect( currentAccount_, SIGNAL( changedNoEmails() ), + this, SLOT ( statusChanged() ) ); + connect( currentAccount_, SIGNAL( changedEmailDisplaySettings() ), + this, SLOT ( statusChanged() ) ); + + // Set up the static details of the icon + setCategory( KStatusNotifierItem::Communications ); + setStatus( KStatusNotifierItem::Active ); + setIconByName( "kmess" ); + setTitle( i18n( "KMess" ) ); + + // This icon is temporary + setAttentionIconByName( "preferences-desktop-notification-bell" ); + + statusChanged(); +} + + + +/** + * Display an Hide On Close dialog window with a trayicon screenshot + * + * This method, taken from the Basket Note Pads project (see the related links below), is used when + * the user closes the main KMess contact list window. Then a custom dialog window is shown to notify + * that the app will still run in background. This useful method adds to it a screenshot of the system + * tray area of the users' desktop, highlighting the application's icons. + * The original code was KDE3, it's been ported to make better use of the new features of Qt4 and KDE4. + * + * @see http://basket.kde.org/ - Official site of the Basket Note Pads project + * @see http://basket.kde.org/systemtray-on-close-info.php - Specific tray dialog page + */ +void SystemTrayWidget::displayCloseMessage( QString /*fileMenu*/ ) +{ + // Don't do all the computations if they are unneeded: + if ( ! KMessageBox::shouldBeShownContinue("hideOnCloseInfo") ) + { + return; + } + + const QString message( i18n( "

    Closing the main window will keep KMess running in the system tray.

    " + "

    You can open KMess again by clicking on the bird icon, which is " + "now flashing.
    " + "Use 'Quit' from the 'Connect' menu to quit the application.

    " ) ); + +#ifdef KMESSDEBUG_SYSTEMTRAY + kDebug() << "Displaying close-to-tray dialog."; +#endif + + // Make the icon to blink to help the user find it + setStatus( KStatusNotifierItem::NeedsAttention ); + + KMessageBox::information( kapp->activeWindow(), + message, + i18n( "Docking in System Tray" ), + "hideOnCloseInfo" ); + + // Stop the blinking + setStatus( KStatusNotifierItem::Active ); +} + + + +// The destructor +SystemTrayWidget::~SystemTrayWidget() +{ +#ifdef KMESSDEBUG_SYSTEMTRAY + kDebug() << "DESTROYED."; +#endif +} + + + +// Enable the system tray icon +void SystemTrayWidget::enable() +{ + // Force changing the icon + statusChanged(); +} + + + +// Return the context menu +KMenu* SystemTrayWidget::menu() const +{ + return contextMenu(); +} + + + +// Change the icon when the user's status changes +void SystemTrayWidget::statusChanged() +{ + QString friendlyName; + QString displayPicture; + Status status = STATUS_OFFLINE; + + CurrentAccount *account = CurrentAccount::instance(); + status = account->getStatus(); + + if ( status != STATUS_OFFLINE ) + { +#ifdef KMESSDEBUG_SYSTEMTRAY + kDebug() << "Updating icon status to" << MsnStatus::getCode( status ); +#endif + + if( ! account->isVerified() ) + { + // The account is not verified, use the email address + friendlyName = account->getHandle(); + } + else + { +#if defined( Q_WS_WIN ) + friendlyName = account->getFriendlyName( STRING_CLEANED ); +#else + friendlyName = account->getFriendlyName( STRING_CLEANED_ESCAPED ); +#endif + } + + if( status != STATUS_OFFLINE ) + { + displayPicture = account->getPicturePath(); + } + } + else + { +#ifdef KMESSDEBUG_SYSTEMTRAY + kDebug() << "Updating icon"; +#endif + } + + if( displayPicture.isNull() ) + { + displayPicture = KIconLoader::global()->iconPath( "kmess", KIconLoader::Desktop ); + } + + // Set the tray and the tooltip icons + setToolTipIconByName( displayPicture ); + setOverlayIconByName( ( status != STATUS_OFFLINE ) + ? MsnStatus::getIconName( status ) + : QString() ); + + // Update the tooltip + QString newTooltip; + + if( status != STATUS_OFFLINE ) + { +#if defined( Q_WS_WIN ) + // Qt on Windows does not support html in the system tray widget + newTooltip = i18nc( "Tray icon text tooltip when connected, %1 is the friendly name, %2 is the status", + "Connected as %1 (%2)", friendlyName, MsnStatus::getName( status ) ); +#else + // Tray icon tooltip, in html + newTooltip = i18nc( "Tray icon HTML tooltip when connected, %1 is the friendly name, %2 is the status", + "

    Connected as:
    %1 (%2)

    ", friendlyName, MsnStatus::getName( status ) ); +#endif + } + else + { +#if defined( Q_WS_WIN ) + newTooltip = i18nc( "Tray icon text tooltip when not connected", + "Not connected" ); +#else + newTooltip = i18nc( "Tray icon HTML tooltip when not connected", + "

    Not connected

    " ); +#endif + } + + // Little html "hack" to not show the version in bold. Not guaranteed to keep working buuuut.. + setToolTipTitle( i18n( "KMess" ) + "

    " + KMESS_VERSION + "" ); + + setToolTipSubTitle( newTooltip ); +} + + + +#include "newsystemtraywidget.moc" diff --git a/src/notification/newsystemtraywidget.h b/src/notification/newsystemtraywidget.h new file mode 100644 index 0000000..1f58a99 --- /dev/null +++ b/src/notification/newsystemtraywidget.h @@ -0,0 +1,67 @@ +/*************************************************************************** + newsystemtraywidget.h - description + ------------------- + begin : Mon Aug 31 2009 + copyright : (C) 2009 by Valerio Pilo + email : valerio@kmess.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef NEWSYSTEMTRAYWIDGET_H +#define NEWSYSTEMTRAYWIDGET_H + +#include + +#if KDE_IS_VERSION(4,3,70) + #include +#else + #include + using namespace Experimental; // KNotificationItem is in the Experimental namespace until 4.4 +#define KStatusNotifierItem KNotificationItem +#endif + +// Forward declarations +class KMenu; + + + +/** + * @brief System tray event handling. + * + * The user's status is displayed in the system tray. + * It also gives access to some settings. + * This class handles the events fired by the KDE systemtray. + * + * @author Valerio Pilo + * @ingroup Root + */ +class SystemTrayWidget : public KStatusNotifierItem +{ + Q_OBJECT + + public: + // The constructor + SystemTrayWidget( QWidget *parent=0 ); + // The destructor + virtual ~SystemTrayWidget(); + // Display a customized close window with a screenshot of the app's tray icon + void displayCloseMessage( QString fileMenu = QString() ); + // Enable the system tray icon + void enable(); + // Return the context menu + KMenu *menu() const; + + public slots: + // Change the icon when the user's status changes + void statusChanged(); +}; + +#endif diff --git a/src/notification/notificationmanager.cpp b/src/notification/notificationmanager.cpp index 42580da..9125ce1 100644 --- a/src/notification/notificationmanager.cpp +++ b/src/notification/notificationmanager.cpp @@ -27,7 +27,11 @@ #include #include +#ifndef Q_WS_MAC #include +#else +#include "macnotification.h" +#endif #include #ifdef Q_WS_WIN @@ -52,6 +56,7 @@ NotificationManager::NotificationManager() // Class destructor NotificationManager::~NotificationManager() { +#ifndef Q_WS_MAC foreach( KNotification *notification, events_.keys() ) { notification->close(); @@ -59,6 +64,7 @@ NotificationManager::~NotificationManager() events_.clear(); eventSettings_.clear(); +#endif delete autoLock_; } @@ -171,14 +177,18 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve return; } + // On Mac, notification emitting goes via the MacNotifications class +#ifdef Q_WS_MAC + MacNotification::notify( event, text, settings ); +#else bool isFullscreen = false; -#ifdef Q_WS_X11 + #ifdef Q_WS_X11 // Check if a full screen application is running by querying the window manager and asking // the state of the currently active window KWindowInfo info = KWindowSystem::windowInfo( KWindowSystem::activeWindow(), NET::WMState | NET::FullScreen ); isFullscreen = ( info.valid() && info.hasState( NET::FullScreen ) ); -#else + #else #ifdef Q_WS_WIN // Windows version HWND hwnd = GetForegroundWindow(); @@ -194,7 +204,7 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve #else #warning Full screen application detection is not implemented for this platform yet. #endif -#endif + #endif if( isFullscreen ) { @@ -202,11 +212,11 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve return; } -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER #ifdef Q_WS_X11 kDebug() << "Active window was valid?" << info.valid() <<". If so, it is not fullscreen, showing notifications."; #endif -#endif + #endif KNotification *notification; @@ -214,9 +224,9 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve notification = events_.key( settings.contact, (KNotification*)0 ); if( notification ) { -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER kDebug() << "Updating existing notification" << notification; -#endif + #endif notification->setText ( text ); notification->setActions( getButtonsLabels( settings.buttons ) ); // We can't update the event ID, crap. @@ -237,9 +247,9 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve // Create the notification notification = new KNotification( event ); -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER kDebug() << "Showing notification" << notification << "for event" << event; -#endif + #endif // Add it to our lists to be able to find it later events_ .insert( notification, settings.contact ); @@ -264,6 +274,7 @@ void NotificationManager::notify( const QString &event, const QString &text, Eve this, SLOT ( remove(QObject*) ) ); notification->sendEvent(); +#endif /* !Q_WS_MAC */ } @@ -284,6 +295,9 @@ NotificationManager* NotificationManager::instance() // Forward an activation action to the class which will manage it void NotificationManager::relayActivation( unsigned int action ) { +#ifdef Q_WS_MAC + #warning TODO! +#else KNotification *notification = static_cast( sender() ); if( ! notification || ! eventSettings_.contains( notification ) ) { @@ -291,14 +305,15 @@ void NotificationManager::relayActivation( unsigned int action ) return; } -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER kDebug() << "Relaying activation for notification" << notification; -#endif + #endif EventSettings settings = eventSettings_[ notification ]; Buttons clickedButton = getButtonFromAction( settings.buttons, action ); emit eventActivated( settings, clickedButton ); +#endif /* !Q_WS_MAC */ } @@ -306,13 +321,16 @@ void NotificationManager::relayActivation( unsigned int action ) // Delete an expired notification void NotificationManager::remove( QObject *object ) { +#ifdef Q_WS_MAC + // This doesn't need to happen on Mac +#else KNotification *notification = static_cast( object ); if( notification == 0 ) { -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER kDebug() << "Cannot remove notification, pointer" << notification << "not found!"; -#endif + #endif return; } @@ -320,9 +338,10 @@ void NotificationManager::remove( QObject *object ) events_.remove( notification ); eventSettings_.remove( notification ); -#ifdef KMESSDEBUG_NOTIFICATIONMANAGER + #ifdef KMESSDEBUG_NOTIFICATIONMANAGER kDebug() << "Deleted notification" << notification << "from the stack"; -#endif + #endif +#endif /* !Q_WS_MAC */ } diff --git a/src/notification/notificationmanager.h b/src/notification/notificationmanager.h index 79f98f9..b505cc3 100644 --- a/src/notification/notificationmanager.h +++ b/src/notification/notificationmanager.h @@ -26,7 +26,9 @@ // Forward declarations class QSystemTrayIcon; +#ifndef Q_WS_MAC class KNotification; +#endif class ContactBase; class XAutoLock; @@ -104,10 +106,12 @@ class NotificationManager : public QObject private: // Private properties // Autolock instance, used to check for screensaver/locker presence when showing popups XAutoLock *autoLock_; +#ifndef Q_WS_MAC // List of notifications currently active QHash events_; // Additional data stored for each notification QHash eventSettings_; +#endif // The System Tray widget to which the popups will refer QSystemTrayIcon *trayObject_; // The instance of the singleton manager diff --git a/src/notification/systemtraywidget.cpp b/src/notification/systemtraywidget.cpp index b8227ad..6bc0cd9 100644 --- a/src/notification/systemtraywidget.cpp +++ b/src/notification/systemtraywidget.cpp @@ -82,8 +82,8 @@ void SystemTrayWidget::displayCloseMessage( QString /*fileMenu*/ ) if ( ! KMessageBox::shouldBeShownContinue("hideOnCloseInfo") ) return; - const QString& message( i18n( "Closing the main window will keep KMess running in the system tray. " - "Use 'Quit' from the 'Connect' menu to quit the application." ) ); + const QString message( i18n( "Closing the main window will keep KMess running in the system tray. " + "Use 'Quit' from the 'Connect' menu to quit the application." ) ); // If the system tray is not visible, just show the text message if( ! QSystemTrayIcon::isSystemTrayAvailable() || ! isVisible() ) diff --git a/src/settings/accountpage.cpp b/src/settings/accountpage.cpp index 1912759..2dd9c3c 100644 --- a/src/settings/accountpage.cpp +++ b/src/settings/accountpage.cpp @@ -22,6 +22,8 @@ #include "../utils/kmessconfig.h" #include "../utils/kmessshared.h" #include "../kmessdebug.h" +#include "../currentaccount.h" + #include #include @@ -391,6 +393,11 @@ void AccountPage::saveSettings( Account *account ) account->setStatusOptions( useIdleTimerCheckBox_->isChecked(), idleTimeSpinBox_->value(), hideNotificationsWhenBusyCheckBox_->isChecked() ); + + if ( account->getHandle() == CurrentAccount::instance()->getHandle() ) + { + CurrentAccount::instance()->copyAccount( account ); + } } @@ -439,14 +446,14 @@ void AccountPage::selectPicture( bool resize, QString picturePath ) // Get the resourcedir which contains the largest collection of pictures. // This fixes a problem with SuSE, where /etc/opt/kde/share is returned instead of /opt/kde3/share - const QStringList& kdmDirs( dirs->findDirs( "data", "kdm/pics/users/" ) ); + const QStringList kdmDirs( dirs->findDirs( "data", "kdm/pics/users/" ) ); QDir kdmDir; int fileCount = 0; foreach( const QString& kdmPath, kdmDirs ) { kdmDir.setPath( kdmPath ); - const QStringList& pngFiles( kdmDir.entryList( QStringList( "*.png" ) ) ); + const QStringList pngFiles( kdmDir.entryList( QStringList( "*.png" ) ) ); if( pngFiles.size() > fileCount ) { diff --git a/src/settings/accountsmanagerpage.cpp b/src/settings/accountsmanagerpage.cpp index e8345e3..e3ece73 100644 --- a/src/settings/accountsmanagerpage.cpp +++ b/src/settings/accountsmanagerpage.cpp @@ -91,7 +91,7 @@ void AccountsManagerPage::accountSelected() const KMessApplication *kmessApp = static_cast( kapp ); const QListWidgetItem *selection = accountsList_->selectedItems().first(); - const QString &handle( selection->data( Qt::UserRole ).toString() ); + const QString handle( selection->data( Qt::UserRole ).toString() ); if( kmessApp->getContactListWindow()->isConnected() && CurrentAccount::instance()->getHandle() == handle ) @@ -114,7 +114,7 @@ void AccountsManagerPage::configureAccount() } const QListWidgetItem * selection = accountsList_->selectedItems().first(); - const QString& accountHandle( selection->data( Qt::UserRole ).toString() ); + const QString accountHandle( selection->data( Qt::UserRole ).toString() ); #ifdef KMESSDEBUG_SETTINGSDIALOG kDebug() << "Opening Account Settings for account" << accountHandle << "."; @@ -138,7 +138,7 @@ void AccountsManagerPage::deleteAccount() } const QListWidgetItem *selection = accountsList_->selectedItems().first(); - const QString &handle( selection->data( Qt::UserRole ).toString() ); + const QString handle( selection->data( Qt::UserRole ).toString() ); // Prevent deletion of the currently connected account const KMessApplication *kmessApp = static_cast( kapp ); diff --git a/src/settings/chatloggingpage.cpp b/src/settings/chatloggingpage.cpp index 9bf76d9..5d98b63 100644 --- a/src/settings/chatloggingpage.cpp +++ b/src/settings/chatloggingpage.cpp @@ -50,7 +50,7 @@ ChatLoggingPage::ChatLoggingPage( QWidget *parent ) void ChatLoggingPage::chooseDirectory() { // Let the user choose a folder, starting from the previously set path (if any) - const QString& dir( KFileDialog::getExistingDirectory( chatSavePathEdit_->text() ) ); + const QString dir( KFileDialog::getExistingDirectory( chatSavePathEdit_->text() ) ); if( ! dir.isEmpty() ) { diff --git a/src/settings/chatstylepage.cpp b/src/settings/chatstylepage.cpp index bcca686..55f63e7 100644 --- a/src/settings/chatstylepage.cpp +++ b/src/settings/chatstylepage.cpp @@ -43,8 +43,8 @@ ChatStylePage::ChatStylePage( QWidget *parent ) newStylesButton_->setIcon( KIcon( "get-hot-new-stuff" ) ); QPixmap pixmap; - const QString& emoticonDir ( CurrentAccount::instance()->getEmoticonStyle() ); - KStandardDirs *dirs = KGlobal::dirs(); + const QString& emoticonDir = CurrentAccount::instance()->getEmoticonStyle(); + KStandardDirs *dirs = KGlobal::dirs(); // Set up the emoticons which explain what the graphics elements in chat are pixmap.load( dirs->findResource( "emoticons", emoticonDir + "/teeth.png" ) ); @@ -93,7 +93,7 @@ ChatStylePage::ChatStylePage( QWidget *parent ) // Insert a KHTMLPart in the placeholder chatMessageView_ = new ChatMessageView( styleTab_, this ); - + // Create a layout to maximize the KHTMLPart QBoxLayout *layout = new QHBoxLayout( khtmlPlaceholder_ ); layout->addWidget( chatMessageView_->view() ); @@ -114,18 +114,18 @@ ChatStylePage::~ChatStylePage() void ChatStylePage::loadStyleList() { // Save the current choice to apply it again, after the list has been reloaded - const QString& text( chatStyle_->currentText() ); + const QString text( chatStyle_->currentText() ); // Remove any previous items, in case they're in chatStyle_->clear(); // Get all available chat styles for the "chatting" widget, avoiding duplicate entries - const QStringList& stylesDirectories( KGlobal::dirs()->findDirs( "data", "kmess/styles" ) ); + const QStringList stylesDirectories( KGlobal::dirs()->findDirs( "data", "kmess/styles" ) ); foreach( const QString &dir, stylesDirectories ) { const QDir styleDir( dir ); - const QStringList& styles( styleDir.entryList( QDir::Dirs, QDir::Name | QDir::IgnoreCase ) ); + const QStringList styles( styleDir.entryList( QDir::Dirs, QDir::Name | QDir::IgnoreCase ) ); foreach( const QString &styleName, styles ) { diff --git a/src/settings/emoticonspage.cpp b/src/settings/emoticonspage.cpp index eb641fa..275f7e3 100644 --- a/src/settings/emoticonspage.cpp +++ b/src/settings/emoticonspage.cpp @@ -204,7 +204,7 @@ void EmoticonsPage::removeCustomEmoticon() // Remove the emoticon from the temporary theme, and if that succeeds, from the list int itemRow = customEmoticonsView_->row( item ); - + previewMovie_->stop(); previewLabel_->setMovie( 0 ); @@ -334,7 +334,7 @@ void EmoticonsPage::updateThemesList() emoticonThemesList_->clear(); // Browse all emoticon dirs, to get all emoticons - const QStringList& themesDirs( KGlobal::dirs()->findDirs("emoticons", "") ); + const QStringList themesDirs( KGlobal::dirs()->findDirs("emoticons", "") ); #ifdef KMESSDEBUG_EMOTICONS_SETTINGS kDebug() << "Theme dirs: " << themesDirs; @@ -347,7 +347,7 @@ void EmoticonsPage::updateThemesList() themesDir.setPath( themesPath ); // Grep all themes in current dir - const QStringList& themes( themesDir.entryList( QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::IgnoreCase ) ); + const QStringList themes( themesDir.entryList( QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::IgnoreCase ) ); foreach( const QString& themePath, themes ) { diff --git a/src/settings/globalsettingsdialog.cpp b/src/settings/globalsettingsdialog.cpp index 4514879..13feaf5 100644 --- a/src/settings/globalsettingsdialog.cpp +++ b/src/settings/globalsettingsdialog.cpp @@ -117,7 +117,7 @@ GlobalSettingsDialog* GlobalSettingsDialog::instance( QWidget *parent ) // Load the settings to all tabs void GlobalSettingsDialog::loadSettings() { - const KConfigGroup& group( KMessConfig::instance()->getGlobalConfig( "General" ) ); + const KConfigGroup group( KMessConfig::instance()->getGlobalConfig( "General" ) ); miscellaneousPage_->loadSettings( group ); } @@ -176,7 +176,7 @@ void GlobalSettingsDialog::slotButtonClicked( int button ) } // Schedule the dialog for deletion, to save memory - // if we've been hidden then "Ok" or "Close" has been chosen + // if we've been hidden then "Ok" or "Close" has been chosen // in which case we can delete ourselves. if ( ! isVisible() ) { diff --git a/src/utils/inlineeditlabel.cpp b/src/utils/inlineeditlabel.cpp index edf9c6d..79a876b 100644 --- a/src/utils/inlineeditlabel.cpp +++ b/src/utils/inlineeditlabel.cpp @@ -88,7 +88,7 @@ void InlineEditLabel::enableEditMode( bool editMode ) lineEdit_->hide(); // Update the label from the line edit text - const QString &text( lineEdit_->text() ); + const QString text( lineEdit_->text() ); // Do nothing when there are no changes to avoid unneeded updates if( text == text_.getOriginal() ) @@ -138,8 +138,8 @@ bool InlineEditLabel::eventFilter( QObject *obj, QEvent *event ) else if( maxLength_ > 0 ) { // Check that the size in bytes of the string is within the set limit - const QString &text( lineEdit_->text() ); - const QByteArray &stringData( text.toUtf8() ); + const QString text( lineEdit_->text() ); + const QByteArray stringData( text.toUtf8() ); if( stringData.length() > maxLength_ ) { lineEdit_->setText( KMessShared::fixStringToByteSize( text, maxLength_ ) ); diff --git a/src/utils/likeback/likebackbar.cpp b/src/utils/likeback/likebackbar.cpp index 67cc4f4..00c1506 100644 --- a/src/utils/likeback/likebackbar.cpp +++ b/src/utils/likeback/likebackbar.cpp @@ -84,7 +84,7 @@ void LikeBackBar::changeWindow( QWidget *oldWidget, QWidget *newWidget ) { // Do not change the window while exiting - the new widget may already have been deleted! KMessApplication *kmessApp = static_cast( kapp ); - if( kmessApp->quitSelected() ) + if( ! kmessApp || kmessApp->quitSelected() ) { newWidget = 0; } diff --git a/src/utils/likeback/likebackdialog.cpp b/src/utils/likeback/likebackdialog.cpp index 03f6bd2..5e60009 100644 --- a/src/utils/likeback/likebackdialog.cpp +++ b/src/utils/likeback/likebackdialog.cpp @@ -146,7 +146,7 @@ QString LikeBackDialog::introductionText() } else { - const QString &lastLocale( acceptedLocales.takeLast() ); + const QString lastLocale( acceptedLocales.takeLast() ); languagesMessage = i18nc( "Feedback dialog text, message with list of accepted languages " "for the comments", "Please, write it in %1 or %2, or the developers will not " diff --git a/src/utils/nowlisteningclient.cpp b/src/utils/nowlisteningclient.cpp index c869ea0..eff972a 100644 --- a/src/utils/nowlisteningclient.cpp +++ b/src/utils/nowlisteningclient.cpp @@ -25,10 +25,6 @@ #include -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT - #define KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL -#endif - // This code is loosely inspired by the "now listening" plugin of Kopete. // Therefore some parts are also @@ -117,10 +113,6 @@ void NowListeningClient::setEnabled( bool enable ) */ void NowListeningClient::slotUpdate() { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "Updating Now Playing status"; -#endif - // Detect changes to reduce signal calls. const QString prevArtist( artist_ ); const QString prevAlbum ( album_ ); @@ -131,17 +123,13 @@ void NowListeningClient::slotUpdate() playing_ = false; // Query all applications: the first found stops the search - if( queryAmarok1() - || queryMprisPlayers() + if( queryMprisPlayers() || queryJuk() - || queryKsCD() ) + || queryKsCD() + || queryAmarok1() ) { // Found active media player! -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "found song" << artist_ << "-" << track_ << "(extra info: album=" << album_ << ", playing=" << playing_ << ")"; -#endif - // App found and playing, detect change. // Check if player is playing ( and if the song was changed ) or if the player was stopped/paused // and now play again. @@ -151,18 +139,15 @@ void NowListeningClient::slotUpdate() || prevTrack != track_ ) ) || ( ! prevPlaying && playing_ ) ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "playing information changed, emitting changedSong()."; -#endif if( artist_.isEmpty() && album_.isEmpty() && track_.isEmpty() && playing_ == true ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "any informations about this song.."; -#endif emit changedSong( QString(), QString(), QString(), false ); } else { +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT + kDebug() << "Queried" << player_ << "and found new song: " << artist_ << "-" << track_ << "(extra info: album=" << album_ << ", playing=" << playing_ << "); emitting changedSong()"; +#endif emit changedSong( artist_, album_, track_, playing_ ); } } @@ -171,7 +156,7 @@ void NowListeningClient::slotUpdate() // Emit a signal when the player was stopped. if( prevPlaying && ! playing_ ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT kDebug() << "player was stopped, emitting changedSong()."; #endif emit changedSong( QString(), QString(), QString(), false ); @@ -221,6 +206,7 @@ bool NowListeningClient::queryAmarok1() proc.execute( 250 ); track_ = QString::fromUtf8( proc.readAllStandardOutput() ).simplified(); + player_ = "Amarok1"; proc.kill(); return true; } @@ -228,7 +214,7 @@ bool NowListeningClient::queryAmarok1() /** - * Query Amarok for track information. + * Query Players supporting MPRIS for track information. */ bool NowListeningClient::queryMprisPlayers() { @@ -236,7 +222,7 @@ bool NowListeningClient::queryMprisPlayers() // Connect and search all services that implent mpris specifications QStringList services; - const QDBusConnection& sessionConn( QDBusConnection::sessionBus() ); + const QDBusConnection sessionConn( QDBusConnection::sessionBus() ); // Check if the connection is successful if( sessionConn.isConnected() ) @@ -277,21 +263,18 @@ bool NowListeningClient::queryMprisPlayers() } else { - QDBusReply playerName = dbusMprisPlayer.call("Identity"); + // Identity is part of /, not /Player. + QDBusReply playerName = dbusMprisRoot.call("Identity"); player = playerName.value(); } -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "querying " << player << " for now listening information..."; -#endif - // query the MPRIS player to know what is currently playing. QDBusReply metadata = dbusMprisPlayer.call("GetMetadata"); - QDBusReply isPlaying = dbusMprisPlayer.call("GetStatus"); + QDBusReply isPlaying = dbusMprisPlayer.call("GetStatus"); if( ! isPlaying.isValid() || ! metadata.isValid() ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT kDebug() << "Invalid response from " << player << "!"; kDebug() << "GetStatus Error: " << isPlaying.error().message(); kDebug() << "GetMetadata Error: " << metadata.error().message(); @@ -302,13 +285,14 @@ bool NowListeningClient::queryMprisPlayers() } // Get the list of properties from the map - const QVariantMap& map( metadata.value() ); + const QVariantMap map( metadata.value() ); // Save the returned values album_ = map[ "album" ].toString(); track_ = map[ "title" ].toString(); artist_ = map[ "artist" ].toString(); playing_ = ( isPlaying.value().Status == 0 ); // 0 playing, 1 paused, 2 stopped + player_ = player; mutex_.unlock(); return true; @@ -333,7 +317,7 @@ bool NowListeningClient::queryKsCD() return false; } -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT kDebug() << "querying KsCD for now listening information..."; #endif @@ -345,7 +329,7 @@ bool NowListeningClient::queryKsCD() if( ! isPlaying.isValid() || ! album.isValid() || ! track.isValid() || ! artist.isValid() ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT kDebug() << "Invalid response from KsCD!"; #endif @@ -358,6 +342,7 @@ bool NowListeningClient::queryKsCD() track_ = track; artist_ = artist; playing_ = isPlaying; + player_ = "KsCD"; mutex_.unlock(); return true; @@ -382,11 +367,7 @@ bool NowListeningClient::queryJuk() return false; } -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL - kDebug() << "querying Juk for now listening information..."; -#endif - - // Call KsCD to know whether it's playing, and what + // Call Juk to know whether it's playing, and what const QDBusReply& album ( dbusJuk.call( QDBus::BlockWithGui, "trackProperty", "Album" ) ); const QDBusReply& track ( dbusJuk.call( QDBus::BlockWithGui, "trackProperty", "Title" ) ); const QDBusReply& artist( dbusJuk.call( QDBus::BlockWithGui, "trackProperty", "Artist" ) ); @@ -394,7 +375,7 @@ bool NowListeningClient::queryJuk() if( ! isPlaying.isValid() || ! album.isValid() || ! track.isValid() || ! artist.isValid() ) { -#ifdef KMESSDEBUG_NOWLISTENINGCLIENT_GENERAL +#ifdef KMESSDEBUG_NOWLISTENINGCLIENT kDebug() << "Invalid response from Juk!"; #endif @@ -407,6 +388,7 @@ bool NowListeningClient::queryJuk() track_ = track; artist_ = artist; playing_ = isPlaying; + player_ = "Juk"; mutex_.unlock(); return true; diff --git a/src/utils/nowlisteningclient.h b/src/utils/nowlisteningclient.h index d1bc60b..67b0700 100644 --- a/src/utils/nowlisteningclient.h +++ b/src/utils/nowlisteningclient.h @@ -89,6 +89,8 @@ class NowListeningClient : public QObject QString track_; // Mutex used to avoid multiple requests from being active at once QMutex mutex_; + // The name of the player + QString player_; signals: void changedSong( const QString &artist, const QString &album, const QString &track, bool playing ); diff --git a/src/utils/xautolock.cpp b/src/utils/xautolock.cpp index af10e85..186e7bd 100644 --- a/src/utils/xautolock.cpp +++ b/src/utils/xautolock.cpp @@ -73,6 +73,11 @@ XAutoLock::XAutoLock() #ifdef HAVE_XSCREENSAVER int dummy; mitAvailable_ = ( XScreenSaverQueryExtension( QX11Info::display(), &dummy, &dummy ) != 0 ); + + // when the screensaver (de)activates, update idle as appropriate. + QDBusConnection::sessionBus().connect( "org.freedesktop.ScreenSaver", "/ScreenSaver", + "org.freedesktop.ScreenSaver", "ActiveChanged", + this, SLOT( checkIdle() ) ); #endif } @@ -189,7 +194,7 @@ bool XAutoLock::isScreenSaverActive() #endif // Get on the bus - const QDBusConnection& dbus( QDBusConnection::sessionBus() ); + const QDBusConnection dbus( QDBusConnection::sessionBus() ); if( ! dbus.isConnected() ) { @@ -200,7 +205,7 @@ bool XAutoLock::isScreenSaverActive() } // Generate the message we'll send to the active Screen Saver service - const QDBusMessage& message( QDBusMessage::createMethodCall( "org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", "GetActive" ) ); + const QDBusMessage message( QDBusMessage::createMethodCall( "org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver", "GetActive" ) ); // Call the service and wait for it to answer const QDBusReply& reply( dbus.call( message ) ); diff --git a/src/utils/xmlfunctions.cpp b/src/utils/xmlfunctions.cpp index fb2286c..4c1da0b 100644 --- a/src/utils/xmlfunctions.cpp +++ b/src/utils/xmlfunctions.cpp @@ -32,8 +32,8 @@ QDomNode XmlFunctions::getNode( const QDomNode &rootNode, const QString &path ) KMESS_ASSERT( ! path.isEmpty() ); #endif - const QStringList& pathItems( path.split( "/", QString::SkipEmptyParts ) ); - QDomNode childNode( rootNode.namedItem( pathItems[0] ) ); // can be a null node + const QStringList pathItems( path.split( "/", QString::SkipEmptyParts ) ); + QDomNode childNode( rootNode.namedItem( pathItems[0] ) ); // can be a null node int i = 1; while( i < pathItems.count() ) @@ -93,7 +93,7 @@ QDomNode XmlFunctions::getNodeChildByKey( const QDomNodeList &childNodes, const return childNodes.item( i ); } } - + // Return a null node (is there a better way?) return childNodes.item( childNodes.count() ); }