Merge pull request #54 from Bombe/issue-1227
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 20 Mar 2014 21:44:55 +0000 (22:44 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 20 Mar 2014 21:44:55 +0000 (22:44 +0100)
Only create the regular expression for content/sender matches once.

131 files changed:
.gitattributes
.travis.yml
3rdparty/miniz/miniz.c [new file with mode: 0644]
CMakeLists.txt
ChangeLog
cmake/COPYING-CMAKE-SCRIPTS [moved from cmake/modules/COPYING-CMAKE-SCRIPTS with 87% similarity]
cmake/FindDBusMenuQt.cmake [new file with mode: 0644]
cmake/FindExecInfo.cmake [moved from cmake/modules/FindExecInfo.cmake with 100% similarity]
cmake/FindLibraryWithDebug.cmake [moved from cmake/modules/FindLibraryWithDebug.cmake with 100% similarity]
cmake/FindLibsnore.cmake [moved from cmake/modules/FindLibsnore.cmake with 72% similarity]
cmake/FindPhonon.cmake [new file with mode: 0644]
cmake/FindQCA2.cmake [moved from cmake/modules/FindQCA2.cmake with 53% similarity]
cmake/GetGitRevisionDescription.cmake [new file with mode: 0644]
cmake/GetGitRevisionDescription.cmake.in [new file with mode: 0644]
cmake/QuasselCompileSettings.cmake [new file with mode: 0644]
cmake/QuasselMacros.cmake [new file with mode: 0644]
cmake/README [new file with mode: 0644]
cmake/modules/FindDBusMenuQt.cmake [deleted file]
cmake/modules/FindOpenSSL.cmake [deleted file]
cmake/modules/FindPhonon.cmake [deleted file]
cmake/modules/FindPkgConfig.cmake [deleted file]
cmake/modules/QuasselMacros.cmake [deleted file]
cmake/modules/README [deleted file]
data/scripts/inxi
po/LINGUAS
po/cs.po
po/da.po
po/de.po
po/el.po
po/en_GB.po
po/en_US.po
po/eo.po
po/es.po
po/fi.po
po/fr.po
po/gl.po
po/hi.po
po/hu.po
po/it.po
po/ja.po
po/ko.po
po/lt.po
po/mr.po
po/nb.po
po/nl.po
po/oc.po
po/pa.po
po/pl.po
po/pt.po
po/pt_BR.po
po/pull-from-transifex.sh
po/quassel.pot
po/ro.po
po/ru.po
po/sl.po
po/sq.po
po/sr.po
po/sv.po
po/tr.po
po/uk.po
po/zh_CN.po
po/zh_TW.po [new file with mode: 0644]
src/CMakeLists.txt
src/client/CMakeLists.txt
src/client/abstractui.cpp [deleted file]
src/client/clientauthhandler.cpp
src/client/clientauthhandler.h
src/client/coreconnection.cpp
src/client/networkmodel.cpp
src/client/networkmodel.h
src/common/CMakeLists.txt
src/common/bufferviewconfig.cpp
src/common/bufferviewconfig.h
src/common/compressor.cpp [new file with mode: 0644]
src/common/compressor.h [moved from src/client/clientcoreinfo.cpp with 52% similarity]
src/common/coreinfo.cpp [deleted file]
src/common/genversion.cpp [deleted file]
src/common/identity.h
src/common/ircchannel.h
src/common/ircuser.h
src/common/logbacktrace_unix.cpp
src/common/main.cpp
src/common/network.cpp
src/common/network.h
src/common/peerfactory.cpp
src/common/peerfactory.h
src/common/protocol.h
src/common/protocols/datastream/datastreampeer.cpp [new file with mode: 0644]
src/common/protocols/datastream/datastreampeer.h [new file with mode: 0644]
src/common/protocols/legacy/legacypeer.cpp
src/common/protocols/legacy/legacypeer.h
src/common/quassel.cpp
src/common/quassel.h
src/common/remotepeer.cpp
src/common/remotepeer.h
src/core/CMakeLists.txt
src/core/coreauthhandler.cpp
src/core/corenetwork.cpp
src/qtui/CMakeLists.txt
src/qtui/aboutdlg.cpp
src/qtui/chatmonitorfilter.cpp
src/qtui/chatmonitorfilter.h
src/qtui/chatscene.cpp
src/qtui/chatscene.h
src/qtui/columnhandleitem.cpp
src/qtui/inputwidget.cpp
src/qtui/inputwidget.h
src/qtui/settingspages/bufferviewsettingspage.cpp
src/qtui/settingspages/bufferviewsettingspage.ui
src/qtui/settingspages/chatmonitorsettingspage.cpp
src/qtui/settingspages/chatmonitorsettingspage.ui
src/qtui/settingspages/highlightsettingspage.h
src/qtui/settingspages/inputwidgetsettingspage.ui
src/qtui/settingspages/networkssettingspage.cpp
src/qtui/settingspages/previewbufferview.cpp [deleted file]
src/qtui/settingspages/servereditdlg.ui
src/qtui/settingspages/settingspages.cmake
src/qtui/snorenotificationbackend.cpp
src/qtui/snorenotificationbackend.h
src/qtui/topicwidget.cpp
src/qtui/ui/aboutdlg.ui
src/qtui/webpreviewitem.cpp
src/uisupport/CMakeLists.txt
src/uisupport/abstractnotificationbackend.cpp [deleted file]
src/uisupport/bufferviewfilter.cpp
src/uisupport/clickable.cpp
src/uisupport/multilineedit.cpp
src/uisupport/multilineedit.h
src/uisupport/uistyle.cpp
version.h.in [new file with mode: 0644]
version.inc [deleted file]

index 3e05b82..d1af528 100644 (file)
@@ -1,2 +1,2 @@
-version.inc    export-subst
+version.h.in           export-subst
 icons/oxygen_quassel   export-ignore
index b9640d9..3eac5a5 100644 (file)
@@ -2,5 +2,10 @@ language: cpp
 compiler:
   - gcc
   - clang
-# Change this to your needs
+
+before_install:
+ - echo "yes" | sudo add-apt-repository ppa:kalakris/cmake
+ - sudo apt-get update -qq
+ - sudo apt-get install cmake
+
 script: mkdir build && cd build && cmake ../ && make
diff --git a/3rdparty/miniz/miniz.c b/3rdparty/miniz/miniz.c
new file mode 100644 (file)
index 0000000..ee0ac99
--- /dev/null
@@ -0,0 +1,4916 @@
+/* miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing\r
+   See "unlicense" statement at the end of this file.\r
+   Rich Geldreich <richgel99@gmail.com>, last updated Oct. 13, 2013\r
+   Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt\r
+\r
+   Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define\r
+   MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros).\r
+\r
+   * Change History\r
+     10/13/13 v1.15 r4 - Interim bugfix release while I work on the next major release with Zip64 support (almost there!):\r
+       - Critical fix for the MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY bug (thanks kahmyong.moon@hp.com) which could cause locate files to not find files. This bug\r
+        would only have occured in earlier versions if you explicitly used this flag, OR if you used mz_zip_extract_archive_file_to_heap() or mz_zip_add_mem_to_archive_file_in_place()\r
+        (which used this flag). If you can't switch to v1.15 but want to fix this bug, just remove the uses of this flag from both helper funcs (and of course don't use the flag).\r
+       - Bugfix in mz_zip_reader_extract_to_mem_no_alloc() from kymoon when pUser_read_buf is not NULL and compressed size is > uncompressed size\r
+       - Fixing mz_zip_reader_extract_*() funcs so they don't try to extract compressed data from directory entries, to account for weird zipfiles which contain zero-size compressed data on dir entries.\r
+         Hopefully this fix won't cause any issues on weird zip archives, because it assumes the low 16-bits of zip external attributes are DOS attributes (which I believe they always are in practice).\r
+       - Fixing mz_zip_reader_is_file_a_directory() so it doesn't check the internal attributes, just the filename and external attributes\r
+       - mz_zip_reader_init_file() - missing MZ_FCLOSE() call if the seek failed\r
+       - Added cmake support for Linux builds which builds all the examples, tested with clang v3.3 and gcc v4.6.\r
+       - Clang fix for tdefl_write_image_to_png_file_in_memory() from toffaletti\r
+       - Merged MZ_FORCEINLINE fix from hdeanclark\r
+       - Fix <time.h> include before config #ifdef, thanks emil.brink\r
+       - Added tdefl_write_image_to_png_file_in_memory_ex(): supports Y flipping (super useful for OpenGL apps), and explicit control over the compression level (so you can\r
+        set it to 1 for real-time compression).\r
+       - Merged in some compiler fixes from paulharris's github repro.\r
+       - Retested this build under Windows (VS 2010, including static analysis), tcc  0.9.26, gcc v4.6 and clang v3.3.\r
+       - Added example6.c, which dumps an image of the mandelbrot set to a PNG file.\r
+       - Modified example2 to help test the MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY flag more.\r
+       - In r3: Bugfix to mz_zip_writer_add_file() found during merge: Fix possible src file fclose() leak if alignment bytes+local header file write faiiled\r
+       - In r4: Minor bugfix to mz_zip_writer_add_from_zip_reader(): Was pushing the wrong central dir header offset, appears harmless in this release, but it became a problem in the zip64 branch\r
+     5/20/12 v1.14 - MinGW32/64 GCC 4.6.1 compiler fixes: added MZ_FORCEINLINE, #include <time.h> (thanks fermtect).\r
+     5/19/12 v1.13 - From jason@cornsyrup.org and kelwert@mtu.edu - Fix mz_crc32() so it doesn't compute the wrong CRC-32's when mz_ulong is 64-bit.\r
+       - Temporarily/locally slammed in "typedef unsigned long mz_ulong" and re-ran a randomized regression test on ~500k files.\r
+       - Eliminated a bunch of warnings when compiling with GCC 32-bit/64.\r
+       - Ran all examples, miniz.c, and tinfl.c through MSVC 2008's /analyze (static analysis) option and fixed all warnings (except for the silly\r
+        "Use of the comma-operator in a tested expression.." analysis warning, which I purposely use to work around a MSVC compiler warning).\r
+       - Created 32-bit and 64-bit Codeblocks projects/workspace. Built and tested Linux executables. The codeblocks workspace is compatible with Linux+Win32/x64.\r
+       - Added miniz_tester solution/project, which is a useful little app derived from LZHAM's tester app that I use as part of the regression test.\r
+       - Ran miniz.c and tinfl.c through another series of regression testing on ~500,000 files and archives.\r
+       - Modified example5.c so it purposely disables a bunch of high-level functionality (MINIZ_NO_STDIO, etc.). (Thanks to corysama for the MINIZ_NO_STDIO bug report.)\r
+       - Fix ftell() usage in examples so they exit with an error on files which are too large (a limitation of the examples, not miniz itself).\r
+     4/12/12 v1.12 - More comments, added low-level example5.c, fixed a couple minor level_and_flags issues in the archive API's.\r
+      level_and_flags can now be set to MZ_DEFAULT_COMPRESSION. Thanks to Bruce Dawson <bruced@valvesoftware.com> for the feedback/bug report.\r
+     5/28/11 v1.11 - Added statement from unlicense.org\r
+     5/27/11 v1.10 - Substantial compressor optimizations:\r
+      - Level 1 is now ~4x faster than before. The L1 compressor's throughput now varies between 70-110MB/sec. on a\r
+      - Core i7 (actual throughput varies depending on the type of data, and x64 vs. x86).\r
+      - Improved baseline L2-L9 compression perf. Also, greatly improved compression perf. issues on some file types.\r
+      - Refactored the compression code for better readability and maintainability.\r
+      - Added level 10 compression level (L10 has slightly better ratio than level 9, but could have a potentially large\r
+       drop in throughput on some files).\r
+     5/15/11 v1.09 - Initial stable release.\r
+\r
+   * Low-level Deflate/Inflate implementation notes:\r
+\r
+     Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or\r
+     greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses\r
+     approximately as well as zlib.\r
+\r
+     Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function\r
+     coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory\r
+     block large enough to hold the entire file.\r
+\r
+     The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation.\r
+\r
+   * zlib-style API notes:\r
+\r
+     miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in\r
+     zlib replacement in many apps:\r
+        The z_stream struct, optional memory allocation callbacks\r
+        deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound\r
+        inflateInit/inflateInit2/inflate/inflateEnd\r
+        compress, compress2, compressBound, uncompress\r
+        CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines.\r
+        Supports raw deflate streams or standard zlib streams with adler-32 checking.\r
+\r
+     Limitations:\r
+      The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries.\r
+      I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but\r
+      there are no guarantees that miniz.c pulls this off perfectly.\r
+\r
+   * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by\r
+     Alex Evans. Supports 1-4 bytes/pixel images.\r
+\r
+   * ZIP archive API notes:\r
+\r
+     The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to\r
+     get the job done with minimal fuss. There are simple API's to retrieve file information, read files from\r
+     existing archives, create new archives, append new files to existing archives, or clone archive data from\r
+     one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h),\r
+     or you can specify custom file read/write callbacks.\r
+\r
+     - Archive reading: Just call this function to read a single file from a disk archive:\r
+\r
+      void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name,\r
+        size_t *pSize, mz_uint zip_flags);\r
+\r
+     For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central\r
+     directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files.\r
+\r
+     - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file:\r
+\r
+     int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags);\r
+\r
+     The locate operation can optionally check file comments too, which (as one example) can be used to identify\r
+     multiple versions of the same file in an archive. This function uses a simple linear search through the central\r
+     directory, so it's not very fast.\r
+\r
+     Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and\r
+     retrieve detailed info on each file by calling mz_zip_reader_file_stat().\r
+\r
+     - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data\r
+     to disk and builds an exact image of the central directory in memory. The central directory image is written\r
+     all at once at the end of the archive file when the archive is finalized.\r
+\r
+     The archive writer can optionally align each file's local header and file data to any power of 2 alignment,\r
+     which can be useful when the archive will be read from optical media. Also, the writer supports placing\r
+     arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still\r
+     readable by any ZIP tool.\r
+\r
+     - Archive appending: The simple way to add a single file to an archive is to call this function:\r
+\r
+      mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name,\r
+        const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\r
+\r
+     The archive will be created if it doesn't already exist, otherwise it'll be appended to.\r
+     Note the appending is done in-place and is not an atomic operation, so if something goes wrong\r
+     during the operation it's possible the archive could be left without a central directory (although the local\r
+     file headers and file data will be fine, so the archive will be recoverable).\r
+\r
+     For more complex archive modification scenarios:\r
+     1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to\r
+     preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the\r
+     compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and\r
+     you're done. This is safe but requires a bunch of temporary disk space or heap memory.\r
+\r
+     2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(),\r
+     append new files as needed, then finalize the archive which will write an updated central directory to the\r
+     original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a\r
+     possibility that the archive's central directory could be lost with this method if anything goes wrong, though.\r
+\r
+     - ZIP archive support limitations:\r
+     No zip64 or spanning support. Extraction functions can only handle unencrypted, stored or deflated files.\r
+     Requires streams capable of seeking.\r
+\r
+   * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the\r
+     below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it.\r
+\r
+   * Important: For best perf. be sure to customize the below macros for your target platform:\r
+     #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1\r
+     #define MINIZ_LITTLE_ENDIAN 1\r
+     #define MINIZ_HAS_64BIT_REGISTERS 1\r
+\r
+   * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz\r
+     uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files\r
+     (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes).\r
+*/\r
+\r
+#ifndef MINIZ_HEADER_INCLUDED\r
+#define MINIZ_HEADER_INCLUDED\r
+\r
+#include <stdlib.h>\r
+\r
+// Defines to completely disable specific portions of miniz.c:\r
+// If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl.\r
+\r
+// Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O.\r
+#define MINIZ_NO_STDIO\r
+\r
+// If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or\r
+// get/set file times, and the C run-time funcs that get/set times won't be called.\r
+// The current downside is the times written to your archives will be from 1979.\r
+#define MINIZ_NO_TIME\r
+\r
+// Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's.\r
+#define MINIZ_NO_ARCHIVE_APIS\r
+\r
+// Define MINIZ_NO_ARCHIVE_APIS to disable all writing related ZIP archive API's.\r
+#define MINIZ_NO_ARCHIVE_WRITING_APIS\r
+\r
+// Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's.\r
+//#define MINIZ_NO_ZLIB_APIS\r
+\r
+// Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib.\r
+//#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES\r
+\r
+// Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc.\r
+// Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc\r
+// callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user\r
+// functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work.\r
+//#define MINIZ_NO_MALLOC\r
+\r
+#if defined(__TINYC__) && (defined(__linux) || defined(__linux__))\r
+  // TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux\r
+  #define MINIZ_NO_TIME\r
+#endif\r
+\r
+#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS)\r
+  #include <time.h>\r
+#endif\r
+\r
+#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__)\r
+// MINIZ_X86_OR_X64_CPU is only used to help set the below macros.\r
+#define MINIZ_X86_OR_X64_CPU 1\r
+#endif\r
+\r
+#if (__BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU\r
+// Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian.\r
+#define MINIZ_LITTLE_ENDIAN 1\r
+#endif\r
+\r
+#if MINIZ_X86_OR_X64_CPU\r
+// Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses.\r
+#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1\r
+#endif\r
+\r
+#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__)\r
+// Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions).\r
+#define MINIZ_HAS_64BIT_REGISTERS 1\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+// ------------------- zlib-style API Definitions.\r
+\r
+// For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits!\r
+typedef unsigned long mz_ulong;\r
+\r
+// mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC macro) to release a block allocated from the heap.\r
+void mz_free(void *p);\r
+\r
+#define MZ_ADLER32_INIT (1)\r
+// mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL.\r
+mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len);\r
+\r
+#define MZ_CRC32_INIT (0)\r
+// mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL.\r
+mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len);\r
+\r
+// Compression strategies.\r
+enum { MZ_DEFAULT_STRATEGY = 0, MZ_FILTERED = 1, MZ_HUFFMAN_ONLY = 2, MZ_RLE = 3, MZ_FIXED = 4 };\r
+\r
+// Method\r
+#define MZ_DEFLATED 8\r
+\r
+#ifndef MINIZ_NO_ZLIB_APIS\r
+\r
+// Heap allocation callbacks.\r
+// Note that mz_alloc_func parameter types purpsosely differ from zlib's: items/size is size_t, not unsigned long.\r
+typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size);\r
+typedef void (*mz_free_func)(void *opaque, void *address);\r
+typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size);\r
+\r
+#define MZ_VERSION          "9.1.15"\r
+#define MZ_VERNUM           0x91F0\r
+#define MZ_VER_MAJOR        9\r
+#define MZ_VER_MINOR        1\r
+#define MZ_VER_REVISION     15\r
+#define MZ_VER_SUBREVISION  0\r
+\r
+// Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer to the zlib docs).\r
+enum { MZ_NO_FLUSH = 0, MZ_PARTIAL_FLUSH = 1, MZ_SYNC_FLUSH = 2, MZ_FULL_FLUSH = 3, MZ_FINISH = 4, MZ_BLOCK = 5 };\r
+\r
+// Return status codes. MZ_PARAM_ERROR is non-standard.\r
+enum { MZ_OK = 0, MZ_STREAM_END = 1, MZ_NEED_DICT = 2, MZ_ERRNO = -1, MZ_STREAM_ERROR = -2, MZ_DATA_ERROR = -3, MZ_MEM_ERROR = -4, MZ_BUF_ERROR = -5, MZ_VERSION_ERROR = -6, MZ_PARAM_ERROR = -10000 };\r
+\r
+// Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL.\r
+enum { MZ_NO_COMPRESSION = 0, MZ_BEST_SPEED = 1, MZ_BEST_COMPRESSION = 9, MZ_UBER_COMPRESSION = 10, MZ_DEFAULT_LEVEL = 6, MZ_DEFAULT_COMPRESSION = -1 };\r
+\r
+// Window bits\r
+#define MZ_DEFAULT_WINDOW_BITS 15\r
+\r
+struct mz_internal_state;\r
+\r
+// Compression/decompression stream struct.\r
+typedef struct mz_stream_s\r
+{\r
+  const unsigned char *next_in;     // pointer to next byte to read\r
+  unsigned int avail_in;            // number of bytes available at next_in\r
+  mz_ulong total_in;                // total number of bytes consumed so far\r
+\r
+  unsigned char *next_out;          // pointer to next byte to write\r
+  unsigned int avail_out;           // number of bytes that can be written to next_out\r
+  mz_ulong total_out;               // total number of bytes produced so far\r
+\r
+  char *msg;                        // error msg (unused)\r
+  struct mz_internal_state *state;  // internal state, allocated by zalloc/zfree\r
+\r
+  mz_alloc_func zalloc;             // optional heap allocation function (defaults to malloc)\r
+  mz_free_func zfree;               // optional heap free function (defaults to free)\r
+  void *opaque;                     // heap alloc function user pointer\r
+\r
+  int data_type;                    // data_type (unused)\r
+  mz_ulong adler;                   // adler32 of the source or uncompressed data\r
+  mz_ulong reserved;                // not used\r
+} mz_stream;\r
+\r
+typedef mz_stream *mz_streamp;\r
+\r
+// Returns the version string of miniz.c.\r
+const char *mz_version(void);\r
+\r
+// mz_deflateInit() initializes a compressor with default options:\r
+// Parameters:\r
+//  pStream must point to an initialized mz_stream struct.\r
+//  level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION].\r
+//  level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio.\r
+//  (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are defined.)\r
+// Return values:\r
+//  MZ_OK on success.\r
+//  MZ_STREAM_ERROR if the stream is bogus.\r
+//  MZ_PARAM_ERROR if the input parameters are bogus.\r
+//  MZ_MEM_ERROR on out of memory.\r
+int mz_deflateInit(mz_streamp pStream, int level);\r
+\r
+// mz_deflateInit2() is like mz_deflate(), except with more control:\r
+// Additional parameters:\r
+//   method must be MZ_DEFLATED\r
+//   window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer)\r
+//   mem_level must be between [1, 9] (it's checked but ignored by miniz.c)\r
+int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy);\r
+\r
+// Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2().\r
+int mz_deflateReset(mz_streamp pStream);\r
+\r
+// mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible.\r
+// Parameters:\r
+//   pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members.\r
+//   flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH.\r
+// Return values:\r
+//   MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be written but the output buffer is full).\r
+//   MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the stream anymore.\r
+//   MZ_STREAM_ERROR if the stream is bogus.\r
+//   MZ_PARAM_ERROR if one of the parameters is invalid.\r
+//   MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the input buffer or free up some output space and try again.)\r
+int mz_deflate(mz_streamp pStream, int flush);\r
+\r
+// mz_deflateEnd() deinitializes a compressor:\r
+// Return values:\r
+//  MZ_OK on success.\r
+//  MZ_STREAM_ERROR if the stream is bogus.\r
+int mz_deflateEnd(mz_streamp pStream);\r
+\r
+// mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH.\r
+mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len);\r
+\r
+// Single-call compression functions mz_compress() and mz_compress2():\r
+// Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure.\r
+int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len);\r
+int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level);\r
+\r
+// mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress().\r
+mz_ulong mz_compressBound(mz_ulong source_len);\r
+\r
+// Initializes a decompressor.\r
+int mz_inflateInit(mz_streamp pStream);\r
+\r
+// mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not the stream has been wrapped with a zlib header/footer:\r
+// window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate).\r
+int mz_inflateInit2(mz_streamp pStream, int window_bits);\r
+\r
+// Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to the output as possible.\r
+// Parameters:\r
+//   pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members.\r
+//   flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH.\r
+//   On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to decompress the entire stream in a single call (this is slightly faster).\r
+//   MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that the output buffer is large enough to hold the rest of the decompressed data.\r
+// Return values:\r
+//   MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the output buffer is full.\r
+//   MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the adler-32 of the decompressed data has also been verified.\r
+//   MZ_STREAM_ERROR if the stream is bogus.\r
+//   MZ_DATA_ERROR if the deflate stream is invalid.\r
+//   MZ_PARAM_ERROR if one of the parameters is invalid.\r
+//   MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again\r
+//   with more input data, or with more room in the output buffer (except when using single call decompression, described above).\r
+int mz_inflate(mz_streamp pStream, int flush);\r
+\r
+// Deinitializes a decompressor.\r
+int mz_inflateEnd(mz_streamp pStream);\r
+\r
+// Single-call decompression.\r
+// Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure.\r
+int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len);\r
+\r
+// Returns a string description of the specified error code, or NULL if the error code is invalid.\r
+const char *mz_error(int err);\r
+\r
+// Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset of zlib that miniz.c supports.\r
+// Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project.\r
+#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES\r
+  typedef unsigned char Byte;\r
+  typedef unsigned int uInt;\r
+  typedef mz_ulong uLong;\r
+  typedef Byte Bytef;\r
+  typedef uInt uIntf;\r
+  typedef char charf;\r
+  typedef int intf;\r
+  typedef void *voidpf;\r
+  typedef uLong uLongf;\r
+  typedef void *voidp;\r
+  typedef void *const voidpc;\r
+  #define Z_NULL                0\r
+  #define Z_NO_FLUSH            MZ_NO_FLUSH\r
+  #define Z_PARTIAL_FLUSH       MZ_PARTIAL_FLUSH\r
+  #define Z_SYNC_FLUSH          MZ_SYNC_FLUSH\r
+  #define Z_FULL_FLUSH          MZ_FULL_FLUSH\r
+  #define Z_FINISH              MZ_FINISH\r
+  #define Z_BLOCK               MZ_BLOCK\r
+  #define Z_OK                  MZ_OK\r
+  #define Z_STREAM_END          MZ_STREAM_END\r
+  #define Z_NEED_DICT           MZ_NEED_DICT\r
+  #define Z_ERRNO               MZ_ERRNO\r
+  #define Z_STREAM_ERROR        MZ_STREAM_ERROR\r
+  #define Z_DATA_ERROR          MZ_DATA_ERROR\r
+  #define Z_MEM_ERROR           MZ_MEM_ERROR\r
+  #define Z_BUF_ERROR           MZ_BUF_ERROR\r
+  #define Z_VERSION_ERROR       MZ_VERSION_ERROR\r
+  #define Z_PARAM_ERROR         MZ_PARAM_ERROR\r
+  #define Z_NO_COMPRESSION      MZ_NO_COMPRESSION\r
+  #define Z_BEST_SPEED          MZ_BEST_SPEED\r
+  #define Z_BEST_COMPRESSION    MZ_BEST_COMPRESSION\r
+  #define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION\r
+  #define Z_DEFAULT_STRATEGY    MZ_DEFAULT_STRATEGY\r
+  #define Z_FILTERED            MZ_FILTERED\r
+  #define Z_HUFFMAN_ONLY        MZ_HUFFMAN_ONLY\r
+  #define Z_RLE                 MZ_RLE\r
+  #define Z_FIXED               MZ_FIXED\r
+  #define Z_DEFLATED            MZ_DEFLATED\r
+  #define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS\r
+  #define alloc_func            mz_alloc_func\r
+  #define free_func             mz_free_func\r
+  #define internal_state        mz_internal_state\r
+  #define z_stream              mz_stream\r
+  #define deflateInit           mz_deflateInit\r
+  #define deflateInit2          mz_deflateInit2\r
+  #define deflateReset          mz_deflateReset\r
+  #define deflate               mz_deflate\r
+  #define deflateEnd            mz_deflateEnd\r
+  #define deflateBound          mz_deflateBound\r
+  #define compress              mz_compress\r
+  #define compress2             mz_compress2\r
+  #define compressBound         mz_compressBound\r
+  #define inflateInit           mz_inflateInit\r
+  #define inflateInit2          mz_inflateInit2\r
+  #define inflate               mz_inflate\r
+  #define inflateEnd            mz_inflateEnd\r
+  #define uncompress            mz_uncompress\r
+  #define crc32                 mz_crc32\r
+  #define adler32               mz_adler32\r
+  #define MAX_WBITS             15\r
+  #define MAX_MEM_LEVEL         9\r
+  #define zError                mz_error\r
+  #define ZLIB_VERSION          MZ_VERSION\r
+  #define ZLIB_VERNUM           MZ_VERNUM\r
+  #define ZLIB_VER_MAJOR        MZ_VER_MAJOR\r
+  #define ZLIB_VER_MINOR        MZ_VER_MINOR\r
+  #define ZLIB_VER_REVISION     MZ_VER_REVISION\r
+  #define ZLIB_VER_SUBREVISION  MZ_VER_SUBREVISION\r
+  #define zlibVersion           mz_version\r
+  #define zlib_version          mz_version()\r
+#endif // #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES\r
+\r
+#endif // MINIZ_NO_ZLIB_APIS\r
+\r
+// ------------------- Types and macros\r
+\r
+typedef unsigned char mz_uint8;\r
+typedef signed short mz_int16;\r
+typedef unsigned short mz_uint16;\r
+typedef unsigned int mz_uint32;\r
+typedef unsigned int mz_uint;\r
+typedef long long mz_int64;\r
+typedef unsigned long long mz_uint64;\r
+typedef int mz_bool;\r
+\r
+#define MZ_FALSE (0)\r
+#define MZ_TRUE (1)\r
+\r
+// An attempt to work around MSVC's spammy "warning C4127: conditional expression is constant" message.\r
+#ifdef _MSC_VER\r
+   #define MZ_MACRO_END while (0, 0)\r
+#else\r
+   #define MZ_MACRO_END while (0)\r
+#endif\r
+\r
+// ------------------- ZIP archive reading/writing\r
+\r
+#ifndef MINIZ_NO_ARCHIVE_APIS\r
+\r
+enum\r
+{\r
+  MZ_ZIP_MAX_IO_BUF_SIZE = 64*1024,\r
+  MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 260,\r
+  MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 256\r
+};\r
+\r
+typedef struct\r
+{\r
+  mz_uint32 m_file_index;\r
+  mz_uint32 m_central_dir_ofs;\r
+  mz_uint16 m_version_made_by;\r
+  mz_uint16 m_version_needed;\r
+  mz_uint16 m_bit_flag;\r
+  mz_uint16 m_method;\r
+#ifndef MINIZ_NO_TIME\r
+  time_t m_time;\r
+#endif\r
+  mz_uint32 m_crc32;\r
+  mz_uint64 m_comp_size;\r
+  mz_uint64 m_uncomp_size;\r
+  mz_uint16 m_internal_attr;\r
+  mz_uint32 m_external_attr;\r
+  mz_uint64 m_local_header_ofs;\r
+  mz_uint32 m_comment_size;\r
+  char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE];\r
+  char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE];\r
+} mz_zip_archive_file_stat;\r
+\r
+typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n);\r
+typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n);\r
+\r
+struct mz_zip_internal_state_tag;\r
+typedef struct mz_zip_internal_state_tag mz_zip_internal_state;\r
+\r
+typedef enum\r
+{\r
+  MZ_ZIP_MODE_INVALID = 0,\r
+  MZ_ZIP_MODE_READING = 1,\r
+  MZ_ZIP_MODE_WRITING = 2,\r
+  MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3\r
+} mz_zip_mode;\r
+\r
+typedef struct mz_zip_archive_tag\r
+{\r
+  mz_uint64 m_archive_size;\r
+  mz_uint64 m_central_directory_file_ofs;\r
+  mz_uint m_total_files;\r
+  mz_zip_mode m_zip_mode;\r
+\r
+  mz_uint m_file_offset_alignment;\r
+\r
+  mz_alloc_func m_pAlloc;\r
+  mz_free_func m_pFree;\r
+  mz_realloc_func m_pRealloc;\r
+  void *m_pAlloc_opaque;\r
+\r
+  mz_file_read_func m_pRead;\r
+  mz_file_write_func m_pWrite;\r
+  void *m_pIO_opaque;\r
+\r
+  mz_zip_internal_state *m_pState;\r
+\r
+} mz_zip_archive;\r
+\r
+typedef enum\r
+{\r
+  MZ_ZIP_FLAG_CASE_SENSITIVE                = 0x0100,\r
+  MZ_ZIP_FLAG_IGNORE_PATH                   = 0x0200,\r
+  MZ_ZIP_FLAG_COMPRESSED_DATA               = 0x0400,\r
+  MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800\r
+} mz_zip_flags;\r
+\r
+// ZIP archive reading\r
+\r
+// Inits a ZIP archive reader.\r
+// These functions read and validate the archive's central directory.\r
+mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint32 flags);\r
+mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint32 flags);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags);\r
+#endif\r
+\r
+// Returns the total number of files in the archive.\r
+mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip);\r
+\r
+// Returns detailed information about an archive file entry.\r
+mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat);\r
+\r
+// Determines if an archive file entry is a directory entry.\r
+mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index);\r
+mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index);\r
+\r
+// Retrieves the filename of an archive file entry.\r
+// Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename.\r
+mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size);\r
+\r
+// Attempts to locates a file in the archive's central directory.\r
+// Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH\r
+// Returns -1 if the file cannot be found.\r
+int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags);\r
+\r
+// Extracts a archive file to a memory buffer using no memory allocation.\r
+mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size);\r
+mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size);\r
+\r
+// Extracts a archive file to a memory buffer.\r
+mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags);\r
+mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags);\r
+\r
+// Extracts a archive file to a dynamically allocated heap buffer.\r
+void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags);\r
+void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags);\r
+\r
+// Extracts a archive file using a callback function to output the file's data.\r
+mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags);\r
+mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+// Extracts a archive file to a disk file and sets its last accessed and modified times.\r
+// This function only extracts files, not archive directory records.\r
+mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags);\r
+mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags);\r
+#endif\r
+\r
+// Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used.\r
+mz_bool mz_zip_reader_end(mz_zip_archive *pZip);\r
+\r
+// ZIP archive writing\r
+\r
+#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\r
+\r
+// Inits a ZIP archive writer.\r
+mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size);\r
+mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning);\r
+#endif\r
+\r
+// Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an existing archive.\r
+// For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for writing. If the file can't be reopened, mz_zip_reader_end() will be called.\r
+// For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which defaults to realloc unless you've overridden it).\r
+// Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be NULL.\r
+// Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops or something goes wrong before\r
+// the archive is finalized the file's central directory will be hosed.\r
+mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename);\r
+\r
+// Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive.\r
+// To add a directory entry, call this method with an archive name ending in a forwardslash with empty buffer.\r
+// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION.\r
+mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags);\r
+mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+// Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the archive.\r
+// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION.\r
+mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\r
+#endif\r
+\r
+// Adds a file to an archive by fully cloning the data from another archive.\r
+// This function fully clones the source file's compressed data (no recompression), along with its full filename, extra data, and comment fields.\r
+mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint file_index);\r
+\r
+// Finalizes the archive by writing the central directory records followed by the end of central directory record.\r
+// After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end().\r
+// An archive must be manually finalized by calling this function for it to be valid.\r
+mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip);\r
+mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, size_t *pSize);\r
+\r
+// Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used.\r
+// Note for the archive to be valid, it must have been finalized before ending.\r
+mz_bool mz_zip_writer_end(mz_zip_archive *pZip);\r
+\r
+// Misc. high-level helper functions:\r
+\r
+// mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive.\r
+// level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION.\r
+mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\r
+\r
+// Reads a single file from an archive into a heap block.\r
+// Returns NULL on failure.\r
+void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint zip_flags);\r
+\r
+#endif // #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\r
+\r
+#endif // #ifndef MINIZ_NO_ARCHIVE_APIS\r
+\r
+// ------------------- Low-level Decompression API Definitions\r
+\r
+// Decompression flags used by tinfl_decompress().\r
+// TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream.\r
+// TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input.\r
+// TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB).\r
+// TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes.\r
+enum\r
+{\r
+  TINFL_FLAG_PARSE_ZLIB_HEADER = 1,\r
+  TINFL_FLAG_HAS_MORE_INPUT = 2,\r
+  TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4,\r
+  TINFL_FLAG_COMPUTE_ADLER32 = 8\r
+};\r
+\r
+// High level decompression functions:\r
+// tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc().\r
+// On entry:\r
+//  pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress.\r
+// On return:\r
+//  Function returns a pointer to the decompressed data, or NULL on failure.\r
+//  *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible data.\r
+//  The caller must call mz_free() on the returned block when it's no longer needed.\r
+void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);\r
+\r
+// tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory.\r
+// Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success.\r
+#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1))\r
+size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags);\r
+\r
+// tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided callback function will be called to flush the buffer.\r
+// Returns 1 on success or 0 on failure.\r
+typedef int (*tinfl_put_buf_func_ptr)(const void* pBuf, int len, void *pUser);\r
+int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\r
+\r
+struct tinfl_decompressor_tag; typedef struct tinfl_decompressor_tag tinfl_decompressor;\r
+\r
+// Max size of LZ dictionary.\r
+#define TINFL_LZ_DICT_SIZE 32768\r
+\r
+// Return status.\r
+typedef enum\r
+{\r
+  TINFL_STATUS_BAD_PARAM = -3,\r
+  TINFL_STATUS_ADLER32_MISMATCH = -2,\r
+  TINFL_STATUS_FAILED = -1,\r
+  TINFL_STATUS_DONE = 0,\r
+  TINFL_STATUS_NEEDS_MORE_INPUT = 1,\r
+  TINFL_STATUS_HAS_MORE_OUTPUT = 2\r
+} tinfl_status;\r
+\r
+// Initializes the decompressor to its initial state.\r
+#define tinfl_init(r) do { (r)->m_state = 0; } MZ_MACRO_END\r
+#define tinfl_get_adler32(r) (r)->m_check_adler32\r
+\r
+// Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability.\r
+// This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output.\r
+tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags);\r
+\r
+// Internal/private bits follow.\r
+enum\r
+{\r
+  TINFL_MAX_HUFF_TABLES = 3, TINFL_MAX_HUFF_SYMBOLS_0 = 288, TINFL_MAX_HUFF_SYMBOLS_1 = 32, TINFL_MAX_HUFF_SYMBOLS_2 = 19,\r
+  TINFL_FAST_LOOKUP_BITS = 10, TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS\r
+};\r
+\r
+typedef struct\r
+{\r
+  mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0];\r
+  mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2];\r
+} tinfl_huff_table;\r
+\r
+#if MINIZ_HAS_64BIT_REGISTERS\r
+  #define TINFL_USE_64BIT_BITBUF 1\r
+#endif\r
+\r
+#if TINFL_USE_64BIT_BITBUF\r
+  typedef mz_uint64 tinfl_bit_buf_t;\r
+  #define TINFL_BITBUF_SIZE (64)\r
+#else\r
+  typedef mz_uint32 tinfl_bit_buf_t;\r
+  #define TINFL_BITBUF_SIZE (32)\r
+#endif\r
+\r
+struct tinfl_decompressor_tag\r
+{\r
+  mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES];\r
+  tinfl_bit_buf_t m_bit_buf;\r
+  size_t m_dist_from_out_buf_start;\r
+  tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES];\r
+  mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137];\r
+};\r
+\r
+// ------------------- Low-level Compression API Definitions\r
+\r
+// Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be output more frequently).\r
+#define TDEFL_LESS_MEMORY 0\r
+\r
+// tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary search):\r
+// TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression).\r
+enum\r
+{\r
+  TDEFL_HUFFMAN_ONLY = 0, TDEFL_DEFAULT_MAX_PROBES = 128, TDEFL_MAX_PROBES_MASK = 0xFFF\r
+};\r
+\r
+// TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of the source data at the end. Otherwise, you'll get raw deflate data.\r
+// TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers).\r
+// TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing.\r
+// TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the output may vary from run to run given the same input (depending on the contents of memory).\r
+// TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1)\r
+// TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled.\r
+// TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables.\r
+// TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks.\r
+// The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK).\r
+enum\r
+{\r
+  TDEFL_WRITE_ZLIB_HEADER             = 0x01000,\r
+  TDEFL_COMPUTE_ADLER32               = 0x02000,\r
+  TDEFL_GREEDY_PARSING_FLAG           = 0x04000,\r
+  TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000,\r
+  TDEFL_RLE_MATCHES                   = 0x10000,\r
+  TDEFL_FILTER_MATCHES                = 0x20000,\r
+  TDEFL_FORCE_ALL_STATIC_BLOCKS       = 0x40000,\r
+  TDEFL_FORCE_ALL_RAW_BLOCKS          = 0x80000\r
+};\r
+\r
+// High level compression functions:\r
+// tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc().\r
+// On entry:\r
+//  pSrc_buf, src_buf_len: Pointer and size of source block to compress.\r
+//  flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower but improve compression.\r
+// On return:\r
+//  Function returns a pointer to the compressed data, or NULL on failure.\r
+//  *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data.\r
+//  The caller must free() the returned block when it's no longer needed.\r
+void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);\r
+\r
+// tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory.\r
+// Returns 0 on failure.\r
+size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags);\r
+\r
+// Compresses an image to a compressed PNG file in memory.\r
+// On entry:\r
+//  pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. \r
+//  The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in memory.\r
+//  level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL\r
+//  If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps).\r
+// On return:\r
+//  Function returns a pointer to the compressed data, or NULL on failure.\r
+//  *pLen_out will be set to the size of the PNG image file.\r
+//  The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no longer needed.\r
+void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip);\r
+void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out);\r
+\r
+// Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time.\r
+typedef mz_bool (*tdefl_put_buf_func_ptr)(const void* pBuf, int len, void *pUser);\r
+\r
+// tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function internally.\r
+mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\r
+\r
+enum { TDEFL_MAX_HUFF_TABLES = 3, TDEFL_MAX_HUFF_SYMBOLS_0 = 288, TDEFL_MAX_HUFF_SYMBOLS_1 = 32, TDEFL_MAX_HUFF_SYMBOLS_2 = 19, TDEFL_LZ_DICT_SIZE = 32768, TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1, TDEFL_MIN_MATCH_LEN = 3, TDEFL_MAX_MATCH_LEN = 258 };\r
+\r
+// TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman codes).\r
+#if TDEFL_LESS_MEMORY\r
+enum { TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024, TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13 ) / 10, TDEFL_MAX_HUFF_SYMBOLS = 288, TDEFL_LZ_HASH_BITS = 12, TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS };\r
+#else\r
+enum { TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024, TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13 ) / 10, TDEFL_MAX_HUFF_SYMBOLS = 288, TDEFL_LZ_HASH_BITS = 15, TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS };\r
+#endif\r
+\r
+// The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The low-level functions don't make any heap allocations, unlike the above helper functions.\r
+typedef enum\r
+{\r
+  TDEFL_STATUS_BAD_PARAM = -2,\r
+  TDEFL_STATUS_PUT_BUF_FAILED = -1,\r
+  TDEFL_STATUS_OKAY = 0,\r
+  TDEFL_STATUS_DONE = 1,\r
+} tdefl_status;\r
+\r
+// Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums\r
+typedef enum\r
+{\r
+  TDEFL_NO_FLUSH = 0,\r
+  TDEFL_SYNC_FLUSH = 2,\r
+  TDEFL_FULL_FLUSH = 3,\r
+  TDEFL_FINISH = 4\r
+} tdefl_flush;\r
+\r
+// tdefl's compression state structure.\r
+typedef struct\r
+{\r
+  tdefl_put_buf_func_ptr m_pPut_buf_func;\r
+  void *m_pPut_buf_user;\r
+  mz_uint m_flags, m_max_probes[2];\r
+  int m_greedy_parsing;\r
+  mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size;\r
+  mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end;\r
+  mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer;\r
+  mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, m_wants_to_finish;\r
+  tdefl_status m_prev_return_status;\r
+  const void *m_pIn_buf;\r
+  void *m_pOut_buf;\r
+  size_t *m_pIn_buf_size, *m_pOut_buf_size;\r
+  tdefl_flush m_flush;\r
+  const mz_uint8 *m_pSrc;\r
+  size_t m_src_buf_left, m_out_buf_ofs;\r
+  mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE + TDEFL_MAX_MATCH_LEN - 1];\r
+  mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\r
+  mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\r
+  mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\r
+  mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE];\r
+  mz_uint16 m_next[TDEFL_LZ_DICT_SIZE];\r
+  mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE];\r
+  mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE];\r
+} tdefl_compressor;\r
+\r
+// Initializes the compressor.\r
+// There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory.\r
+// pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call the tdefl_compress_buffer() API for compression.\r
+// If pBut_buf_func is NULL the user should always call the tdefl_compress() API.\r
+// flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.)\r
+tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\r
+\r
+// Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much compressed data to the specified output buffer as possible.\r
+tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush);\r
+\r
+// tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr.\r
+// tdefl_compress_buffer() always consumes the entire input buffer.\r
+tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush);\r
+\r
+tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d);\r
+mz_uint32 tdefl_get_adler32(tdefl_compressor *d);\r
+\r
+// Can't use tdefl_create_comp_flags_from_zip_params if MINIZ_NO_ZLIB_APIS isn't defined, because it uses some of its macros.\r
+#ifndef MINIZ_NO_ZLIB_APIS\r
+// Create tdefl_compress() flags given zlib-style compression parameters.\r
+// level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files)\r
+// window_bits may be -15 (raw deflate) or 15 (zlib)\r
+// strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED\r
+mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy);\r
+#endif // #ifndef MINIZ_NO_ZLIB_APIS\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // MINIZ_HEADER_INCLUDED\r
+\r
+// ------------------- End of Header: Implementation follows. (If you only want the header, define MINIZ_HEADER_FILE_ONLY.)\r
+\r
+#ifndef MINIZ_HEADER_FILE_ONLY\r
+\r
+typedef unsigned char mz_validate_uint16[sizeof(mz_uint16)==2 ? 1 : -1];\r
+typedef unsigned char mz_validate_uint32[sizeof(mz_uint32)==4 ? 1 : -1];\r
+typedef unsigned char mz_validate_uint64[sizeof(mz_uint64)==8 ? 1 : -1];\r
+\r
+#include <string.h>\r
+#include <assert.h>\r
+\r
+#define MZ_ASSERT(x) assert(x)\r
+\r
+#ifdef MINIZ_NO_MALLOC\r
+  #define MZ_MALLOC(x) NULL\r
+  #define MZ_FREE(x) (void)x, ((void)0)\r
+  #define MZ_REALLOC(p, x) NULL\r
+#else\r
+  #define MZ_MALLOC(x) malloc(x)\r
+  #define MZ_FREE(x) free(x)\r
+  #define MZ_REALLOC(p, x) realloc(p, x)\r
+#endif\r
+\r
+#define MZ_MAX(a,b) (((a)>(b))?(a):(b))\r
+#define MZ_MIN(a,b) (((a)<(b))?(a):(b))\r
+#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj))\r
+\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\r
+  #define MZ_READ_LE16(p) *((const mz_uint16 *)(p))\r
+  #define MZ_READ_LE32(p) *((const mz_uint32 *)(p))\r
+#else\r
+  #define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U))\r
+  #define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))\r
+#endif\r
+\r
+#ifdef _MSC_VER\r
+  #define MZ_FORCEINLINE __forceinline\r
+#elif defined(__GNUC__)\r
+  #define MZ_FORCEINLINE inline __attribute__((__always_inline__))\r
+#else\r
+  #define MZ_FORCEINLINE inline\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+  extern "C" {\r
+#endif\r
+\r
+// ------------------- zlib-style API's\r
+\r
+mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len)\r
+{\r
+  mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16); size_t block_len = buf_len % 5552;\r
+  if (!ptr) return MZ_ADLER32_INIT;\r
+  while (buf_len) {\r
+    for (i = 0; i + 7 < block_len; i += 8, ptr += 8) {\r
+      s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1;\r
+      s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1;\r
+    }\r
+    for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1;\r
+    s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552;\r
+  }\r
+  return (s2 << 16) + s1;\r
+}\r
+\r
+// Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed": http://www.geocities.com/malbrain/\r
+mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len)\r
+{\r
+  static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,\r
+    0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c };\r
+  mz_uint32 crcu32 = (mz_uint32)crc;\r
+  if (!ptr) return MZ_CRC32_INIT;\r
+  crcu32 = ~crcu32; while (buf_len--) { mz_uint8 b = *ptr++; crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; }\r
+  return ~crcu32;\r
+}\r
+\r
+void mz_free(void *p)\r
+{\r
+  MZ_FREE(p);\r
+}\r
+\r
+#ifndef MINIZ_NO_ZLIB_APIS\r
+\r
+static void *def_alloc_func(void *opaque, size_t items, size_t size) { (void)opaque, (void)items, (void)size; return MZ_MALLOC(items * size); }\r
+static void def_free_func(void *opaque, void *address) { (void)opaque, (void)address; MZ_FREE(address); }\r
+static void *def_realloc_func(void *opaque, void *address, size_t items, size_t size) { (void)opaque, (void)address, (void)items, (void)size; return MZ_REALLOC(address, items * size); }\r
+\r
+const char *mz_version(void)\r
+{\r
+  return MZ_VERSION;\r
+}\r
+\r
+int mz_deflateInit(mz_streamp pStream, int level)\r
+{\r
+  return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY);\r
+}\r
+\r
+int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy)\r
+{\r
+  tdefl_compressor *pComp;\r
+  mz_uint comp_flags = TDEFL_COMPUTE_ADLER32 | tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy);\r
+\r
+  if (!pStream) return MZ_STREAM_ERROR;\r
+  if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS))) return MZ_PARAM_ERROR;\r
+\r
+  pStream->data_type = 0;\r
+  pStream->adler = MZ_ADLER32_INIT;\r
+  pStream->msg = NULL;\r
+  pStream->reserved = 0;\r
+  pStream->total_in = 0;\r
+  pStream->total_out = 0;\r
+  if (!pStream->zalloc) pStream->zalloc = def_alloc_func;\r
+  if (!pStream->zfree) pStream->zfree = def_free_func;\r
+\r
+  pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, sizeof(tdefl_compressor));\r
+  if (!pComp)\r
+    return MZ_MEM_ERROR;\r
+\r
+  pStream->state = (struct mz_internal_state *)pComp;\r
+\r
+  if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY)\r
+  {\r
+    mz_deflateEnd(pStream);\r
+    return MZ_PARAM_ERROR;\r
+  }\r
+\r
+  return MZ_OK;\r
+}\r
+\r
+int mz_deflateReset(mz_streamp pStream)\r
+{\r
+  if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || (!pStream->zfree)) return MZ_STREAM_ERROR;\r
+  pStream->total_in = pStream->total_out = 0;\r
+  tdefl_init((tdefl_compressor*)pStream->state, NULL, NULL, ((tdefl_compressor*)pStream->state)->m_flags);\r
+  return MZ_OK;\r
+}\r
+\r
+int mz_deflate(mz_streamp pStream, int flush)\r
+{\r
+  size_t in_bytes, out_bytes;\r
+  mz_ulong orig_total_in, orig_total_out;\r
+  int mz_status = MZ_OK;\r
+\r
+  if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || (!pStream->next_out)) return MZ_STREAM_ERROR;\r
+  if (!pStream->avail_out) return MZ_BUF_ERROR;\r
+\r
+  if (flush == MZ_PARTIAL_FLUSH) flush = MZ_SYNC_FLUSH;\r
+\r
+  if (((tdefl_compressor*)pStream->state)->m_prev_return_status == TDEFL_STATUS_DONE)\r
+    return (flush == MZ_FINISH) ? MZ_STREAM_END : MZ_BUF_ERROR;\r
+\r
+  orig_total_in = pStream->total_in; orig_total_out = pStream->total_out;\r
+  for ( ; ; )\r
+  {\r
+    tdefl_status defl_status;\r
+    in_bytes = pStream->avail_in; out_bytes = pStream->avail_out;\r
+\r
+    defl_status = tdefl_compress((tdefl_compressor*)pStream->state, pStream->next_in, &in_bytes, pStream->next_out, &out_bytes, (tdefl_flush)flush);\r
+    pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes;\r
+    pStream->total_in += (mz_uint)in_bytes; pStream->adler = tdefl_get_adler32((tdefl_compressor*)pStream->state);\r
+\r
+    pStream->next_out += (mz_uint)out_bytes; pStream->avail_out -= (mz_uint)out_bytes;\r
+    pStream->total_out += (mz_uint)out_bytes;\r
+\r
+    if (defl_status < 0)\r
+    {\r
+      mz_status = MZ_STREAM_ERROR;\r
+      break;\r
+    }\r
+    else if (defl_status == TDEFL_STATUS_DONE)\r
+    {\r
+      mz_status = MZ_STREAM_END;\r
+      break;\r
+    }\r
+    else if (!pStream->avail_out)\r
+      break;\r
+    else if ((!pStream->avail_in) && (flush != MZ_FINISH))\r
+    {\r
+      if ((flush) || (pStream->total_in != orig_total_in) || (pStream->total_out != orig_total_out))\r
+        break;\r
+      return MZ_BUF_ERROR; // Can't make forward progress without some input.\r
+    }\r
+  }\r
+  return mz_status;\r
+}\r
+\r
+int mz_deflateEnd(mz_streamp pStream)\r
+{\r
+  if (!pStream) return MZ_STREAM_ERROR;\r
+  if (pStream->state)\r
+  {\r
+    pStream->zfree(pStream->opaque, pStream->state);\r
+    pStream->state = NULL;\r
+  }\r
+  return MZ_OK;\r
+}\r
+\r
+mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len)\r
+{\r
+  (void)pStream;\r
+  // This is really over conservative. (And lame, but it's actually pretty tricky to compute a true upper bound given the way tdefl's blocking works.)\r
+  return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5);\r
+}\r
+\r
+int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level)\r
+{\r
+  int status;\r
+  mz_stream stream;\r
+  memset(&stream, 0, sizeof(stream));\r
+\r
+  // In case mz_ulong is 64-bits (argh I hate longs).\r
+  if ((source_len | *pDest_len) > 0xFFFFFFFFU) return MZ_PARAM_ERROR;\r
+\r
+  stream.next_in = pSource;\r
+  stream.avail_in = (mz_uint32)source_len;\r
+  stream.next_out = pDest;\r
+  stream.avail_out = (mz_uint32)*pDest_len;\r
+\r
+  status = mz_deflateInit(&stream, level);\r
+  if (status != MZ_OK) return status;\r
+\r
+  status = mz_deflate(&stream, MZ_FINISH);\r
+  if (status != MZ_STREAM_END)\r
+  {\r
+    mz_deflateEnd(&stream);\r
+    return (status == MZ_OK) ? MZ_BUF_ERROR : status;\r
+  }\r
+\r
+  *pDest_len = stream.total_out;\r
+  return mz_deflateEnd(&stream);\r
+}\r
+\r
+int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)\r
+{\r
+  return mz_compress2(pDest, pDest_len, pSource, source_len, MZ_DEFAULT_COMPRESSION);\r
+}\r
+\r
+mz_ulong mz_compressBound(mz_ulong source_len)\r
+{\r
+  return mz_deflateBound(NULL, source_len);\r
+}\r
+\r
+typedef struct\r
+{\r
+  tinfl_decompressor m_decomp;\r
+  mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; int m_window_bits;\r
+  mz_uint8 m_dict[TINFL_LZ_DICT_SIZE];\r
+  tinfl_status m_last_status;\r
+} inflate_state;\r
+\r
+int mz_inflateInit2(mz_streamp pStream, int window_bits)\r
+{\r
+  inflate_state *pDecomp;\r
+  if (!pStream) return MZ_STREAM_ERROR;\r
+  if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)) return MZ_PARAM_ERROR;\r
+\r
+  pStream->data_type = 0;\r
+  pStream->adler = 0;\r
+  pStream->msg = NULL;\r
+  pStream->total_in = 0;\r
+  pStream->total_out = 0;\r
+  pStream->reserved = 0;\r
+  if (!pStream->zalloc) pStream->zalloc = def_alloc_func;\r
+  if (!pStream->zfree) pStream->zfree = def_free_func;\r
+\r
+  pDecomp = (inflate_state*)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state));\r
+  if (!pDecomp) return MZ_MEM_ERROR;\r
+\r
+  pStream->state = (struct mz_internal_state *)pDecomp;\r
+\r
+  tinfl_init(&pDecomp->m_decomp);\r
+  pDecomp->m_dict_ofs = 0;\r
+  pDecomp->m_dict_avail = 0;\r
+  pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT;\r
+  pDecomp->m_first_call = 1;\r
+  pDecomp->m_has_flushed = 0;\r
+  pDecomp->m_window_bits = window_bits;\r
+\r
+  return MZ_OK;\r
+}\r
+\r
+int mz_inflateInit(mz_streamp pStream)\r
+{\r
+   return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS);\r
+}\r
+\r
+int mz_inflate(mz_streamp pStream, int flush)\r
+{\r
+  inflate_state* pState;\r
+  mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32;\r
+  size_t in_bytes, out_bytes, orig_avail_in;\r
+  tinfl_status status;\r
+\r
+  if ((!pStream) || (!pStream->state)) return MZ_STREAM_ERROR;\r
+  if (flush == MZ_PARTIAL_FLUSH) flush = MZ_SYNC_FLUSH;\r
+  if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) return MZ_STREAM_ERROR;\r
+\r
+  pState = (inflate_state*)pStream->state;\r
+  if (pState->m_window_bits > 0) decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER;\r
+  orig_avail_in = pStream->avail_in;\r
+\r
+  first_call = pState->m_first_call; pState->m_first_call = 0;\r
+  if (pState->m_last_status < 0) return MZ_DATA_ERROR;\r
+\r
+  if (pState->m_has_flushed && (flush != MZ_FINISH)) return MZ_STREAM_ERROR;\r
+  pState->m_has_flushed |= (flush == MZ_FINISH);\r
+\r
+  if ((flush == MZ_FINISH) && (first_call))\r
+  {\r
+    // MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file.\r
+    decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF;\r
+    in_bytes = pStream->avail_in; out_bytes = pStream->avail_out;\r
+    status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags);\r
+    pState->m_last_status = status;\r
+    pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes; pStream->total_in += (mz_uint)in_bytes;\r
+    pStream->adler = tinfl_get_adler32(&pState->m_decomp);\r
+    pStream->next_out += (mz_uint)out_bytes; pStream->avail_out -= (mz_uint)out_bytes; pStream->total_out += (mz_uint)out_bytes;\r
+\r
+    if (status < 0)\r
+      return MZ_DATA_ERROR;\r
+    else if (status != TINFL_STATUS_DONE)\r
+    {\r
+      pState->m_last_status = TINFL_STATUS_FAILED;\r
+      return MZ_BUF_ERROR;\r
+    }\r
+    return MZ_STREAM_END;\r
+  }\r
+  // flush != MZ_FINISH then we must assume there's more input.\r
+  if (flush != MZ_FINISH) decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT;\r
+\r
+  if (pState->m_dict_avail)\r
+  {\r
+    n = MZ_MIN(pState->m_dict_avail, pStream->avail_out);\r
+    memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n);\r
+    pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n;\r
+    pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1);\r
+    return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK;\r
+  }\r
+\r
+  for ( ; ; )\r
+  {\r
+    in_bytes = pStream->avail_in;\r
+    out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs;\r
+\r
+    status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags);\r
+    pState->m_last_status = status;\r
+\r
+    pStream->next_in += (mz_uint)in_bytes; pStream->avail_in -= (mz_uint)in_bytes;\r
+    pStream->total_in += (mz_uint)in_bytes; pStream->adler = tinfl_get_adler32(&pState->m_decomp);\r
+\r
+    pState->m_dict_avail = (mz_uint)out_bytes;\r
+\r
+    n = MZ_MIN(pState->m_dict_avail, pStream->avail_out);\r
+    memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n);\r
+    pStream->next_out += n; pStream->avail_out -= n; pStream->total_out += n;\r
+    pState->m_dict_avail -= n; pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1);\r
+\r
+    if (status < 0)\r
+       return MZ_DATA_ERROR; // Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well).\r
+    else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in))\r
+      return MZ_BUF_ERROR; // Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH.\r
+    else if (flush == MZ_FINISH)\r
+    {\r
+       // The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH.\r
+       if (status == TINFL_STATUS_DONE)\r
+          return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END;\r
+       // status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong.\r
+       else if (!pStream->avail_out)\r
+          return MZ_BUF_ERROR;\r
+    }\r
+    else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail))\r
+      break;\r
+  }\r
+\r
+  return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK;\r
+}\r
+\r
+int mz_inflateEnd(mz_streamp pStream)\r
+{\r
+  if (!pStream)\r
+    return MZ_STREAM_ERROR;\r
+  if (pStream->state)\r
+  {\r
+    pStream->zfree(pStream->opaque, pStream->state);\r
+    pStream->state = NULL;\r
+  }\r
+  return MZ_OK;\r
+}\r
+\r
+int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)\r
+{\r
+  mz_stream stream;\r
+  int status;\r
+  memset(&stream, 0, sizeof(stream));\r
+\r
+  // In case mz_ulong is 64-bits (argh I hate longs).\r
+  if ((source_len | *pDest_len) > 0xFFFFFFFFU) return MZ_PARAM_ERROR;\r
+\r
+  stream.next_in = pSource;\r
+  stream.avail_in = (mz_uint32)source_len;\r
+  stream.next_out = pDest;\r
+  stream.avail_out = (mz_uint32)*pDest_len;\r
+\r
+  status = mz_inflateInit(&stream);\r
+  if (status != MZ_OK)\r
+    return status;\r
+\r
+  status = mz_inflate(&stream, MZ_FINISH);\r
+  if (status != MZ_STREAM_END)\r
+  {\r
+    mz_inflateEnd(&stream);\r
+    return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR : status;\r
+  }\r
+  *pDest_len = stream.total_out;\r
+\r
+  return mz_inflateEnd(&stream);\r
+}\r
+\r
+const char *mz_error(int err)\r
+{\r
+  static struct { int m_err; const char *m_pDesc; } s_error_descs[] =\r
+  {\r
+    { MZ_OK, "" }, { MZ_STREAM_END, "stream end" }, { MZ_NEED_DICT, "need dictionary" }, { MZ_ERRNO, "file error" }, { MZ_STREAM_ERROR, "stream error" },\r
+    { MZ_DATA_ERROR, "data error" }, { MZ_MEM_ERROR, "out of memory" }, { MZ_BUF_ERROR, "buf error" }, { MZ_VERSION_ERROR, "version error" }, { MZ_PARAM_ERROR, "parameter error" }\r
+  };\r
+  mz_uint i; for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i) if (s_error_descs[i].m_err == err) return s_error_descs[i].m_pDesc;\r
+  return NULL;\r
+}\r
+\r
+#endif //MINIZ_NO_ZLIB_APIS\r
+\r
+// ------------------- Low-level Decompression (completely independent from all compression API's)\r
+\r
+#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l)\r
+#define TINFL_MEMSET(p, c, l) memset(p, c, l)\r
+\r
+#define TINFL_CR_BEGIN switch(r->m_state) { case 0:\r
+#define TINFL_CR_RETURN(state_index, result) do { status = result; r->m_state = state_index; goto common_exit; case state_index:; } MZ_MACRO_END\r
+#define TINFL_CR_RETURN_FOREVER(state_index, result) do { for ( ; ; ) { TINFL_CR_RETURN(state_index, result); } } MZ_MACRO_END\r
+#define TINFL_CR_FINISH }\r
+\r
+// TODO: If the caller has indicated that there's no more input, and we attempt to read beyond the input buf, then something is wrong with the input because the inflator never\r
+// reads ahead more than it needs to. Currently TINFL_GET_BYTE() pads the end of the stream with 0's in this scenario.\r
+#define TINFL_GET_BYTE(state_index, c) do { \\r
+  if (pIn_buf_cur >= pIn_buf_end) { \\r
+    for ( ; ; ) { \\r
+      if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) { \\r
+        TINFL_CR_RETURN(state_index, TINFL_STATUS_NEEDS_MORE_INPUT); \\r
+        if (pIn_buf_cur < pIn_buf_end) { \\r
+          c = *pIn_buf_cur++; \\r
+          break; \\r
+        } \\r
+      } else { \\r
+        c = 0; \\r
+        break; \\r
+      } \\r
+    } \\r
+  } else c = *pIn_buf_cur++; } MZ_MACRO_END\r
+\r
+#define TINFL_NEED_BITS(state_index, n) do { mz_uint c; TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; } while (num_bits < (mz_uint)(n))\r
+#define TINFL_SKIP_BITS(state_index, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END\r
+#define TINFL_GET_BITS(state_index, b, n) do { if (num_bits < (mz_uint)(n)) { TINFL_NEED_BITS(state_index, n); } b = bit_buf & ((1 << (n)) - 1); bit_buf >>= (n); num_bits -= (n); } MZ_MACRO_END\r
+\r
+// TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2.\r
+// It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a\r
+// Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the\r
+// bit buffer contains >=15 bits (deflate's max. Huffman code size).\r
+#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \\r
+  do { \\r
+    temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \\r
+    if (temp >= 0) { \\r
+      code_len = temp >> 9; \\r
+      if ((code_len) && (num_bits >= code_len)) \\r
+      break; \\r
+    } else if (num_bits > TINFL_FAST_LOOKUP_BITS) { \\r
+       code_len = TINFL_FAST_LOOKUP_BITS; \\r
+       do { \\r
+          temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \\r
+       } while ((temp < 0) && (num_bits >= (code_len + 1))); if (temp >= 0) break; \\r
+    } TINFL_GET_BYTE(state_index, c); bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); num_bits += 8; \\r
+  } while (num_bits < 15);\r
+\r
+// TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read\r
+// beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully\r
+// decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32.\r
+// The slow path is only executed at the very end of the input buffer.\r
+#define TINFL_HUFF_DECODE(state_index, sym, pHuff) do { \\r
+  int temp; mz_uint code_len, c; \\r
+  if (num_bits < 15) { \\r
+    if ((pIn_buf_end - pIn_buf_cur) < 2) { \\r
+       TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \\r
+    } else { \\r
+       bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); pIn_buf_cur += 2; num_bits += 16; \\r
+    } \\r
+  } \\r
+  if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \\r
+    code_len = temp >> 9, temp &= 511; \\r
+  else { \\r
+    code_len = TINFL_FAST_LOOKUP_BITS; do { temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; } while (temp < 0); \\r
+  } sym = temp; bit_buf >>= code_len; num_bits -= code_len; } MZ_MACRO_END\r
+\r
+tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags)\r
+{\r
+  static const int s_length_base[31] = { 3,4,5,6,7,8,9,10,11,13, 15,17,19,23,27,31,35,43,51,59, 67,83,99,115,131,163,195,227,258,0,0 };\r
+  static const int s_length_extra[31]= { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };\r
+  static const int s_dist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};\r
+  static const int s_dist_extra[32] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};\r
+  static const mz_uint8 s_length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };\r
+  static const int s_min_table_sizes[3] = { 257, 1, 4 };\r
+\r
+  tinfl_status status = TINFL_STATUS_FAILED; mz_uint32 num_bits, dist, counter, num_extra; tinfl_bit_buf_t bit_buf;\r
+  const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size;\r
+  mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size;\r
+  size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start;\r
+\r
+  // Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter).\r
+  if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) { *pIn_buf_size = *pOut_buf_size = 0; return TINFL_STATUS_BAD_PARAM; }\r
+\r
+  num_bits = r->m_num_bits; bit_buf = r->m_bit_buf; dist = r->m_dist; counter = r->m_counter; num_extra = r->m_num_extra; dist_from_out_buf_start = r->m_dist_from_out_buf_start;\r
+  TINFL_CR_BEGIN\r
+\r
+  bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; r->m_z_adler32 = r->m_check_adler32 = 1;\r
+  if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)\r
+  {\r
+    TINFL_GET_BYTE(1, r->m_zhdr0); TINFL_GET_BYTE(2, r->m_zhdr1);\r
+    counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8));\r
+    if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4)))));\r
+    if (counter) { TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); }\r
+  }\r
+\r
+  do\r
+  {\r
+    TINFL_GET_BITS(3, r->m_final, 3); r->m_type = r->m_final >> 1;\r
+    if (r->m_type == 0)\r
+    {\r
+      TINFL_SKIP_BITS(5, num_bits & 7);\r
+      for (counter = 0; counter < 4; ++counter) { if (num_bits) TINFL_GET_BITS(6, r->m_raw_header[counter], 8); else TINFL_GET_BYTE(7, r->m_raw_header[counter]); }\r
+      if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) { TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); }\r
+      while ((counter) && (num_bits))\r
+      {\r
+        TINFL_GET_BITS(51, dist, 8);\r
+        while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); }\r
+        *pOut_buf_cur++ = (mz_uint8)dist;\r
+        counter--;\r
+      }\r
+      while (counter)\r
+      {\r
+        size_t n; while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); }\r
+        while (pIn_buf_cur >= pIn_buf_end)\r
+        {\r
+          if (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT)\r
+          {\r
+            TINFL_CR_RETURN(38, TINFL_STATUS_NEEDS_MORE_INPUT);\r
+          }\r
+          else\r
+          {\r
+            TINFL_CR_RETURN_FOREVER(40, TINFL_STATUS_FAILED);\r
+          }\r
+        }\r
+        n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter);\r
+        TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); pIn_buf_cur += n; pOut_buf_cur += n; counter -= (mz_uint)n;\r
+      }\r
+    }\r
+    else if (r->m_type == 3)\r
+    {\r
+      TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED);\r
+    }\r
+    else\r
+    {\r
+      if (r->m_type == 1)\r
+      {\r
+        mz_uint8 *p = r->m_tables[0].m_code_size; mz_uint i;\r
+        r->m_table_sizes[0] = 288; r->m_table_sizes[1] = 32; TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32);\r
+        for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;\r
+      }\r
+      else\r
+      {\r
+        for (counter = 0; counter < 3; counter++) { TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); r->m_table_sizes[counter] += s_min_table_sizes[counter]; }\r
+        MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); for (counter = 0; counter < r->m_table_sizes[2]; counter++) { mz_uint s; TINFL_GET_BITS(14, s, 3); r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; }\r
+        r->m_table_sizes[2] = 19;\r
+      }\r
+      for ( ; (int)r->m_type >= 0; r->m_type--)\r
+      {\r
+        int tree_next, tree_cur; tinfl_huff_table *pTable;\r
+        mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; pTable = &r->m_tables[r->m_type]; MZ_CLEAR_OBJ(total_syms); MZ_CLEAR_OBJ(pTable->m_look_up); MZ_CLEAR_OBJ(pTable->m_tree);\r
+        for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) total_syms[pTable->m_code_size[i]]++;\r
+        used_syms = 0, total = 0; next_code[0] = next_code[1] = 0;\r
+        for (i = 1; i <= 15; ++i) { used_syms += total_syms[i]; next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); }\r
+        if ((65536 != total) && (used_syms > 1))\r
+        {\r
+          TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED);\r
+        }\r
+        for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index)\r
+        {\r
+          mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; if (!code_size) continue;\r
+          cur_code = next_code[code_size]++; for (l = code_size; l > 0; l--, cur_code >>= 1) rev_code = (rev_code << 1) | (cur_code & 1);\r
+          if (code_size <= TINFL_FAST_LOOKUP_BITS) { mz_int16 k = (mz_int16)((code_size << 9) | sym_index); while (rev_code < TINFL_FAST_LOOKUP_SIZE) { pTable->m_look_up[rev_code] = k; rev_code += (1 << code_size); } continue; }\r
+          if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) { pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; }\r
+          rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1);\r
+          for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--)\r
+          {\r
+            tree_cur -= ((rev_code >>= 1) & 1);\r
+            if (!pTable->m_tree[-tree_cur - 1]) { pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; tree_cur = tree_next; tree_next -= 2; } else tree_cur = pTable->m_tree[-tree_cur - 1];\r
+          }\r
+          tree_cur -= ((rev_code >>= 1) & 1); pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index;\r
+        }\r
+        if (r->m_type == 2)\r
+        {\r
+          for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]); )\r
+          {\r
+            mz_uint s; TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); if (dist < 16) { r->m_len_codes[counter++] = (mz_uint8)dist; continue; }\r
+            if ((dist == 16) && (!counter))\r
+            {\r
+              TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED);\r
+            }\r
+            num_extra = "\02\03\07"[dist - 16]; TINFL_GET_BITS(18, s, num_extra); s += "\03\03\013"[dist - 16];\r
+            TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); counter += s;\r
+          }\r
+          if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter)\r
+          {\r
+            TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED);\r
+          }\r
+          TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]);\r
+        }\r
+      }\r
+      for ( ; ; )\r
+      {\r
+        mz_uint8 *pSrc;\r
+        for ( ; ; )\r
+        {\r
+          if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2))\r
+          {\r
+            TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]);\r
+            if (counter >= 256)\r
+              break;\r
+            while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); }\r
+            *pOut_buf_cur++ = (mz_uint8)counter;\r
+          }\r
+          else\r
+          {\r
+            int sym2; mz_uint code_len;\r
+#if TINFL_USE_64BIT_BITBUF\r
+            if (num_bits < 30) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); pIn_buf_cur += 4; num_bits += 32; }\r
+#else\r
+            if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; }\r
+#endif\r
+            if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)\r
+              code_len = sym2 >> 9;\r
+            else\r
+            {\r
+              code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0);\r
+            }\r
+            counter = sym2; bit_buf >>= code_len; num_bits -= code_len;\r
+            if (counter & 256)\r
+              break;\r
+\r
+#if !TINFL_USE_64BIT_BITBUF\r
+            if (num_bits < 15) { bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); pIn_buf_cur += 2; num_bits += 16; }\r
+#endif\r
+            if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)\r
+              code_len = sym2 >> 9;\r
+            else\r
+            {\r
+              code_len = TINFL_FAST_LOOKUP_BITS; do { sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; } while (sym2 < 0);\r
+            }\r
+            bit_buf >>= code_len; num_bits -= code_len;\r
+\r
+            pOut_buf_cur[0] = (mz_uint8)counter;\r
+            if (sym2 & 256)\r
+            {\r
+              pOut_buf_cur++;\r
+              counter = sym2;\r
+              break;\r
+            }\r
+            pOut_buf_cur[1] = (mz_uint8)sym2;\r
+            pOut_buf_cur += 2;\r
+          }\r
+        }\r
+        if ((counter &= 511) == 256) break;\r
+\r
+        num_extra = s_length_extra[counter - 257]; counter = s_length_base[counter - 257];\r
+        if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(25, extra_bits, num_extra); counter += extra_bits; }\r
+\r
+        TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]);\r
+        num_extra = s_dist_extra[dist]; dist = s_dist_base[dist];\r
+        if (num_extra) { mz_uint extra_bits; TINFL_GET_BITS(27, extra_bits, num_extra); dist += extra_bits; }\r
+\r
+        dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start;\r
+        if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))\r
+        {\r
+          TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED);\r
+        }\r
+\r
+        pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask);\r
+\r
+        if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end)\r
+        {\r
+          while (counter--)\r
+          {\r
+            while (pOut_buf_cur >= pOut_buf_end) { TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); }\r
+            *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask];\r
+          }\r
+          continue;\r
+        }\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES\r
+        else if ((counter >= 9) && (counter <= dist))\r
+        {\r
+          const mz_uint8 *pSrc_end = pSrc + (counter & ~7);\r
+          do\r
+          {\r
+            ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0];\r
+            ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1];\r
+            pOut_buf_cur += 8;\r
+          } while ((pSrc += 8) < pSrc_end);\r
+          if ((counter &= 7) < 3)\r
+          {\r
+            if (counter)\r
+            {\r
+              pOut_buf_cur[0] = pSrc[0];\r
+              if (counter > 1)\r
+                pOut_buf_cur[1] = pSrc[1];\r
+              pOut_buf_cur += counter;\r
+            }\r
+            continue;\r
+          }\r
+        }\r
+#endif\r
+        do\r
+        {\r
+          pOut_buf_cur[0] = pSrc[0];\r
+          pOut_buf_cur[1] = pSrc[1];\r
+          pOut_buf_cur[2] = pSrc[2];\r
+          pOut_buf_cur += 3; pSrc += 3;\r
+        } while ((int)(counter -= 3) > 2);\r
+        if ((int)counter > 0)\r
+        {\r
+          pOut_buf_cur[0] = pSrc[0];\r
+          if ((int)counter > 1)\r
+            pOut_buf_cur[1] = pSrc[1];\r
+          pOut_buf_cur += counter;\r
+        }\r
+      }\r
+    }\r
+  } while (!(r->m_final & 1));\r
+  if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)\r
+  {\r
+    TINFL_SKIP_BITS(32, num_bits & 7); for (counter = 0; counter < 4; ++counter) { mz_uint s; if (num_bits) TINFL_GET_BITS(41, s, 8); else TINFL_GET_BYTE(42, s); r->m_z_adler32 = (r->m_z_adler32 << 8) | s; }\r
+  }\r
+  TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE);\r
+  TINFL_CR_FINISH\r
+\r
+common_exit:\r
+  r->m_num_bits = num_bits; r->m_bit_buf = bit_buf; r->m_dist = dist; r->m_counter = counter; r->m_num_extra = num_extra; r->m_dist_from_out_buf_start = dist_from_out_buf_start;\r
+  *pIn_buf_size = pIn_buf_cur - pIn_buf_next; *pOut_buf_size = pOut_buf_cur - pOut_buf_next;\r
+  if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0))\r
+  {\r
+    const mz_uint8 *ptr = pOut_buf_next; size_t buf_len = *pOut_buf_size;\r
+    mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; size_t block_len = buf_len % 5552;\r
+    while (buf_len)\r
+    {\r
+      for (i = 0; i + 7 < block_len; i += 8, ptr += 8)\r
+      {\r
+        s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1;\r
+        s1 += ptr[4], s2 += s1; s1 += ptr[5], s2 += s1; s1 += ptr[6], s2 += s1; s1 += ptr[7], s2 += s1;\r
+      }\r
+      for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1;\r
+      s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552;\r
+    }\r
+    r->m_check_adler32 = (s2 << 16) + s1; if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) status = TINFL_STATUS_ADLER32_MISMATCH;\r
+  }\r
+  return status;\r
+}\r
+\r
+// Higher level helper functions.\r
+void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)\r
+{\r
+  tinfl_decompressor decomp; void *pBuf = NULL, *pNew_buf; size_t src_buf_ofs = 0, out_buf_capacity = 0;\r
+  *pOut_len = 0;\r
+  tinfl_init(&decomp);\r
+  for ( ; ; )\r
+  {\r
+    size_t src_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity;\r
+    tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8*)pSrc_buf + src_buf_ofs, &src_buf_size, (mz_uint8*)pBuf, pBuf ? (mz_uint8*)pBuf + *pOut_len : NULL, &dst_buf_size,\r
+      (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);\r
+    if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT))\r
+    {\r
+      MZ_FREE(pBuf); *pOut_len = 0; return NULL;\r
+    }\r
+    src_buf_ofs += src_buf_size;\r
+    *pOut_len += dst_buf_size;\r
+    if (status == TINFL_STATUS_DONE) break;\r
+    new_out_buf_capacity = out_buf_capacity * 2; if (new_out_buf_capacity < 128) new_out_buf_capacity = 128;\r
+    pNew_buf = MZ_REALLOC(pBuf, new_out_buf_capacity);\r
+    if (!pNew_buf)\r
+    {\r
+      MZ_FREE(pBuf); *pOut_len = 0; return NULL;\r
+    }\r
+    pBuf = pNew_buf; out_buf_capacity = new_out_buf_capacity;\r
+  }\r
+  return pBuf;\r
+}\r
+\r
+size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)\r
+{\r
+  tinfl_decompressor decomp; tinfl_status status; tinfl_init(&decomp);\r
+  status = tinfl_decompress(&decomp, (const mz_uint8*)pSrc_buf, &src_buf_len, (mz_uint8*)pOut_buf, (mz_uint8*)pOut_buf, &out_buf_len, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);\r
+  return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED : out_buf_len;\r
+}\r
+\r
+int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\r
+{\r
+  int result = 0;\r
+  tinfl_decompressor decomp;\r
+  mz_uint8 *pDict = (mz_uint8*)MZ_MALLOC(TINFL_LZ_DICT_SIZE); size_t in_buf_ofs = 0, dict_ofs = 0;\r
+  if (!pDict)\r
+    return TINFL_STATUS_FAILED;\r
+  tinfl_init(&decomp);\r
+  for ( ; ; )\r
+  {\r
+    size_t in_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs;\r
+    tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8*)pIn_buf + in_buf_ofs, &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size,\r
+      (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)));\r
+    in_buf_ofs += in_buf_size;\r
+    if ((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user)))\r
+      break;\r
+    if (status != TINFL_STATUS_HAS_MORE_OUTPUT)\r
+    {\r
+      result = (status == TINFL_STATUS_DONE);\r
+      break;\r
+    }\r
+    dict_ofs = (dict_ofs + dst_buf_size) & (TINFL_LZ_DICT_SIZE - 1);\r
+  }\r
+  MZ_FREE(pDict);\r
+  *pIn_buf_size = in_buf_ofs;\r
+  return result;\r
+}\r
+\r
+// ------------------- Low-level Compression (independent from all decompression API's)\r
+\r
+// Purposely making these tables static for faster init and thread safety.\r
+static const mz_uint16 s_tdefl_len_sym[256] = {\r
+  257,258,259,260,261,262,263,264,265,265,266,266,267,267,268,268,269,269,269,269,270,270,270,270,271,271,271,271,272,272,272,272,\r
+  273,273,273,273,273,273,273,273,274,274,274,274,274,274,274,274,275,275,275,275,275,275,275,275,276,276,276,276,276,276,276,276,\r
+  277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,277,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,278,\r
+  279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,\r
+  281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,281,\r
+  282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,\r
+  283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,283,\r
+  284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,285 };\r
+\r
+static const mz_uint8 s_tdefl_len_extra[256] = {\r
+  0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,\r
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,\r
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,\r
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0 };\r
+\r
+static const mz_uint8 s_tdefl_small_dist_sym[512] = {\r
+  0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,\r
+  11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,\r
+  13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,\r
+  14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,\r
+  14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,\r
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,\r
+  16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\r
+  16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,\r
+  16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\r
+  17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\r
+  17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,\r
+  17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17 };\r
+\r
+static const mz_uint8 s_tdefl_small_dist_extra[512] = {\r
+  0,0,0,0,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,\r
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,\r
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,\r
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\r
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\r
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\r
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\r
+  7,7,7,7,7,7,7,7 };\r
+\r
+static const mz_uint8 s_tdefl_large_dist_sym[128] = {\r
+  0,0,18,19,20,20,21,21,22,22,22,22,23,23,23,23,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,\r
+  26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,\r
+  28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29 };\r
+\r
+static const mz_uint8 s_tdefl_large_dist_extra[128] = {\r
+  0,0,8,8,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,\r
+  12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,\r
+  13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 };\r
+\r
+// Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted values.\r
+typedef struct { mz_uint16 m_key, m_sym_index; } tdefl_sym_freq;\r
+static tdefl_sym_freq* tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq* pSyms0, tdefl_sym_freq* pSyms1)\r
+{\r
+  mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2]; tdefl_sym_freq* pCur_syms = pSyms0, *pNew_syms = pSyms1; MZ_CLEAR_OBJ(hist);\r
+  for (i = 0; i < num_syms; i++) { mz_uint freq = pSyms0[i].m_key; hist[freq & 0xFF]++; hist[256 + ((freq >> 8) & 0xFF)]++; }\r
+  while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) total_passes--;\r
+  for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8)\r
+  {\r
+    const mz_uint32* pHist = &hist[pass << 8];\r
+    mz_uint offsets[256], cur_ofs = 0;\r
+    for (i = 0; i < 256; i++) { offsets[i] = cur_ofs; cur_ofs += pHist[i]; }\r
+    for (i = 0; i < num_syms; i++) pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i];\r
+    { tdefl_sym_freq* t = pCur_syms; pCur_syms = pNew_syms; pNew_syms = t; }\r
+  }\r
+  return pCur_syms;\r
+}\r
+\r
+// tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996.\r
+static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n)\r
+{\r
+  int root, leaf, next, avbl, used, dpth;\r
+  if (n==0) return; else if (n==1) { A[0].m_key = 1; return; }\r
+  A[0].m_key += A[1].m_key; root = 0; leaf = 2;\r
+  for (next=1; next < n-1; next++)\r
+  {\r
+    if (leaf>=n || A[root].m_key<A[leaf].m_key) { A[next].m_key = A[root].m_key; A[root++].m_key = (mz_uint16)next; } else A[next].m_key = A[leaf++].m_key;\r
+    if (leaf>=n || (root<next && A[root].m_key<A[leaf].m_key)) { A[next].m_key = (mz_uint16)(A[next].m_key + A[root].m_key); A[root++].m_key = (mz_uint16)next; } else A[next].m_key = (mz_uint16)(A[next].m_key + A[leaf++].m_key);\r
+  }\r
+  A[n-2].m_key = 0; for (next=n-3; next>=0; next--) A[next].m_key = A[A[next].m_key].m_key+1;\r
+  avbl = 1; used = dpth = 0; root = n-2; next = n-1;\r
+  while (avbl>0)\r
+  {\r
+    while (root>=0 && (int)A[root].m_key==dpth) { used++; root--; }\r
+    while (avbl>used) { A[next--].m_key = (mz_uint16)(dpth); avbl--; }\r
+    avbl = 2*used; dpth++; used = 0;\r
+  }\r
+}\r
+\r
+// Limits canonical Huffman code table's max code size.\r
+enum { TDEFL_MAX_SUPPORTED_HUFF_CODESIZE = 32 };\r
+static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size)\r
+{\r
+  int i; mz_uint32 total = 0; if (code_list_len <= 1) return;\r
+  for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++) pNum_codes[max_code_size] += pNum_codes[i];\r
+  for (i = max_code_size; i > 0; i--) total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i));\r
+  while (total != (1UL << max_code_size))\r
+  {\r
+    pNum_codes[max_code_size]--;\r
+    for (i = max_code_size - 1; i > 0; i--) if (pNum_codes[i]) { pNum_codes[i]--; pNum_codes[i + 1] += 2; break; }\r
+    total--;\r
+  }\r
+}\r
+\r
+static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table)\r
+{\r
+  int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE]; mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1]; MZ_CLEAR_OBJ(num_codes);\r
+  if (static_table)\r
+  {\r
+    for (i = 0; i < table_len; i++) num_codes[d->m_huff_code_sizes[table_num][i]]++;\r
+  }\r
+  else\r
+  {\r
+    tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], *pSyms;\r
+    int num_used_syms = 0;\r
+    const mz_uint16 *pSym_count = &d->m_huff_count[table_num][0];\r
+    for (i = 0; i < table_len; i++) if (pSym_count[i]) { syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i]; syms0[num_used_syms++].m_sym_index = (mz_uint16)i; }\r
+\r
+    pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1); tdefl_calculate_minimum_redundancy(pSyms, num_used_syms);\r
+\r
+    for (i = 0; i < num_used_syms; i++) num_codes[pSyms[i].m_key]++;\r
+\r
+    tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit);\r
+\r
+    MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]); MZ_CLEAR_OBJ(d->m_huff_codes[table_num]);\r
+    for (i = 1, j = num_used_syms; i <= code_size_limit; i++)\r
+      for (l = num_codes[i]; l > 0; l--) d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i);\r
+  }\r
+\r
+  next_code[1] = 0; for (j = 0, i = 2; i <= code_size_limit; i++) next_code[i] = j = ((j + num_codes[i - 1]) << 1);\r
+\r
+  for (i = 0; i < table_len; i++)\r
+  {\r
+    mz_uint rev_code = 0, code, code_size; if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0) continue;\r
+    code = next_code[code_size]++; for (l = code_size; l > 0; l--, code >>= 1) rev_code = (rev_code << 1) | (code & 1);\r
+    d->m_huff_codes[table_num][i] = (mz_uint16)rev_code;\r
+  }\r
+}\r
+\r
+#define TDEFL_PUT_BITS(b, l) do { \\r
+  mz_uint bits = b; mz_uint len = l; MZ_ASSERT(bits <= ((1U << len) - 1U)); \\r
+  d->m_bit_buffer |= (bits << d->m_bits_in); d->m_bits_in += len; \\r
+  while (d->m_bits_in >= 8) { \\r
+    if (d->m_pOutput_buf < d->m_pOutput_buf_end) \\r
+      *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \\r
+      d->m_bit_buffer >>= 8; \\r
+      d->m_bits_in -= 8; \\r
+  } \\r
+} MZ_MACRO_END\r
+\r
+#define TDEFL_RLE_PREV_CODE_SIZE() { if (rle_repeat_count) { \\r
+  if (rle_repeat_count < 3) { \\r
+    d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \\r
+    while (rle_repeat_count--) packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \\r
+  } else { \\r
+    d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); packed_code_sizes[num_packed_code_sizes++] = 16; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \\r
+} rle_repeat_count = 0; } }\r
+\r
+#define TDEFL_RLE_ZERO_CODE_SIZE() { if (rle_z_count) { \\r
+  if (rle_z_count < 3) { \\r
+    d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); while (rle_z_count--) packed_code_sizes[num_packed_code_sizes++] = 0; \\r
+  } else if (rle_z_count <= 10) { \\r
+    d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); packed_code_sizes[num_packed_code_sizes++] = 17; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \\r
+  } else { \\r
+    d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); packed_code_sizes[num_packed_code_sizes++] = 18; packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \\r
+} rle_z_count = 0; } }\r
+\r
+static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };\r
+\r
+static void tdefl_start_dynamic_block(tdefl_compressor *d)\r
+{\r
+  int num_lit_codes, num_dist_codes, num_bit_lengths; mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index;\r
+  mz_uint8 code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], prev_code_size = 0xFF;\r
+\r
+  d->m_huff_count[0][256] = 1;\r
+\r
+  tdefl_optimize_huffman_table(d, 0, TDEFL_MAX_HUFF_SYMBOLS_0, 15, MZ_FALSE);\r
+  tdefl_optimize_huffman_table(d, 1, TDEFL_MAX_HUFF_SYMBOLS_1, 15, MZ_FALSE);\r
+\r
+  for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--) if (d->m_huff_code_sizes[0][num_lit_codes - 1]) break;\r
+  for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--) if (d->m_huff_code_sizes[1][num_dist_codes - 1]) break;\r
+\r
+  memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], num_lit_codes);\r
+  memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], num_dist_codes);\r
+  total_code_sizes_to_pack = num_lit_codes + num_dist_codes; num_packed_code_sizes = 0; rle_z_count = 0; rle_repeat_count = 0;\r
+\r
+  memset(&d->m_huff_count[2][0], 0, sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2);\r
+  for (i = 0; i < total_code_sizes_to_pack; i++)\r
+  {\r
+    mz_uint8 code_size = code_sizes_to_pack[i];\r
+    if (!code_size)\r
+    {\r
+      TDEFL_RLE_PREV_CODE_SIZE();\r
+      if (++rle_z_count == 138) { TDEFL_RLE_ZERO_CODE_SIZE(); }\r
+    }\r
+    else\r
+    {\r
+      TDEFL_RLE_ZERO_CODE_SIZE();\r
+      if (code_size != prev_code_size)\r
+      {\r
+        TDEFL_RLE_PREV_CODE_SIZE();\r
+        d->m_huff_count[2][code_size] = (mz_uint16)(d->m_huff_count[2][code_size] + 1); packed_code_sizes[num_packed_code_sizes++] = code_size;\r
+      }\r
+      else if (++rle_repeat_count == 6)\r
+      {\r
+        TDEFL_RLE_PREV_CODE_SIZE();\r
+      }\r
+    }\r
+    prev_code_size = code_size;\r
+  }\r
+  if (rle_repeat_count) { TDEFL_RLE_PREV_CODE_SIZE(); } else { TDEFL_RLE_ZERO_CODE_SIZE(); }\r
+\r
+  tdefl_optimize_huffman_table(d, 2, TDEFL_MAX_HUFF_SYMBOLS_2, 7, MZ_FALSE);\r
+\r
+  TDEFL_PUT_BITS(2, 2);\r
+\r
+  TDEFL_PUT_BITS(num_lit_codes - 257, 5);\r
+  TDEFL_PUT_BITS(num_dist_codes - 1, 5);\r
+\r
+  for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--) if (d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]]) break;\r
+  num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1)); TDEFL_PUT_BITS(num_bit_lengths - 4, 4);\r
+  for (i = 0; (int)i < num_bit_lengths; i++) TDEFL_PUT_BITS(d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3);\r
+\r
+  for (packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes; )\r
+  {\r
+    mz_uint code = packed_code_sizes[packed_code_sizes_index++]; MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2);\r
+    TDEFL_PUT_BITS(d->m_huff_codes[2][code], d->m_huff_code_sizes[2][code]);\r
+    if (code >= 16) TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], "\02\03\07"[code - 16]);\r
+  }\r
+}\r
+\r
+static void tdefl_start_static_block(tdefl_compressor *d)\r
+{\r
+  mz_uint i;\r
+  mz_uint8 *p = &d->m_huff_code_sizes[0][0];\r
+\r
+  for (i = 0; i <= 143; ++i) *p++ = 8;\r
+  for ( ; i <= 255; ++i) *p++ = 9;\r
+  for ( ; i <= 279; ++i) *p++ = 7;\r
+  for ( ; i <= 287; ++i) *p++ = 8;\r
+\r
+  memset(d->m_huff_code_sizes[1], 5, 32);\r
+\r
+  tdefl_optimize_huffman_table(d, 0, 288, 15, MZ_TRUE);\r
+  tdefl_optimize_huffman_table(d, 1, 32, 15, MZ_TRUE);\r
+\r
+  TDEFL_PUT_BITS(1, 2);\r
+}\r
+\r
+static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };\r
+\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS\r
+static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)\r
+{\r
+  mz_uint flags;\r
+  mz_uint8 *pLZ_codes;\r
+  mz_uint8 *pOutput_buf = d->m_pOutput_buf;\r
+  mz_uint8 *pLZ_code_buf_end = d->m_pLZ_code_buf;\r
+  mz_uint64 bit_buffer = d->m_bit_buffer;\r
+  mz_uint bits_in = d->m_bits_in;\r
+\r
+#define TDEFL_PUT_BITS_FAST(b, l) { bit_buffer |= (((mz_uint64)(b)) << bits_in); bits_in += (l); }\r
+\r
+  flags = 1;\r
+  for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1)\r
+  {\r
+    if (flags == 1)\r
+      flags = *pLZ_codes++ | 0x100;\r
+\r
+    if (flags & 1)\r
+    {\r
+      mz_uint s0, s1, n0, n1, sym, num_extra_bits;\r
+      mz_uint match_len = pLZ_codes[0], match_dist = *(const mz_uint16 *)(pLZ_codes + 1); pLZ_codes += 3;\r
+\r
+      MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\r
+      TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\r
+      TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]);\r
+\r
+      // This sequence coaxes MSVC into using cmov's vs. jmp's.\r
+      s0 = s_tdefl_small_dist_sym[match_dist & 511];\r
+      n0 = s_tdefl_small_dist_extra[match_dist & 511];\r
+      s1 = s_tdefl_large_dist_sym[match_dist >> 8];\r
+      n1 = s_tdefl_large_dist_extra[match_dist >> 8];\r
+      sym = (match_dist < 512) ? s0 : s1;\r
+      num_extra_bits = (match_dist < 512) ? n0 : n1;\r
+\r
+      MZ_ASSERT(d->m_huff_code_sizes[1][sym]);\r
+      TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]);\r
+      TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits);\r
+    }\r
+    else\r
+    {\r
+      mz_uint lit = *pLZ_codes++;\r
+      MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\r
+      TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\r
+\r
+      if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end))\r
+      {\r
+        flags >>= 1;\r
+        lit = *pLZ_codes++;\r
+        MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\r
+        TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\r
+\r
+        if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end))\r
+        {\r
+          flags >>= 1;\r
+          lit = *pLZ_codes++;\r
+          MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\r
+          TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\r
+        }\r
+      }\r
+    }\r
+\r
+    if (pOutput_buf >= d->m_pOutput_buf_end)\r
+      return MZ_FALSE;\r
+\r
+    *(mz_uint64*)pOutput_buf = bit_buffer;\r
+    pOutput_buf += (bits_in >> 3);\r
+    bit_buffer >>= (bits_in & ~7);\r
+    bits_in &= 7;\r
+  }\r
+\r
+#undef TDEFL_PUT_BITS_FAST\r
+\r
+  d->m_pOutput_buf = pOutput_buf;\r
+  d->m_bits_in = 0;\r
+  d->m_bit_buffer = 0;\r
+\r
+  while (bits_in)\r
+  {\r
+    mz_uint32 n = MZ_MIN(bits_in, 16);\r
+    TDEFL_PUT_BITS((mz_uint)bit_buffer & mz_bitmasks[n], n);\r
+    bit_buffer >>= n;\r
+    bits_in -= n;\r
+  }\r
+\r
+  TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]);\r
+\r
+  return (d->m_pOutput_buf < d->m_pOutput_buf_end);\r
+}\r
+#else\r
+static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)\r
+{\r
+  mz_uint flags;\r
+  mz_uint8 *pLZ_codes;\r
+\r
+  flags = 1;\r
+  for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; flags >>= 1)\r
+  {\r
+    if (flags == 1)\r
+      flags = *pLZ_codes++ | 0x100;\r
+    if (flags & 1)\r
+    {\r
+      mz_uint sym, num_extra_bits;\r
+      mz_uint match_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8)); pLZ_codes += 3;\r
+\r
+      MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\r
+      TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\r
+      TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]);\r
+\r
+      if (match_dist < 512)\r
+      {\r
+        sym = s_tdefl_small_dist_sym[match_dist]; num_extra_bits = s_tdefl_small_dist_extra[match_dist];\r
+      }\r
+      else\r
+      {\r
+        sym = s_tdefl_large_dist_sym[match_dist >> 8]; num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8];\r
+      }\r
+      MZ_ASSERT(d->m_huff_code_sizes[1][sym]);\r
+      TDEFL_PUT_BITS(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]);\r
+      TDEFL_PUT_BITS(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits);\r
+    }\r
+    else\r
+    {\r
+      mz_uint lit = *pLZ_codes++;\r
+      MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\r
+      TDEFL_PUT_BITS(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\r
+    }\r
+  }\r
+\r
+  TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]);\r
+\r
+  return (d->m_pOutput_buf < d->m_pOutput_buf_end);\r
+}\r
+#endif // MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS\r
+\r
+static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block)\r
+{\r
+  if (static_block)\r
+    tdefl_start_static_block(d);\r
+  else\r
+    tdefl_start_dynamic_block(d);\r
+  return tdefl_compress_lz_codes(d);\r
+}\r
+\r
+static int tdefl_flush_block(tdefl_compressor *d, int flush)\r
+{\r
+  mz_uint saved_bit_buf, saved_bits_in;\r
+  mz_uint8 *pSaved_output_buf;\r
+  mz_bool comp_block_succeeded = MZ_FALSE;\r
+  int n, use_raw_block = ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size;\r
+  mz_uint8 *pOutput_buf_start = ((d->m_pPut_buf_func == NULL) && ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) : d->m_output_buf;\r
+\r
+  d->m_pOutput_buf = pOutput_buf_start;\r
+  d->m_pOutput_buf_end = d->m_pOutput_buf + TDEFL_OUT_BUF_SIZE - 16;\r
+\r
+  MZ_ASSERT(!d->m_output_flush_remaining);\r
+  d->m_output_flush_ofs = 0;\r
+  d->m_output_flush_remaining = 0;\r
+\r
+  *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> d->m_num_flags_left);\r
+  d->m_pLZ_code_buf -= (d->m_num_flags_left == 8);\r
+\r
+  if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index))\r
+  {\r
+    TDEFL_PUT_BITS(0x78, 8); TDEFL_PUT_BITS(0x01, 8);\r
+  }\r
+\r
+  TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1);\r
+\r
+  pSaved_output_buf = d->m_pOutput_buf; saved_bit_buf = d->m_bit_buffer; saved_bits_in = d->m_bits_in;\r
+\r
+  if (!use_raw_block)\r
+    comp_block_succeeded = tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || (d->m_total_lz_bytes < 48));\r
+\r
+  // If the block gets expanded, forget the current contents of the output buffer and send a raw block instead.\r
+  if ( ((use_raw_block) || ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= d->m_total_lz_bytes))) &&\r
+       ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size) )\r
+  {\r
+    mz_uint i; d->m_pOutput_buf = pSaved_output_buf; d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in;\r
+    TDEFL_PUT_BITS(0, 2);\r
+    if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); }\r
+    for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF)\r
+    {\r
+      TDEFL_PUT_BITS(d->m_total_lz_bytes & 0xFFFF, 16);\r
+    }\r
+    for (i = 0; i < d->m_total_lz_bytes; ++i)\r
+    {\r
+      TDEFL_PUT_BITS(d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], 8);\r
+    }\r
+  }\r
+  // Check for the extremely unlikely (if not impossible) case of the compressed block not fitting into the output buffer when using dynamic codes.\r
+  else if (!comp_block_succeeded)\r
+  {\r
+    d->m_pOutput_buf = pSaved_output_buf; d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in;\r
+    tdefl_compress_block(d, MZ_TRUE);\r
+  }\r
+\r
+  if (flush)\r
+  {\r
+    if (flush == TDEFL_FINISH)\r
+    {\r
+      if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); }\r
+      if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER) { mz_uint i, a = d->m_adler32; for (i = 0; i < 4; i++) { TDEFL_PUT_BITS((a >> 24) & 0xFF, 8); a <<= 8; } }\r
+    }\r
+    else\r
+    {\r
+      mz_uint i, z = 0; TDEFL_PUT_BITS(0, 3); if (d->m_bits_in) { TDEFL_PUT_BITS(0, 8 - d->m_bits_in); } for (i = 2; i; --i, z ^= 0xFFFF) { TDEFL_PUT_BITS(z & 0xFFFF, 16); }\r
+    }\r
+  }\r
+\r
+  MZ_ASSERT(d->m_pOutput_buf < d->m_pOutput_buf_end);\r
+\r
+  memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0);\r
+  memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1);\r
+\r
+  d->m_pLZ_code_buf = d->m_lz_code_buf + 1; d->m_pLZ_flags = d->m_lz_code_buf; d->m_num_flags_left = 8; d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes; d->m_total_lz_bytes = 0; d->m_block_index++;\r
+\r
+  if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0)\r
+  {\r
+    if (d->m_pPut_buf_func)\r
+    {\r
+      *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf;\r
+      if (!(*d->m_pPut_buf_func)(d->m_output_buf, n, d->m_pPut_buf_user))\r
+        return (d->m_prev_return_status = TDEFL_STATUS_PUT_BUF_FAILED);\r
+    }\r
+    else if (pOutput_buf_start == d->m_output_buf)\r
+    {\r
+      int bytes_to_copy = (int)MZ_MIN((size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs));\r
+      memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, bytes_to_copy);\r
+      d->m_out_buf_ofs += bytes_to_copy;\r
+      if ((n -= bytes_to_copy) != 0)\r
+      {\r
+        d->m_output_flush_ofs = bytes_to_copy;\r
+        d->m_output_flush_remaining = n;\r
+      }\r
+    }\r
+    else\r
+    {\r
+      d->m_out_buf_ofs += n;\r
+    }\r
+  }\r
+\r
+  return d->m_output_flush_remaining;\r
+}\r
+\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES\r
+#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16*)(p)\r
+static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len)\r
+{\r
+  mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len;\r
+  mz_uint num_probes_left = d->m_max_probes[match_len >= 32];\r
+  const mz_uint16 *s = (const mz_uint16*)(d->m_dict + pos), *p, *q;\r
+  mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD(s);\r
+  MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); if (max_match_len <= match_len) return;\r
+  for ( ; ; )\r
+  {\r
+    for ( ; ; )\r
+    {\r
+      if (--num_probes_left == 0) return;\r
+      #define TDEFL_PROBE \\r
+        next_probe_pos = d->m_next[probe_pos]; \\r
+        if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) return; \\r
+        probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \\r
+        if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) break;\r
+      TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE;\r
+    }\r
+    if (!dist) break; q = (const mz_uint16*)(d->m_dict + probe_pos); if (TDEFL_READ_UNALIGNED_WORD(q) != s01) continue; p = s; probe_len = 32;\r
+    do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) &&\r
+                   (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) );\r
+    if (!probe_len)\r
+    {\r
+      *pMatch_dist = dist; *pMatch_len = MZ_MIN(max_match_len, TDEFL_MAX_MATCH_LEN); break;\r
+    }\r
+    else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8*)p == *(const mz_uint8*)q)) > match_len)\r
+    {\r
+      *pMatch_dist = dist; if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len) break;\r
+      c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]);\r
+    }\r
+  }\r
+}\r
+#else\r
+static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len)\r
+{\r
+  mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len;\r
+  mz_uint num_probes_left = d->m_max_probes[match_len >= 32];\r
+  const mz_uint8 *s = d->m_dict + pos, *p, *q;\r
+  mz_uint8 c0 = d->m_dict[pos + match_len], c1 = d->m_dict[pos + match_len - 1];\r
+  MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); if (max_match_len <= match_len) return;\r
+  for ( ; ; )\r
+  {\r
+    for ( ; ; )\r
+    {\r
+      if (--num_probes_left == 0) return;\r
+      #define TDEFL_PROBE \\r
+        next_probe_pos = d->m_next[probe_pos]; \\r
+        if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) return; \\r
+        probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \\r
+        if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) break;\r
+      TDEFL_PROBE; TDEFL_PROBE; TDEFL_PROBE;\r
+    }\r
+    if (!dist) break; p = s; q = d->m_dict + probe_pos; for (probe_len = 0; probe_len < max_match_len; probe_len++) if (*p++ != *q++) break;\r
+    if (probe_len > match_len)\r
+    {\r
+      *pMatch_dist = dist; if ((*pMatch_len = match_len = probe_len) == max_match_len) return;\r
+      c0 = d->m_dict[pos + match_len]; c1 = d->m_dict[pos + match_len - 1];\r
+    }\r
+  }\r
+}\r
+#endif // #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES\r
+\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\r
+static mz_bool tdefl_compress_fast(tdefl_compressor *d)\r
+{\r
+  // Faster, minimally featured LZRW1-style match+parse loop with better register utilization. Intended for applications where raw throughput is valued more highly than ratio.\r
+  mz_uint lookahead_pos = d->m_lookahead_pos, lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, total_lz_bytes = d->m_total_lz_bytes, num_flags_left = d->m_num_flags_left;\r
+  mz_uint8 *pLZ_code_buf = d->m_pLZ_code_buf, *pLZ_flags = d->m_pLZ_flags;\r
+  mz_uint cur_pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK;\r
+\r
+  while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size)))\r
+  {\r
+    const mz_uint TDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096;\r
+    mz_uint dst_pos = (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK;\r
+    mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size);\r
+    d->m_src_buf_left -= num_bytes_to_process;\r
+    lookahead_size += num_bytes_to_process;\r
+\r
+    while (num_bytes_to_process)\r
+    {\r
+      mz_uint32 n = MZ_MIN(TDEFL_LZ_DICT_SIZE - dst_pos, num_bytes_to_process);\r
+      memcpy(d->m_dict + dst_pos, d->m_pSrc, n);\r
+      if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))\r
+        memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos));\r
+      d->m_pSrc += n;\r
+      dst_pos = (dst_pos + n) & TDEFL_LZ_DICT_SIZE_MASK;\r
+      num_bytes_to_process -= n;\r
+    }\r
+\r
+    dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - lookahead_size, dict_size);\r
+    if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE)) break;\r
+\r
+    while (lookahead_size >= 4)\r
+    {\r
+      mz_uint cur_match_dist, cur_match_len = 1;\r
+      mz_uint8 *pCur_dict = d->m_dict + cur_pos;\r
+      mz_uint first_trigram = (*(const mz_uint32 *)pCur_dict) & 0xFFFFFF;\r
+      mz_uint hash = (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & TDEFL_LEVEL1_HASH_SIZE_MASK;\r
+      mz_uint probe_pos = d->m_hash[hash];\r
+      d->m_hash[hash] = (mz_uint16)lookahead_pos;\r
+\r
+      if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((*(const mz_uint32 *)(d->m_dict + (probe_pos &= TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram))\r
+      {\r
+        const mz_uint16 *p = (const mz_uint16 *)pCur_dict;\r
+        const mz_uint16 *q = (const mz_uint16 *)(d->m_dict + probe_pos);\r
+        mz_uint32 probe_len = 32;\r
+        do { } while ( (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) &&\r
+          (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (TDEFL_READ_UNALIGNED_WORD(++p) == TDEFL_READ_UNALIGNED_WORD(++q)) && (--probe_len > 0) );\r
+        cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q);\r
+        if (!probe_len)\r
+          cur_match_len = cur_match_dist ? TDEFL_MAX_MATCH_LEN : 0;\r
+\r
+        if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || ((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U*1024U)))\r
+        {\r
+          cur_match_len = 1;\r
+          *pLZ_code_buf++ = (mz_uint8)first_trigram;\r
+          *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\r
+          d->m_huff_count[0][(mz_uint8)first_trigram]++;\r
+        }\r
+        else\r
+        {\r
+          mz_uint32 s0, s1;\r
+          cur_match_len = MZ_MIN(cur_match_len, lookahead_size);\r
+\r
+          MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 1) && (cur_match_dist <= TDEFL_LZ_DICT_SIZE));\r
+\r
+          cur_match_dist--;\r
+\r
+          pLZ_code_buf[0] = (mz_uint8)(cur_match_len - TDEFL_MIN_MATCH_LEN);\r
+          *(mz_uint16 *)(&pLZ_code_buf[1]) = (mz_uint16)cur_match_dist;\r
+          pLZ_code_buf += 3;\r
+          *pLZ_flags = (mz_uint8)((*pLZ_flags >> 1) | 0x80);\r
+\r
+          s0 = s_tdefl_small_dist_sym[cur_match_dist & 511];\r
+          s1 = s_tdefl_large_dist_sym[cur_match_dist >> 8];\r
+          d->m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++;\r
+\r
+          d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - TDEFL_MIN_MATCH_LEN]]++;\r
+        }\r
+      }\r
+      else\r
+      {\r
+        *pLZ_code_buf++ = (mz_uint8)first_trigram;\r
+        *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\r
+        d->m_huff_count[0][(mz_uint8)first_trigram]++;\r
+      }\r
+\r
+      if (--num_flags_left == 0) { num_flags_left = 8; pLZ_flags = pLZ_code_buf++; }\r
+\r
+      total_lz_bytes += cur_match_len;\r
+      lookahead_pos += cur_match_len;\r
+      dict_size = MZ_MIN(dict_size + cur_match_len, TDEFL_LZ_DICT_SIZE);\r
+      cur_pos = (cur_pos + cur_match_len) & TDEFL_LZ_DICT_SIZE_MASK;\r
+      MZ_ASSERT(lookahead_size >= cur_match_len);\r
+      lookahead_size -= cur_match_len;\r
+\r
+      if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8])\r
+      {\r
+        int n;\r
+        d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size;\r
+        d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left;\r
+        if ((n = tdefl_flush_block(d, 0)) != 0)\r
+          return (n < 0) ? MZ_FALSE : MZ_TRUE;\r
+        total_lz_bytes = d->m_total_lz_bytes; pLZ_code_buf = d->m_pLZ_code_buf; pLZ_flags = d->m_pLZ_flags; num_flags_left = d->m_num_flags_left;\r
+      }\r
+    }\r
+\r
+    while (lookahead_size)\r
+    {\r
+      mz_uint8 lit = d->m_dict[cur_pos];\r
+\r
+      total_lz_bytes++;\r
+      *pLZ_code_buf++ = lit;\r
+      *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\r
+      if (--num_flags_left == 0) { num_flags_left = 8; pLZ_flags = pLZ_code_buf++; }\r
+\r
+      d->m_huff_count[0][lit]++;\r
+\r
+      lookahead_pos++;\r
+      dict_size = MZ_MIN(dict_size + 1, TDEFL_LZ_DICT_SIZE);\r
+      cur_pos = (cur_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK;\r
+      lookahead_size--;\r
+\r
+      if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8])\r
+      {\r
+        int n;\r
+        d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size;\r
+        d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left;\r
+        if ((n = tdefl_flush_block(d, 0)) != 0)\r
+          return (n < 0) ? MZ_FALSE : MZ_TRUE;\r
+        total_lz_bytes = d->m_total_lz_bytes; pLZ_code_buf = d->m_pLZ_code_buf; pLZ_flags = d->m_pLZ_flags; num_flags_left = d->m_num_flags_left;\r
+      }\r
+    }\r
+  }\r
+\r
+  d->m_lookahead_pos = lookahead_pos; d->m_lookahead_size = lookahead_size; d->m_dict_size = dict_size;\r
+  d->m_total_lz_bytes = total_lz_bytes; d->m_pLZ_code_buf = pLZ_code_buf; d->m_pLZ_flags = pLZ_flags; d->m_num_flags_left = num_flags_left;\r
+  return MZ_TRUE;\r
+}\r
+#endif // MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\r
+\r
+static MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit)\r
+{\r
+  d->m_total_lz_bytes++;\r
+  *d->m_pLZ_code_buf++ = lit;\r
+  *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1); if (--d->m_num_flags_left == 0) { d->m_num_flags_left = 8; d->m_pLZ_flags = d->m_pLZ_code_buf++; }\r
+  d->m_huff_count[0][lit]++;\r
+}\r
+\r
+static MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist)\r
+{\r
+  mz_uint32 s0, s1;\r
+\r
+  MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && (match_dist <= TDEFL_LZ_DICT_SIZE));\r
+\r
+  d->m_total_lz_bytes += match_len;\r
+\r
+  d->m_pLZ_code_buf[0] = (mz_uint8)(match_len - TDEFL_MIN_MATCH_LEN);\r
+\r
+  match_dist -= 1;\r
+  d->m_pLZ_code_buf[1] = (mz_uint8)(match_dist & 0xFF);\r
+  d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8); d->m_pLZ_code_buf += 3;\r
+\r
+  *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80); if (--d->m_num_flags_left == 0) { d->m_num_flags_left = 8; d->m_pLZ_flags = d->m_pLZ_code_buf++; }\r
+\r
+  s0 = s_tdefl_small_dist_sym[match_dist & 511]; s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127];\r
+  d->m_huff_count[1][(match_dist < 512) ? s0 : s1]++;\r
+\r
+  if (match_len >= TDEFL_MIN_MATCH_LEN) d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++;\r
+}\r
+\r
+static mz_bool tdefl_compress_normal(tdefl_compressor *d)\r
+{\r
+  const mz_uint8 *pSrc = d->m_pSrc; size_t src_buf_left = d->m_src_buf_left;\r
+  tdefl_flush flush = d->m_flush;\r
+\r
+  while ((src_buf_left) || ((flush) && (d->m_lookahead_size)))\r
+  {\r
+    mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos;\r
+    // Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN.\r
+    if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1))\r
+    {\r
+      mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2;\r
+      mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK];\r
+      mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size);\r
+      const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process;\r
+      src_buf_left -= num_bytes_to_process;\r
+      d->m_lookahead_size += num_bytes_to_process;\r
+      while (pSrc != pSrc_end)\r
+      {\r
+        mz_uint8 c = *pSrc++; d->m_dict[dst_pos] = c; if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;\r
+        hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);\r
+        d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos);\r
+        dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; ins_pos++;\r
+      }\r
+    }\r
+    else\r
+    {\r
+      while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))\r
+      {\r
+        mz_uint8 c = *pSrc++;\r
+        mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK;\r
+        src_buf_left--;\r
+        d->m_dict[dst_pos] = c;\r
+        if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))\r
+          d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;\r
+        if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN)\r
+        {\r
+          mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2;\r
+          mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);\r
+          d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; d->m_hash[hash] = (mz_uint16)(ins_pos);\r
+        }\r
+      }\r
+    }\r
+    d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size);\r
+    if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))\r
+      break;\r
+\r
+    // Simple lazy/greedy parsing state machine.\r
+    len_to_move = 1; cur_match_dist = 0; cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK;\r
+    if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS))\r
+    {\r
+      if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))\r
+      {\r
+        mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK];\r
+        cur_match_len = 0; while (cur_match_len < d->m_lookahead_size) { if (d->m_dict[cur_pos + cur_match_len] != c) break; cur_match_len++; }\r
+        if (cur_match_len < TDEFL_MIN_MATCH_LEN) cur_match_len = 0; else cur_match_dist = 1;\r
+      }\r
+    }\r
+    else\r
+    {\r
+      tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len);\r
+    }\r
+    if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U*1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5)))\r
+    {\r
+      cur_match_dist = cur_match_len = 0;\r
+    }\r
+    if (d->m_saved_match_len)\r
+    {\r
+      if (cur_match_len > d->m_saved_match_len)\r
+      {\r
+        tdefl_record_literal(d, (mz_uint8)d->m_saved_lit);\r
+        if (cur_match_len >= 128)\r
+        {\r
+          tdefl_record_match(d, cur_match_len, cur_match_dist);\r
+          d->m_saved_match_len = 0; len_to_move = cur_match_len;\r
+        }\r
+        else\r
+        {\r
+          d->m_saved_lit = d->m_dict[cur_pos]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len;\r
+        }\r
+      }\r
+      else\r
+      {\r
+        tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist);\r
+        len_to_move = d->m_saved_match_len - 1; d->m_saved_match_len = 0;\r
+      }\r
+    }\r
+    else if (!cur_match_dist)\r
+      tdefl_record_literal(d, d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]);\r
+    else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128))\r
+    {\r
+      tdefl_record_match(d, cur_match_len, cur_match_dist);\r
+      len_to_move = cur_match_len;\r
+    }\r
+    else\r
+    {\r
+      d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]; d->m_saved_match_dist = cur_match_dist; d->m_saved_match_len = cur_match_len;\r
+    }\r
+    // Move the lookahead forward by len_to_move bytes.\r
+    d->m_lookahead_pos += len_to_move;\r
+    MZ_ASSERT(d->m_lookahead_size >= len_to_move);\r
+    d->m_lookahead_size -= len_to_move;\r
+    d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, TDEFL_LZ_DICT_SIZE);\r
+    // Check if it's time to flush the current LZ codes to the internal output buffer.\r
+    if ( (d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) ||\r
+         ( (d->m_total_lz_bytes > 31*1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) )\r
+    {\r
+      int n;\r
+      d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left;\r
+      if ((n = tdefl_flush_block(d, 0)) != 0)\r
+        return (n < 0) ? MZ_FALSE : MZ_TRUE;\r
+    }\r
+  }\r
+\r
+  d->m_pSrc = pSrc; d->m_src_buf_left = src_buf_left;\r
+  return MZ_TRUE;\r
+}\r
+\r
+static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d)\r
+{\r
+  if (d->m_pIn_buf_size)\r
+  {\r
+    *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf;\r
+  }\r
+\r
+  if (d->m_pOut_buf_size)\r
+  {\r
+    size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, d->m_output_flush_remaining);\r
+    memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf + d->m_output_flush_ofs, n);\r
+    d->m_output_flush_ofs += (mz_uint)n;\r
+    d->m_output_flush_remaining -= (mz_uint)n;\r
+    d->m_out_buf_ofs += n;\r
+\r
+    *d->m_pOut_buf_size = d->m_out_buf_ofs;\r
+  }\r
+\r
+  return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE : TDEFL_STATUS_OKAY;\r
+}\r
+\r
+tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush)\r
+{\r
+  if (!d)\r
+  {\r
+    if (pIn_buf_size) *pIn_buf_size = 0;\r
+    if (pOut_buf_size) *pOut_buf_size = 0;\r
+    return TDEFL_STATUS_BAD_PARAM;\r
+  }\r
+\r
+  d->m_pIn_buf = pIn_buf; d->m_pIn_buf_size = pIn_buf_size;\r
+  d->m_pOut_buf = pOut_buf; d->m_pOut_buf_size = pOut_buf_size;\r
+  d->m_pSrc = (const mz_uint8 *)(pIn_buf); d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0;\r
+  d->m_out_buf_ofs = 0;\r
+  d->m_flush = flush;\r
+\r
+  if ( ((d->m_pPut_buf_func != NULL) == ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || (d->m_prev_return_status != TDEFL_STATUS_OKAY) ||\r
+        (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf) )\r
+  {\r
+    if (pIn_buf_size) *pIn_buf_size = 0;\r
+    if (pOut_buf_size) *pOut_buf_size = 0;\r
+    return (d->m_prev_return_status = TDEFL_STATUS_BAD_PARAM);\r
+  }\r
+  d->m_wants_to_finish |= (flush == TDEFL_FINISH);\r
+\r
+  if ((d->m_output_flush_remaining) || (d->m_finished))\r
+    return (d->m_prev_return_status = tdefl_flush_output_buffer(d));\r
+\r
+#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\r
+  if (((d->m_flags & TDEFL_MAX_PROBES_MASK) == 1) &&\r
+      ((d->m_flags & TDEFL_GREEDY_PARSING_FLAG) != 0) &&\r
+      ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | TDEFL_RLE_MATCHES)) == 0))\r
+  {\r
+    if (!tdefl_compress_fast(d))\r
+      return d->m_prev_return_status;\r
+  }\r
+  else\r
+#endif // #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\r
+  {\r
+    if (!tdefl_compress_normal(d))\r
+      return d->m_prev_return_status;\r
+  }\r
+\r
+  if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && (pIn_buf))\r
+    d->m_adler32 = (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, d->m_pSrc - (const mz_uint8 *)pIn_buf);\r
+\r
+  if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && (!d->m_output_flush_remaining))\r
+  {\r
+    if (tdefl_flush_block(d, flush) < 0)\r
+      return d->m_prev_return_status;\r
+    d->m_finished = (flush == TDEFL_FINISH);\r
+    if (flush == TDEFL_FULL_FLUSH) { MZ_CLEAR_OBJ(d->m_hash); MZ_CLEAR_OBJ(d->m_next); d->m_dict_size = 0; }\r
+  }\r
+\r
+  return (d->m_prev_return_status = tdefl_flush_output_buffer(d));\r
+}\r
+\r
+tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush)\r
+{\r
+  MZ_ASSERT(d->m_pPut_buf_func); return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush);\r
+}\r
+\r
+tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\r
+{\r
+  d->m_pPut_buf_func = pPut_buf_func; d->m_pPut_buf_user = pPut_buf_user;\r
+  d->m_flags = (mz_uint)(flags); d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3; d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0;\r
+  d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3;\r
+  if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) MZ_CLEAR_OBJ(d->m_hash);\r
+  d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0;\r
+  d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0;\r
+  d->m_pLZ_code_buf = d->m_lz_code_buf + 1; d->m_pLZ_flags = d->m_lz_code_buf; d->m_num_flags_left = 8;\r
+  d->m_pOutput_buf = d->m_output_buf; d->m_pOutput_buf_end = d->m_output_buf; d->m_prev_return_status = TDEFL_STATUS_OKAY;\r
+  d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0; d->m_adler32 = 1;\r
+  d->m_pIn_buf = NULL; d->m_pOut_buf = NULL;\r
+  d->m_pIn_buf_size = NULL; d->m_pOut_buf_size = NULL;\r
+  d->m_flush = TDEFL_NO_FLUSH; d->m_pSrc = NULL; d->m_src_buf_left = 0; d->m_out_buf_ofs = 0;\r
+  memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0);\r
+  memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1);\r
+  return TDEFL_STATUS_OKAY;\r
+}\r
+\r
+tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d)\r
+{\r
+  return d->m_prev_return_status;\r
+}\r
+\r
+mz_uint32 tdefl_get_adler32(tdefl_compressor *d)\r
+{\r
+  return d->m_adler32;\r
+}\r
+\r
+mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\r
+{\r
+  tdefl_compressor *pComp; mz_bool succeeded; if (((buf_len) && (!pBuf)) || (!pPut_buf_func)) return MZ_FALSE;\r
+  pComp = (tdefl_compressor*)MZ_MALLOC(sizeof(tdefl_compressor)); if (!pComp) return MZ_FALSE;\r
+  succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == TDEFL_STATUS_OKAY);\r
+  succeeded = succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == TDEFL_STATUS_DONE);\r
+  MZ_FREE(pComp); return succeeded;\r
+}\r
+\r
+typedef struct\r
+{\r
+  size_t m_size, m_capacity;\r
+  mz_uint8 *m_pBuf;\r
+  mz_bool m_expandable;\r
+} tdefl_output_buffer;\r
+\r
+static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser)\r
+{\r
+  tdefl_output_buffer *p = (tdefl_output_buffer *)pUser;\r
+  size_t new_size = p->m_size + len;\r
+  if (new_size > p->m_capacity)\r
+  {\r
+    size_t new_capacity = p->m_capacity; mz_uint8 *pNew_buf; if (!p->m_expandable) return MZ_FALSE;\r
+    do { new_capacity = MZ_MAX(128U, new_capacity << 1U); } while (new_size > new_capacity);\r
+    pNew_buf = (mz_uint8*)MZ_REALLOC(p->m_pBuf, new_capacity); if (!pNew_buf) return MZ_FALSE;\r
+    p->m_pBuf = pNew_buf; p->m_capacity = new_capacity;\r
+  }\r
+  memcpy((mz_uint8*)p->m_pBuf + p->m_size, pBuf, len); p->m_size = new_size;\r
+  return MZ_TRUE;\r
+}\r
+\r
+void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)\r
+{\r
+  tdefl_output_buffer out_buf; MZ_CLEAR_OBJ(out_buf);\r
+  if (!pOut_len) return MZ_FALSE; else *pOut_len = 0;\r
+  out_buf.m_expandable = MZ_TRUE;\r
+  if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) return NULL;\r
+  *pOut_len = out_buf.m_size; return out_buf.m_pBuf;\r
+}\r
+\r
+size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)\r
+{\r
+  tdefl_output_buffer out_buf; MZ_CLEAR_OBJ(out_buf);\r
+  if (!pOut_buf) return 0;\r
+  out_buf.m_pBuf = (mz_uint8*)pOut_buf; out_buf.m_capacity = out_buf_len;\r
+  if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) return 0;\r
+  return out_buf.m_size;\r
+}\r
+\r
+#ifndef MINIZ_NO_ZLIB_APIS\r
+static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32,  16, 32, 128, 256,  512, 768, 1500 };\r
+\r
+// level may actually range from [0,10] (10 is a "hidden" max level, where we want a bit more compression and it's fine if throughput to fall off a cliff on some files).\r
+mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy)\r
+{\r
+  mz_uint comp_flags = s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0);\r
+  if (window_bits > 0) comp_flags |= TDEFL_WRITE_ZLIB_HEADER;\r
+\r
+  if (!level) comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS;\r
+  else if (strategy == MZ_FILTERED) comp_flags |= TDEFL_FILTER_MATCHES;\r
+  else if (strategy == MZ_HUFFMAN_ONLY) comp_flags &= ~TDEFL_MAX_PROBES_MASK;\r
+  else if (strategy == MZ_FIXED) comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS;\r
+  else if (strategy == MZ_RLE) comp_flags |= TDEFL_RLE_MATCHES;\r
+\r
+  return comp_flags;\r
+}\r
+#endif //MINIZ_NO_ZLIB_APIS\r
+\r
+#ifdef _MSC_VER\r
+#pragma warning (push)\r
+#pragma warning (disable:4204) // nonstandard extension used : non-constant aggregate initializer (also supported by GNU C and C99, so no big deal)\r
+#endif\r
+\r
+// Simple PNG writer function by Alex Evans, 2011. Released into the public domain: https://gist.github.com/908299, more context at\r
+// http://altdevblogaday.org/2011/04/06/a-smaller-jpg-encoder/.\r
+// This is actually a modification of Alex's original code so PNG files generated by this function pass pngcheck.\r
+void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip)\r
+{\r
+  // Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was defined.\r
+  static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32,  16, 32, 128, 256,  512, 768, 1500 };\r
+  tdefl_compressor *pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); tdefl_output_buffer out_buf; int i, bpl = w * num_chans, y, z; mz_uint32 c; *pLen_out = 0;\r
+  if (!pComp) return NULL;\r
+  MZ_CLEAR_OBJ(out_buf); out_buf.m_expandable = MZ_TRUE; out_buf.m_capacity = 57+MZ_MAX(64, (1+bpl)*h); if (NULL == (out_buf.m_pBuf = (mz_uint8*)MZ_MALLOC(out_buf.m_capacity))) { MZ_FREE(pComp); return NULL; }\r
+  // write dummy header\r
+  for (z = 41; z; --z) tdefl_output_buffer_putter(&z, 1, &out_buf);\r
+  // compress image data\r
+  tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER);\r
+  for (y = 0; y < h; ++y) { tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); tdefl_compress_buffer(pComp, (mz_uint8*)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH); }\r
+  if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE) { MZ_FREE(pComp); MZ_FREE(out_buf.m_pBuf); return NULL; }\r
+  // write real header\r
+  *pLen_out = out_buf.m_size-41;\r
+  {\r
+    static const mz_uint8 chans[] = {0x00, 0x00, 0x04, 0x02, 0x06};\r
+    mz_uint8 pnghdr[41]={0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,\r
+      0,0,(mz_uint8)(w>>8),(mz_uint8)w,0,0,(mz_uint8)(h>>8),(mz_uint8)h,8,chans[num_chans],0,0,0,0,0,0,0,\r
+      (mz_uint8)(*pLen_out>>24),(mz_uint8)(*pLen_out>>16),(mz_uint8)(*pLen_out>>8),(mz_uint8)*pLen_out,0x49,0x44,0x41,0x54};\r
+    c=(mz_uint32)mz_crc32(MZ_CRC32_INIT,pnghdr+12,17); for (i=0; i<4; ++i, c<<=8) ((mz_uint8*)(pnghdr+29))[i]=(mz_uint8)(c>>24);\r
+    memcpy(out_buf.m_pBuf, pnghdr, 41);\r
+  }\r
+  // write footer (IDAT CRC-32, followed by IEND chunk)\r
+  if (!tdefl_output_buffer_putter("\0\0\0\0\0\0\0\0\x49\x45\x4e\x44\xae\x42\x60\x82", 16, &out_buf)) { *pLen_out = 0; MZ_FREE(pComp); MZ_FREE(out_buf.m_pBuf); return NULL; }\r
+  c = (mz_uint32)mz_crc32(MZ_CRC32_INIT,out_buf.m_pBuf+41-4, *pLen_out+4); for (i=0; i<4; ++i, c<<=8) (out_buf.m_pBuf+out_buf.m_size-16)[i] = (mz_uint8)(c >> 24);\r
+  // compute final size of file, grab compressed data buffer and return\r
+  *pLen_out += 57; MZ_FREE(pComp); return out_buf.m_pBuf;\r
+}\r
+void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out)\r
+{\r
+  // Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's where #defined out)\r
+  return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, pLen_out, 6, MZ_FALSE);\r
+}\r
+\r
+#ifdef _MSC_VER\r
+#pragma warning (pop)\r
+#endif\r
+\r
+// ------------------- .ZIP archive reading\r
+\r
+#ifndef MINIZ_NO_ARCHIVE_APIS\r
+\r
+#ifdef MINIZ_NO_STDIO\r
+  #define MZ_FILE void *\r
+#else\r
+  #include <stdio.h>\r
+  #include <sys/stat.h>\r
+\r
+  #if defined(_MSC_VER) || defined(__MINGW64__)\r
+    static FILE *mz_fopen(const char *pFilename, const char *pMode)\r
+    {\r
+      FILE* pFile = NULL;\r
+      fopen_s(&pFile, pFilename, pMode);\r
+      return pFile;\r
+    }\r
+    static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)\r
+    {\r
+      FILE* pFile = NULL;\r
+      if (freopen_s(&pFile, pPath, pMode, pStream))\r
+        return NULL;\r
+      return pFile;\r
+    }\r
+    #ifndef MINIZ_NO_TIME\r
+      #include <sys/utime.h>\r
+    #endif\r
+    #define MZ_FILE FILE\r
+    #define MZ_FOPEN mz_fopen\r
+    #define MZ_FCLOSE fclose\r
+    #define MZ_FREAD fread\r
+    #define MZ_FWRITE fwrite\r
+    #define MZ_FTELL64 _ftelli64\r
+    #define MZ_FSEEK64 _fseeki64\r
+    #define MZ_FILE_STAT_STRUCT _stat\r
+    #define MZ_FILE_STAT _stat\r
+    #define MZ_FFLUSH fflush\r
+    #define MZ_FREOPEN mz_freopen\r
+    #define MZ_DELETE_FILE remove\r
+  #elif defined(__MINGW32__)\r
+    #ifndef MINIZ_NO_TIME\r
+      #include <sys/utime.h>\r
+    #endif\r
+    #define MZ_FILE FILE\r
+    #define MZ_FOPEN(f, m) fopen(f, m)\r
+    #define MZ_FCLOSE fclose\r
+    #define MZ_FREAD fread\r
+    #define MZ_FWRITE fwrite\r
+    #define MZ_FTELL64 ftello64\r
+    #define MZ_FSEEK64 fseeko64\r
+    #define MZ_FILE_STAT_STRUCT _stat\r
+    #define MZ_FILE_STAT _stat\r
+    #define MZ_FFLUSH fflush\r
+    #define MZ_FREOPEN(f, m, s) freopen(f, m, s)\r
+    #define MZ_DELETE_FILE remove\r
+  #elif defined(__TINYC__)\r
+    #ifndef MINIZ_NO_TIME\r
+      #include <sys/utime.h>\r
+    #endif\r
+    #define MZ_FILE FILE\r
+    #define MZ_FOPEN(f, m) fopen(f, m)\r
+    #define MZ_FCLOSE fclose\r
+    #define MZ_FREAD fread\r
+    #define MZ_FWRITE fwrite\r
+    #define MZ_FTELL64 ftell\r
+    #define MZ_FSEEK64 fseek\r
+    #define MZ_FILE_STAT_STRUCT stat\r
+    #define MZ_FILE_STAT stat\r
+    #define MZ_FFLUSH fflush\r
+    #define MZ_FREOPEN(f, m, s) freopen(f, m, s)\r
+    #define MZ_DELETE_FILE remove\r
+  #elif defined(__GNUC__) && _LARGEFILE64_SOURCE\r
+    #ifndef MINIZ_NO_TIME\r
+      #include <utime.h>\r
+    #endif\r
+    #define MZ_FILE FILE\r
+    #define MZ_FOPEN(f, m) fopen64(f, m)\r
+    #define MZ_FCLOSE fclose\r
+    #define MZ_FREAD fread\r
+    #define MZ_FWRITE fwrite\r
+    #define MZ_FTELL64 ftello64\r
+    #define MZ_FSEEK64 fseeko64\r
+    #define MZ_FILE_STAT_STRUCT stat64\r
+    #define MZ_FILE_STAT stat64\r
+    #define MZ_FFLUSH fflush\r
+    #define MZ_FREOPEN(p, m, s) freopen64(p, m, s)\r
+    #define MZ_DELETE_FILE remove\r
+  #else\r
+    #ifndef MINIZ_NO_TIME\r
+      #include <utime.h>\r
+    #endif\r
+    #define MZ_FILE FILE\r
+    #define MZ_FOPEN(f, m) fopen(f, m)\r
+    #define MZ_FCLOSE fclose\r
+    #define MZ_FREAD fread\r
+    #define MZ_FWRITE fwrite\r
+    #define MZ_FTELL64 ftello\r
+    #define MZ_FSEEK64 fseeko\r
+    #define MZ_FILE_STAT_STRUCT stat\r
+    #define MZ_FILE_STAT stat\r
+    #define MZ_FFLUSH fflush\r
+    #define MZ_FREOPEN(f, m, s) freopen(f, m, s)\r
+    #define MZ_DELETE_FILE remove\r
+  #endif // #ifdef _MSC_VER\r
+#endif // #ifdef MINIZ_NO_STDIO\r
+\r
+#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c))\r
+\r
+// Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff.\r
+enum\r
+{\r
+  // ZIP archive identifiers and record sizes\r
+  MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50,\r
+  MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,\r
+  // Central directory header record offsets\r
+  MZ_ZIP_CDH_SIG_OFS = 0, MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, MZ_ZIP_CDH_BIT_FLAG_OFS = 8,\r
+  MZ_ZIP_CDH_METHOD_OFS = 10, MZ_ZIP_CDH_FILE_TIME_OFS = 12, MZ_ZIP_CDH_FILE_DATE_OFS = 14, MZ_ZIP_CDH_CRC32_OFS = 16,\r
+  MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, MZ_ZIP_CDH_EXTRA_LEN_OFS = 30,\r
+  MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, MZ_ZIP_CDH_DISK_START_OFS = 34, MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42,\r
+  // Local directory header offsets\r
+  MZ_ZIP_LDH_SIG_OFS = 0, MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, MZ_ZIP_LDH_BIT_FLAG_OFS = 6, MZ_ZIP_LDH_METHOD_OFS = 8, MZ_ZIP_LDH_FILE_TIME_OFS = 10,\r
+  MZ_ZIP_LDH_FILE_DATE_OFS = 12, MZ_ZIP_LDH_CRC32_OFS = 14, MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22,\r
+  MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, MZ_ZIP_LDH_EXTRA_LEN_OFS = 28,\r
+  // End of central directory offsets\r
+  MZ_ZIP_ECDH_SIG_OFS = 0, MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8,\r
+  MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,\r
+};\r
+\r
+typedef struct\r
+{\r
+  void *m_p;\r
+  size_t m_size, m_capacity;\r
+  mz_uint m_element_size;\r
+} mz_zip_array;\r
+\r
+struct mz_zip_internal_state_tag\r
+{\r
+  mz_zip_array m_central_dir;\r
+  mz_zip_array m_central_dir_offsets;\r
+  mz_zip_array m_sorted_central_dir_offsets;\r
+  MZ_FILE *m_pFile;\r
+  void *m_pMem;\r
+  size_t m_mem_size;\r
+  size_t m_mem_capacity;\r
+};\r
+\r
+#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size\r
+#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index]\r
+\r
+static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray)\r
+{\r
+  pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p);\r
+  memset(pArray, 0, sizeof(mz_zip_array));\r
+}\r
+\r
+static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing)\r
+{\r
+  void *pNew_p; size_t new_capacity = min_new_capacity; MZ_ASSERT(pArray->m_element_size); if (pArray->m_capacity >= min_new_capacity) return MZ_TRUE;\r
+  if (growing) { new_capacity = MZ_MAX(1, pArray->m_capacity); while (new_capacity < min_new_capacity) new_capacity *= 2; }\r
+  if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity))) return MZ_FALSE;\r
+  pArray->m_p = pNew_p; pArray->m_capacity = new_capacity;\r
+  return MZ_TRUE;\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing)\r
+{\r
+  if (new_capacity > pArray->m_capacity) { if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing)) return MZ_FALSE; }\r
+  return MZ_TRUE;\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing)\r
+{\r
+  if (new_size > pArray->m_capacity) { if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) return MZ_FALSE; }\r
+  pArray->m_size = new_size;\r
+  return MZ_TRUE;\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n)\r
+{\r
+  return mz_zip_array_reserve(pZip, pArray, pArray->m_size + n, MZ_TRUE);\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n)\r
+{\r
+  size_t orig_size = pArray->m_size; if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) return MZ_FALSE;\r
+  memcpy((mz_uint8*)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size);\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_TIME\r
+static time_t mz_zip_dos_to_time_t(int dos_time, int dos_date)\r
+{\r
+  struct tm tm;\r
+  memset(&tm, 0, sizeof(tm)); tm.tm_isdst = -1;\r
+  tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900; tm.tm_mon = ((dos_date >> 5) & 15) - 1; tm.tm_mday = dos_date & 31;\r
+  tm.tm_hour = (dos_time >> 11) & 31; tm.tm_min = (dos_time >> 5) & 63; tm.tm_sec = (dos_time << 1) & 62;\r
+  return mktime(&tm);\r
+}\r
+\r
+static void mz_zip_time_to_dos_time(time_t time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date)\r
+{\r
+#ifdef _MSC_VER\r
+  struct tm tm_struct;\r
+  struct tm *tm = &tm_struct;\r
+  errno_t err = localtime_s(tm, &time);\r
+  if (err)\r
+  {\r
+    *pDOS_date = 0; *pDOS_time = 0;\r
+    return;\r
+  }\r
+#else\r
+  struct tm *tm = localtime(&time);\r
+#endif\r
+  *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1));\r
+  *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday);\r
+}\r
+#endif\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+static mz_bool mz_zip_get_file_modified_time(const char *pFilename, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date)\r
+{\r
+#ifdef MINIZ_NO_TIME\r
+  (void)pFilename; *pDOS_date = *pDOS_time = 0;\r
+#else\r
+  struct MZ_FILE_STAT_STRUCT file_stat;\r
+  // On Linux with x86 glibc, this call will fail on large files (>= 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh.\r
+  if (MZ_FILE_STAT(pFilename, &file_stat) != 0)\r
+    return MZ_FALSE;\r
+  mz_zip_time_to_dos_time(file_stat.st_mtime, pDOS_time, pDOS_date);\r
+#endif // #ifdef MINIZ_NO_TIME\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_TIME\r
+static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time, time_t modified_time)\r
+{\r
+  struct utimbuf t; t.actime = access_time; t.modtime = modified_time;\r
+  return !utime(pFilename, &t);\r
+}\r
+#endif // #ifndef MINIZ_NO_TIME\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint32 flags)\r
+{\r
+  (void)flags;\r
+  if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID))\r
+    return MZ_FALSE;\r
+\r
+  if (!pZip->m_pAlloc) pZip->m_pAlloc = def_alloc_func;\r
+  if (!pZip->m_pFree) pZip->m_pFree = def_free_func;\r
+  if (!pZip->m_pRealloc) pZip->m_pRealloc = def_realloc_func;\r
+\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_READING;\r
+  pZip->m_archive_size = 0;\r
+  pZip->m_central_directory_file_ofs = 0;\r
+  pZip->m_total_files = 0;\r
+\r
+  if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state))))\r
+    return MZ_FALSE;\r
+  memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32));\r
+  return MZ_TRUE;\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index)\r
+{\r
+  const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE;\r
+  const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index));\r
+  mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS);\r
+  mz_uint8 l = 0, r = 0;\r
+  pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\r
+  pE = pL + MZ_MIN(l_len, r_len);\r
+  while (pL < pE)\r
+  {\r
+    if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR)))\r
+      break;\r
+    pL++; pR++;\r
+  }\r
+  return (pL == pE) ? (l_len < r_len) : (l < r);\r
+}\r
+\r
+#define MZ_SWAP_UINT32(a, b) do { mz_uint32 t = a; a = b; b = t; } MZ_MACRO_END\r
+\r
+// Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.)\r
+static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip)\r
+{\r
+  mz_zip_internal_state *pState = pZip->m_pState;\r
+  const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets;\r
+  const mz_zip_array *pCentral_dir = &pState->m_central_dir;\r
+  mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0);\r
+  const int size = pZip->m_total_files;\r
+  int start = (size - 2) >> 1, end;\r
+  while (start >= 0)\r
+  {\r
+    int child, root = start;\r
+    for ( ; ; )\r
+    {\r
+      if ((child = (root << 1) + 1) >= size)\r
+        break;\r
+      child += (((child + 1) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1])));\r
+      if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child]))\r
+        break;\r
+      MZ_SWAP_UINT32(pIndices[root], pIndices[child]); root = child;\r
+    }\r
+    start--;\r
+  }\r
+\r
+  end = size - 1;\r
+  while (end > 0)\r
+  {\r
+    int child, root = 0;\r
+    MZ_SWAP_UINT32(pIndices[end], pIndices[0]);\r
+    for ( ; ; )\r
+    {\r
+      if ((child = (root << 1) + 1) >= end)\r
+        break;\r
+      child += (((child + 1) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1]));\r
+      if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child]))\r
+        break;\r
+      MZ_SWAP_UINT32(pIndices[root], pIndices[child]); root = child;\r
+    }\r
+    end--;\r
+  }\r
+}\r
+\r
+static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint32 flags)\r
+{\r
+  mz_uint cdir_size, num_this_disk, cdir_disk_index;\r
+  mz_uint64 cdir_ofs;\r
+  mz_int64 cur_file_ofs;\r
+  const mz_uint8 *p;\r
+  mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; mz_uint8 *pBuf = (mz_uint8 *)buf_u32;\r
+  mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);\r
+  // Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there.\r
+  if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  // Find the end of central directory record by scanning the file from the end towards the beginning.\r
+  cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);\r
+  for ( ; ; )\r
+  {\r
+    int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);\r
+    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)\r
+      return MZ_FALSE;\r
+    for (i = n - 4; i >= 0; --i)\r
+      if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)\r
+        break;\r
+    if (i >= 0)\r
+    {\r
+      cur_file_ofs += i;\r
+      break;\r
+    }\r
+    if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))\r
+      return MZ_FALSE;\r
+    cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);\r
+  }\r
+  // Read and verify the end of central directory record.\r
+  if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) ||\r
+      ((pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) != MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS)))\r
+    return MZ_FALSE;\r
+\r
+  num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);\r
+  cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);\r
+  if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1)))\r
+    return MZ_FALSE;\r
+\r
+  if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+\r
+  cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);\r
+  if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)\r
+    return MZ_FALSE;\r
+\r
+  pZip->m_central_directory_file_ofs = cdir_ofs;\r
+\r
+  if (pZip->m_total_files)\r
+  {\r
+     mz_uint i, n;\r
+\r
+    // Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and another to hold the sorted indices.\r
+    if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) ||\r
+        (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE)))\r
+      return MZ_FALSE;\r
+\r
+    if (sort_central_dir)\r
+    {\r
+      if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE))\r
+        return MZ_FALSE;\r
+    }\r
+\r
+    if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size)\r
+      return MZ_FALSE;\r
+\r
+    // Now create an index into the central directory file records, do some basic sanity checking on each record, and check for zip64 entries (which are not yet supported).\r
+    p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;\r
+    for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i)\r
+    {\r
+      mz_uint total_header_size, comp_size, decomp_size, disk_index;\r
+      if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))\r
+        return MZ_FALSE;\r
+      MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);\r
+      if (sort_central_dir)\r
+        MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i;\r
+      comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\r
+      decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\r
+      if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) || (comp_size == 0xFFFFFFFF))\r
+        return MZ_FALSE;\r
+      disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);\r
+      if ((disk_index != num_this_disk) && (disk_index != 1))\r
+        return MZ_FALSE;\r
+      if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)\r
+        return MZ_FALSE;\r
+      if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n)\r
+        return MZ_FALSE;\r
+      n -= total_header_size; p += total_header_size;\r
+    }\r
+  }\r
+\r
+  if (sort_central_dir)\r
+    mz_zip_reader_sort_central_dir_offsets_by_filename(pZip);\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint32 flags)\r
+{\r
+  if ((!pZip) || (!pZip->m_pRead))\r
+    return MZ_FALSE;\r
+  if (!mz_zip_reader_init_internal(pZip, flags))\r
+    return MZ_FALSE;\r
+  pZip->m_archive_size = size;\r
+  if (!mz_zip_reader_read_central_dir(pZip, flags))\r
+  {\r
+    mz_zip_reader_end(pZip);\r
+    return MZ_FALSE;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+\r
+static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)\r
+{\r
+  mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\r
+  size_t s = (file_ofs >= pZip->m_archive_size) ? 0 : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n);\r
+  memcpy(pBuf, (const mz_uint8 *)pZip->m_pState->m_pMem + file_ofs, s);\r
+  return s;\r
+}\r
+\r
+mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint32 flags)\r
+{\r
+  if (!mz_zip_reader_init_internal(pZip, flags))\r
+    return MZ_FALSE;\r
+  pZip->m_archive_size = size;\r
+  pZip->m_pRead = mz_zip_mem_read_func;\r
+  pZip->m_pIO_opaque = pZip;\r
+#ifdef __cplusplus\r
+  pZip->m_pState->m_pMem = const_cast<void *>(pMem);\r
+#else\r
+  pZip->m_pState->m_pMem = (void *)pMem;\r
+#endif\r
+  pZip->m_pState->m_mem_size = size;\r
+  if (!mz_zip_reader_read_central_dir(pZip, flags))\r
+  {\r
+    mz_zip_reader_end(pZip);\r
+    return MZ_FALSE;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)\r
+{\r
+  mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\r
+  mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile);\r
+  if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET))))\r
+    return 0;\r
+  return MZ_FREAD(pBuf, 1, n, pZip->m_pState->m_pFile);\r
+}\r
+\r
+mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags)\r
+{\r
+  mz_uint64 file_size;\r
+  MZ_FILE *pFile = MZ_FOPEN(pFilename, "rb");\r
+  if (!pFile)\r
+    return MZ_FALSE;\r
+  if (MZ_FSEEK64(pFile, 0, SEEK_END))\r
+  {\r
+    MZ_FCLOSE(pFile);\r
+    return MZ_FALSE;\r
+  }\r
+  file_size = MZ_FTELL64(pFile);\r
+  if (!mz_zip_reader_init_internal(pZip, flags))\r
+  {\r
+    MZ_FCLOSE(pFile);\r
+    return MZ_FALSE;\r
+  }\r
+  pZip->m_pRead = mz_zip_file_read_func;\r
+  pZip->m_pIO_opaque = pZip;\r
+  pZip->m_pState->m_pFile = pFile;\r
+  pZip->m_archive_size = file_size;\r
+  if (!mz_zip_reader_read_central_dir(pZip, flags))\r
+  {\r
+    mz_zip_reader_end(pZip);\r
+    return MZ_FALSE;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip)\r
+{\r
+  return pZip ? pZip->m_total_files : 0;\r
+}\r
+\r
+static MZ_FORCEINLINE const mz_uint8 *mz_zip_reader_get_cdh(mz_zip_archive *pZip, mz_uint file_index)\r
+{\r
+  if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\r
+    return NULL;\r
+  return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index));\r
+}\r
+\r
+mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index)\r
+{\r
+  mz_uint m_bit_flag;\r
+  const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);\r
+  if (!p)\r
+    return MZ_FALSE;\r
+  m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\r
+  return (m_bit_flag & 1);\r
+}\r
+\r
+mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index)\r
+{\r
+  mz_uint filename_len, external_attr;\r
+  const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);\r
+  if (!p)\r
+    return MZ_FALSE;\r
+\r
+  // First see if the filename ends with a '/' character.\r
+  filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\r
+  if (filename_len)\r
+  {\r
+    if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/')\r
+      return MZ_TRUE;\r
+  }\r
+\r
+  // Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct.\r
+  // Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field.\r
+  // FIXME: Remove this check? Is it necessary - we already check the filename.\r
+  external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS);\r
+  if ((external_attr & 0x10) != 0)\r
+    return MZ_TRUE;\r
+\r
+  return MZ_FALSE;\r
+}\r
+\r
+mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat)\r
+{\r
+  mz_uint n;\r
+  const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);\r
+  if ((!p) || (!pStat))\r
+    return MZ_FALSE;\r
+\r
+  // Unpack the central directory record.\r
+  pStat->m_file_index = file_index;\r
+  pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index);\r
+  pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS);\r
+  pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS);\r
+  pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\r
+  pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS);\r
+#ifndef MINIZ_NO_TIME\r
+  pStat->m_time = mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS));\r
+#endif\r
+  pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS);\r
+  pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\r
+  pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\r
+  pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS);\r
+  pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS);\r
+  pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);\r
+\r
+  // Copy as much of the filename and comment as possible.\r
+  n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1);\r
+  memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); pStat->m_filename[n] = '\0';\r
+\r
+  n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1);\r
+  pStat->m_comment_size = n;\r
+  memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n); pStat->m_comment[n] = '\0';\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size)\r
+{\r
+  mz_uint n;\r
+  const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);\r
+  if (!p) { if (filename_buf_size) pFilename[0] = '\0'; return 0; }\r
+  n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\r
+  if (filename_buf_size)\r
+  {\r
+    n = MZ_MIN(n, filename_buf_size - 1);\r
+    memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n);\r
+    pFilename[n] = '\0';\r
+  }\r
+  return n + 1;\r
+}\r
+\r
+static MZ_FORCEINLINE mz_bool mz_zip_reader_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags)\r
+{\r
+  mz_uint i;\r
+  if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE)\r
+    return 0 == memcmp(pA, pB, len);\r
+  for (i = 0; i < len; ++i)\r
+    if (MZ_TOLOWER(pA[i]) != MZ_TOLOWER(pB[i]))\r
+      return MZ_FALSE;\r
+  return MZ_TRUE;\r
+}\r
+\r
+static MZ_FORCEINLINE int mz_zip_reader_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len)\r
+{\r
+  const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE;\r
+  mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS);\r
+  mz_uint8 l = 0, r = 0;\r
+  pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\r
+  pE = pL + MZ_MIN(l_len, r_len);\r
+  while (pL < pE)\r
+  {\r
+    if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR)))\r
+      break;\r
+    pL++; pR++;\r
+  }\r
+  return (pL == pE) ? (int)(l_len - r_len) : (l - r);\r
+}\r
+\r
+static int mz_zip_reader_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename)\r
+{\r
+  mz_zip_internal_state *pState = pZip->m_pState;\r
+  const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets;\r
+  const mz_zip_array *pCentral_dir = &pState->m_central_dir;\r
+  mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0);\r
+  const int size = pZip->m_total_files;\r
+  const mz_uint filename_len = (mz_uint)strlen(pFilename);\r
+  int l = 0, h = size - 1;\r
+  while (l <= h)\r
+  {\r
+    int m = (l + h) >> 1, file_index = pIndices[m], comp = mz_zip_reader_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len);\r
+    if (!comp)\r
+      return file_index;\r
+    else if (comp < 0)\r
+      l = m + 1;\r
+    else\r
+      h = m - 1;\r
+  }\r
+  return -1;\r
+}\r
+\r
+int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags)\r
+{\r
+  mz_uint file_index; size_t name_len, comment_len;\r
+  if ((!pZip) || (!pZip->m_pState) || (!pName) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\r
+    return -1;\r
+  if (((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size))\r
+    return mz_zip_reader_locate_file_binary_search(pZip, pName);\r
+  name_len = strlen(pName); if (name_len > 0xFFFF) return -1;\r
+  comment_len = pComment ? strlen(pComment) : 0; if (comment_len > 0xFFFF) return -1;\r
+  for (file_index = 0; file_index < pZip->m_total_files; file_index++)\r
+  {\r
+    const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index));\r
+    mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS);\r
+    const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\r
+    if (filename_len < name_len)\r
+      continue;\r
+    if (comment_len)\r
+    {\r
+      mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS);\r
+      const char *pFile_comment = pFilename + filename_len + file_extra_len;\r
+      if ((file_comment_len != comment_len) || (!mz_zip_reader_string_equal(pComment, pFile_comment, file_comment_len, flags)))\r
+        continue;\r
+    }\r
+    if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len))\r
+    {\r
+      int ofs = filename_len - 1;\r
+      do\r
+      {\r
+        if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || (pFilename[ofs] == ':'))\r
+          break;\r
+      } while (--ofs >= 0);\r
+      ofs++;\r
+      pFilename += ofs; filename_len -= ofs;\r
+    }\r
+    if ((filename_len == name_len) && (mz_zip_reader_string_equal(pName, pFilename, filename_len, flags)))\r
+      return file_index;\r
+  }\r
+  return -1;\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)\r
+{\r
+  int status = TINFL_STATUS_DONE;\r
+  mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail;\r
+  mz_zip_archive_file_stat file_stat;\r
+  void *pRead_buf;\r
+  mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\r
+  tinfl_decompressor inflator;\r
+\r
+  if ((buf_size) && (!pBuf))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\r
+    return MZ_FALSE;\r
+\r
+  // Empty file, or a directory (but not always a directory - I've seen odd zips with directories that have compressed data which inflates to 0 bytes)\r
+  if (!file_stat.m_comp_size)\r
+    return MZ_TRUE;\r
+\r
+  // Entry is a subdirectory (I've seen old zips with dir entries which have compressed deflate data which inflates to 0 bytes, but these entries claim to uncompress to 512 bytes in the headers).\r
+  // I'm torn how to handle this case - should it fail instead?\r
+  if (mz_zip_reader_is_file_a_directory(pZip, file_index))\r
+    return MZ_TRUE;\r
+\r
+  // Encryption and patch files are not supported.\r
+  if (file_stat.m_bit_flag & (1 | 32))\r
+    return MZ_FALSE;\r
+\r
+  // This function only supports stored and deflate.\r
+  if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED))\r
+    return MZ_FALSE;\r
+\r
+  // Ensure supplied output buffer is large enough.\r
+  needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size;\r
+  if (buf_size < needed_size)\r
+    return MZ_FALSE;\r
+\r
+  // Read and parse the local directory entry.\r
+  cur_file_ofs = file_stat.m_local_header_ofs;\r
+  if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\r
+    return MZ_FALSE;\r
+\r
+  cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\r
+  if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size)\r
+    return MZ_FALSE;\r
+\r
+  if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method))\r
+  {\r
+    // The file is stored or the caller has requested the compressed data.\r
+    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size)\r
+      return MZ_FALSE;\r
+    return ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) != 0) || (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) == file_stat.m_crc32);\r
+  }\r
+\r
+  // Decompress the file either directly from memory or from a file input buffer.\r
+  tinfl_init(&inflator);\r
+\r
+  if (pZip->m_pState->m_pMem)\r
+  {\r
+    // Read directly from the archive in memory.\r
+    pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs;\r
+    read_buf_size = read_buf_avail = file_stat.m_comp_size;\r
+    comp_remaining = 0;\r
+  }\r
+  else if (pUser_read_buf)\r
+  {\r
+    // Use a user provided read buffer.\r
+    if (!user_read_buf_size)\r
+      return MZ_FALSE;\r
+    pRead_buf = (mz_uint8 *)pUser_read_buf;\r
+    read_buf_size = user_read_buf_size;\r
+    read_buf_avail = 0;\r
+    comp_remaining = file_stat.m_comp_size;\r
+  }\r
+  else\r
+  {\r
+    // Temporarily allocate a read buffer.\r
+    read_buf_size = MZ_MIN(file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE);\r
+#ifdef _MSC_VER\r
+    if (((0, sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF))\r
+#else\r
+    if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF))\r
+#endif\r
+      return MZ_FALSE;\r
+    if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size)))\r
+      return MZ_FALSE;\r
+    read_buf_avail = 0;\r
+    comp_remaining = file_stat.m_comp_size;\r
+  }\r
+\r
+  do\r
+  {\r
+    size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs);\r
+    if ((!read_buf_avail) && (!pZip->m_pState->m_pMem))\r
+    {\r
+      read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\r
+      if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\r
+      {\r
+        status = TINFL_STATUS_FAILED;\r
+        break;\r
+      }\r
+      cur_file_ofs += read_buf_avail;\r
+      comp_remaining -= read_buf_avail;\r
+      read_buf_ofs = 0;\r
+    }\r
+    in_buf_size = (size_t)read_buf_avail;\r
+    status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0));\r
+    read_buf_avail -= in_buf_size;\r
+    read_buf_ofs += in_buf_size;\r
+    out_buf_ofs += out_buf_size;\r
+  } while (status == TINFL_STATUS_NEEDS_MORE_INPUT);\r
+\r
+  if (status == TINFL_STATUS_DONE)\r
+  {\r
+    // Make sure the entire file was decompressed, and check its CRC.\r
+    if ((out_buf_ofs != file_stat.m_uncomp_size) || (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32))\r
+      status = TINFL_STATUS_FAILED;\r
+  }\r
+\r
+  if ((!pZip->m_pState->m_pMem) && (!pUser_read_buf))\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+\r
+  return status == TINFL_STATUS_DONE;\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)\r
+{\r
+  int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags);\r
+  if (file_index < 0)\r
+    return MZ_FALSE;\r
+  return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size);\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags)\r
+{\r
+  return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, NULL, 0);\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags)\r
+{\r
+  return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, buf_size, flags, NULL, 0);\r
+}\r
+\r
+void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags)\r
+{\r
+  mz_uint64 comp_size, uncomp_size, alloc_size;\r
+  const mz_uint8 *p = mz_zip_reader_get_cdh(pZip, file_index);\r
+  void *pBuf;\r
+\r
+  if (pSize)\r
+    *pSize = 0;\r
+  if (!p)\r
+    return NULL;\r
+\r
+  comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\r
+  uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\r
+\r
+  alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? comp_size : uncomp_size;\r
+#ifdef _MSC_VER\r
+  if (((0, sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF))\r
+#else\r
+  if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF))\r
+#endif\r
+    return NULL;\r
+  if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size)))\r
+    return NULL;\r
+\r
+  if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, flags))\r
+  {\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+    return NULL;\r
+  }\r
+\r
+  if (pSize) *pSize = (size_t)alloc_size;\r
+  return pBuf;\r
+}\r
+\r
+void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags)\r
+{\r
+  int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags);\r
+  if (file_index < 0)\r
+  {\r
+    if (pSize) *pSize = 0;\r
+    return MZ_FALSE;\r
+  }\r
+  return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags);\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)\r
+{\r
+  int status = TINFL_STATUS_DONE; mz_uint file_crc32 = MZ_CRC32_INIT;\r
+  mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs;\r
+  mz_zip_archive_file_stat file_stat;\r
+  void *pRead_buf = NULL; void *pWrite_buf = NULL;\r
+  mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\r
+\r
+  if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\r
+    return MZ_FALSE;\r
+\r
+  // Empty file, or a directory (but not always a directory - I've seen odd zips with directories that have compressed data which inflates to 0 bytes)\r
+  if (!file_stat.m_comp_size)\r
+    return MZ_TRUE;\r
+\r
+  // Entry is a subdirectory (I've seen old zips with dir entries which have compressed deflate data which inflates to 0 bytes, but these entries claim to uncompress to 512 bytes in the headers).\r
+  // I'm torn how to handle this case - should it fail instead?\r
+  if (mz_zip_reader_is_file_a_directory(pZip, file_index))\r
+    return MZ_TRUE;\r
+\r
+  // Encryption and patch files are not supported.\r
+  if (file_stat.m_bit_flag & (1 | 32))\r
+    return MZ_FALSE;\r
+\r
+  // This function only supports stored and deflate.\r
+  if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED))\r
+    return MZ_FALSE;\r
+\r
+  // Read and parse the local directory entry.\r
+  cur_file_ofs = file_stat.m_local_header_ofs;\r
+  if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\r
+    return MZ_FALSE;\r
+\r
+  cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\r
+  if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size)\r
+    return MZ_FALSE;\r
+\r
+  // Decompress the file either directly from memory or from a file input buffer.\r
+  if (pZip->m_pState->m_pMem)\r
+  {\r
+    pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs;\r
+    read_buf_size = read_buf_avail = file_stat.m_comp_size;\r
+    comp_remaining = 0;\r
+  }\r
+  else\r
+  {\r
+    read_buf_size = MZ_MIN(file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE);\r
+    if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size)))\r
+      return MZ_FALSE;\r
+    read_buf_avail = 0;\r
+    comp_remaining = file_stat.m_comp_size;\r
+  }\r
+\r
+  if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method))\r
+  {\r
+    // The file is stored or the caller has requested the compressed data.\r
+    if (pZip->m_pState->m_pMem)\r
+    {\r
+#ifdef _MSC_VER\r
+      if (((0, sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > 0xFFFFFFFF))\r
+#else\r
+      if (((sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > 0xFFFFFFFF))\r
+#endif\r
+        return MZ_FALSE;\r
+      if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)file_stat.m_comp_size) != file_stat.m_comp_size)\r
+        status = TINFL_STATUS_FAILED;\r
+      else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\r
+        file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size);\r
+      cur_file_ofs += file_stat.m_comp_size;\r
+      out_buf_ofs += file_stat.m_comp_size;\r
+      comp_remaining = 0;\r
+    }\r
+    else\r
+    {\r
+      while (comp_remaining)\r
+      {\r
+        read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\r
+        if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\r
+        {\r
+          status = TINFL_STATUS_FAILED;\r
+          break;\r
+        }\r
+\r
+        if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\r
+          file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail);\r
+\r
+        if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\r
+        {\r
+          status = TINFL_STATUS_FAILED;\r
+          break;\r
+        }\r
+        cur_file_ofs += read_buf_avail;\r
+        out_buf_ofs += read_buf_avail;\r
+        comp_remaining -= read_buf_avail;\r
+      }\r
+    }\r
+  }\r
+  else\r
+  {\r
+    tinfl_decompressor inflator;\r
+    tinfl_init(&inflator);\r
+\r
+    if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE)))\r
+      status = TINFL_STATUS_FAILED;\r
+    else\r
+    {\r
+      do\r
+      {\r
+        mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\r
+        size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\r
+        if ((!read_buf_avail) && (!pZip->m_pState->m_pMem))\r
+        {\r
+          read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\r
+          if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\r
+          {\r
+            status = TINFL_STATUS_FAILED;\r
+            break;\r
+          }\r
+          cur_file_ofs += read_buf_avail;\r
+          comp_remaining -= read_buf_avail;\r
+          read_buf_ofs = 0;\r
+        }\r
+\r
+        in_buf_size = (size_t)read_buf_avail;\r
+        status = tinfl_decompress(&inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0);\r
+        read_buf_avail -= in_buf_size;\r
+        read_buf_ofs += in_buf_size;\r
+\r
+        if (out_buf_size)\r
+        {\r
+          if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size)\r
+          {\r
+            status = TINFL_STATUS_FAILED;\r
+            break;\r
+          }\r
+          file_crc32 = (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size);\r
+          if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size)\r
+          {\r
+            status = TINFL_STATUS_FAILED;\r
+            break;\r
+          }\r
+        }\r
+      } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || (status == TINFL_STATUS_HAS_MORE_OUTPUT));\r
+    }\r
+  }\r
+\r
+  if ((status == TINFL_STATUS_DONE) && (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)))\r
+  {\r
+    // Make sure the entire file was decompressed, and check its CRC.\r
+    if ((out_buf_ofs != file_stat.m_uncomp_size) || (file_crc32 != file_stat.m_crc32))\r
+      status = TINFL_STATUS_FAILED;\r
+  }\r
+\r
+  if (!pZip->m_pState->m_pMem)\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+  if (pWrite_buf)\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pWrite_buf);\r
+\r
+  return status == TINFL_STATUS_DONE;\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)\r
+{\r
+  int file_index = mz_zip_reader_locate_file(pZip, pFilename, NULL, flags);\r
+  if (file_index < 0)\r
+    return MZ_FALSE;\r
+  return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, flags);\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n)\r
+{\r
+  (void)ofs; return MZ_FWRITE(pBuf, 1, n, (MZ_FILE*)pOpaque);\r
+}\r
+\r
+mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags)\r
+{\r
+  mz_bool status;\r
+  mz_zip_archive_file_stat file_stat;\r
+  MZ_FILE *pFile;\r
+  if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\r
+    return MZ_FALSE;\r
+  pFile = MZ_FOPEN(pDst_filename, "wb");\r
+  if (!pFile)\r
+    return MZ_FALSE;\r
+  status = mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags);\r
+  if (MZ_FCLOSE(pFile) == EOF)\r
+    return MZ_FALSE;\r
+#ifndef MINIZ_NO_TIME\r
+  if (status)\r
+    mz_zip_set_file_times(pDst_filename, file_stat.m_time, file_stat.m_time);\r
+#endif\r
+  return status;\r
+}\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+mz_bool mz_zip_reader_end(mz_zip_archive *pZip)\r
+{\r
+  if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\r
+    return MZ_FALSE;\r
+\r
+  if (pZip->m_pState)\r
+  {\r
+    mz_zip_internal_state *pState = pZip->m_pState; pZip->m_pState = NULL;\r
+    mz_zip_array_clear(pZip, &pState->m_central_dir);\r
+    mz_zip_array_clear(pZip, &pState->m_central_dir_offsets);\r
+    mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+    if (pState->m_pFile)\r
+    {\r
+      MZ_FCLOSE(pState->m_pFile);\r
+      pState->m_pFile = NULL;\r
+    }\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\r
+  }\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_INVALID;\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags)\r
+{\r
+  int file_index = mz_zip_reader_locate_file(pZip, pArchive_filename, NULL, flags);\r
+  if (file_index < 0)\r
+    return MZ_FALSE;\r
+  return mz_zip_reader_extract_to_file(pZip, file_index, pDst_filename, flags);\r
+}\r
+#endif\r
+\r
+// ------------------- .ZIP archive writing\r
+\r
+#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\r
+\r
+static void mz_write_le16(mz_uint8 *p, mz_uint16 v) { p[0] = (mz_uint8)v; p[1] = (mz_uint8)(v >> 8); }\r
+static void mz_write_le32(mz_uint8 *p, mz_uint32 v) { p[0] = (mz_uint8)v; p[1] = (mz_uint8)(v >> 8); p[2] = (mz_uint8)(v >> 16); p[3] = (mz_uint8)(v >> 24); }\r
+#define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v))\r
+#define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v))\r
+\r
+mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size)\r
+{\r
+  if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID))\r
+    return MZ_FALSE;\r
+\r
+  if (pZip->m_file_offset_alignment)\r
+  {\r
+    // Ensure user specified file offset alignment is a power of 2.\r
+    if (pZip->m_file_offset_alignment & (pZip->m_file_offset_alignment - 1))\r
+      return MZ_FALSE;\r
+  }\r
+\r
+  if (!pZip->m_pAlloc) pZip->m_pAlloc = def_alloc_func;\r
+  if (!pZip->m_pFree) pZip->m_pFree = def_free_func;\r
+  if (!pZip->m_pRealloc) pZip->m_pRealloc = def_realloc_func;\r
+\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_WRITING;\r
+  pZip->m_archive_size = existing_size;\r
+  pZip->m_central_directory_file_ofs = 0;\r
+  pZip->m_total_files = 0;\r
+\r
+  if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state))))\r
+    return MZ_FALSE;\r
+  memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32));\r
+  MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32));\r
+  return MZ_TRUE;\r
+}\r
+\r
+static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)\r
+{\r
+  mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\r
+  mz_zip_internal_state *pState = pZip->m_pState;\r
+  mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size);\r
+#ifdef _MSC_VER\r
+  if ((!n) || ((0, sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF)))\r
+#else\r
+  if ((!n) || ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF)))\r
+#endif\r
+    return 0;\r
+  if (new_size > pState->m_mem_capacity)\r
+  {\r
+    void *pNew_block;\r
+    size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); while (new_capacity < new_size) new_capacity *= 2;\r
+    if (NULL == (pNew_block = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity)))\r
+      return 0;\r
+    pState->m_pMem = pNew_block; pState->m_mem_capacity = new_capacity;\r
+  }\r
+  memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n);\r
+  pState->m_mem_size = (size_t)new_size;\r
+  return n;\r
+}\r
+\r
+mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size)\r
+{\r
+  pZip->m_pWrite = mz_zip_heap_write_func;\r
+  pZip->m_pIO_opaque = pZip;\r
+  if (!mz_zip_writer_init(pZip, size_to_reserve_at_beginning))\r
+    return MZ_FALSE;\r
+  if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning)))\r
+  {\r
+    if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, initial_allocation_size)))\r
+    {\r
+      mz_zip_writer_end(pZip);\r
+      return MZ_FALSE;\r
+    }\r
+    pZip->m_pState->m_mem_capacity = initial_allocation_size;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)\r
+{\r
+  mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\r
+  mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile);\r
+  if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET))))\r
+    return 0;\r
+  return MZ_FWRITE(pBuf, 1, n, pZip->m_pState->m_pFile);\r
+}\r
+\r
+mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning)\r
+{\r
+  MZ_FILE *pFile;\r
+  pZip->m_pWrite = mz_zip_file_write_func;\r
+  pZip->m_pIO_opaque = pZip;\r
+  if (!mz_zip_writer_init(pZip, size_to_reserve_at_beginning))\r
+    return MZ_FALSE;\r
+  if (NULL == (pFile = MZ_FOPEN(pFilename, "wb")))\r
+  {\r
+    mz_zip_writer_end(pZip);\r
+    return MZ_FALSE;\r
+  }\r
+  pZip->m_pState->m_pFile = pFile;\r
+  if (size_to_reserve_at_beginning)\r
+  {\r
+    mz_uint64 cur_ofs = 0; char buf[4096]; MZ_CLEAR_OBJ(buf);\r
+    do\r
+    {\r
+      size_t n = (size_t)MZ_MIN(sizeof(buf), size_to_reserve_at_beginning);\r
+      if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n)\r
+      {\r
+        mz_zip_writer_end(pZip);\r
+        return MZ_FALSE;\r
+      }\r
+      cur_ofs += n; size_to_reserve_at_beginning -= n;\r
+    } while (size_to_reserve_at_beginning);\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename)\r
+{\r
+  mz_zip_internal_state *pState;\r
+  if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\r
+    return MZ_FALSE;\r
+  // No sense in trying to write to an archive that's already at the support max size\r
+  if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  pState = pZip->m_pState;\r
+\r
+  if (pState->m_pFile)\r
+  {\r
+#ifdef MINIZ_NO_STDIO\r
+    pFilename; return MZ_FALSE;\r
+#else\r
+    // Archive is being read from stdio - try to reopen as writable.\r
+    if (pZip->m_pIO_opaque != pZip)\r
+      return MZ_FALSE;\r
+    if (!pFilename)\r
+      return MZ_FALSE;\r
+    pZip->m_pWrite = mz_zip_file_write_func;\r
+    if (NULL == (pState->m_pFile = MZ_FREOPEN(pFilename, "r+b", pState->m_pFile)))\r
+    {\r
+      // The mz_zip_archive is now in a bogus state because pState->m_pFile is NULL, so just close it.\r
+      mz_zip_reader_end(pZip);\r
+      return MZ_FALSE;\r
+    }\r
+#endif // #ifdef MINIZ_NO_STDIO\r
+  }\r
+  else if (pState->m_pMem)\r
+  {\r
+    // Archive lives in a memory block. Assume it's from the heap that we can resize using the realloc callback.\r
+    if (pZip->m_pIO_opaque != pZip)\r
+      return MZ_FALSE;\r
+    pState->m_mem_capacity = pState->m_mem_size;\r
+    pZip->m_pWrite = mz_zip_heap_write_func;\r
+  }\r
+  // Archive is being read via a user provided read function - make sure the user has specified a write function too.\r
+  else if (!pZip->m_pWrite)\r
+    return MZ_FALSE;\r
+\r
+  // Start writing new files at the archive's current central directory location.\r
+  pZip->m_archive_size = pZip->m_central_directory_file_ofs;\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_WRITING;\r
+  pZip->m_central_directory_file_ofs = 0;\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags)\r
+{\r
+  return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, level_and_flags, 0, 0);\r
+}\r
+\r
+typedef struct\r
+{\r
+  mz_zip_archive *m_pZip;\r
+  mz_uint64 m_cur_archive_file_ofs;\r
+  mz_uint64 m_comp_size;\r
+} mz_zip_writer_add_state;\r
+\r
+static mz_bool mz_zip_writer_add_put_buf_callback(const void* pBuf, int len, void *pUser)\r
+{\r
+  mz_zip_writer_add_state *pState = (mz_zip_writer_add_state *)pUser;\r
+  if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, pState->m_cur_archive_file_ofs, pBuf, len) != len)\r
+    return MZ_FALSE;\r
+  pState->m_cur_archive_file_ofs += len;\r
+  pState->m_comp_size += len;\r
+  return MZ_TRUE;\r
+}\r
+\r
+static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date)\r
+{\r
+  (void)pZip;\r
+  memset(pDst, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_SIG_OFS, MZ_ZIP_LOCAL_DIR_HEADER_SIG);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_VERSION_NEEDED_OFS, method ? 20 : 0);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_BIT_FLAG_OFS, bit_flags);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_METHOD_OFS, method);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_TIME_OFS, dos_time);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_DATE_OFS, dos_date);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_CRC32_OFS, uncomp_crc32);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS, comp_size);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS, uncomp_size);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILENAME_LEN_OFS, filename_size);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_EXTRA_LEN_OFS, extra_size);\r
+  return MZ_TRUE;\r
+}\r
+\r
+static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes)\r
+{\r
+  (void)pZip;\r
+  memset(pDst, 0, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_SIG_OFS, MZ_ZIP_CENTRAL_DIR_HEADER_SIG);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_NEEDED_OFS, method ? 20 : 0);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_BIT_FLAG_OFS, bit_flags);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_METHOD_OFS, method);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_TIME_OFS, dos_time);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_DATE_OFS, dos_date);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_CRC32_OFS, uncomp_crc32);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, comp_size);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, uncomp_size);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILENAME_LEN_OFS, filename_size);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_EXTRA_LEN_OFS, extra_size);\r
+  MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_COMMENT_LEN_OFS, comment_size);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS, ext_attributes);\r
+  MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_header_ofs);\r
+  return MZ_TRUE;\r
+}\r
+\r
+static mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, mz_uint64 local_header_ofs, mz_uint32 ext_attributes)\r
+{\r
+  mz_zip_internal_state *pState = pZip->m_pState;\r
+  mz_uint32 central_dir_ofs = (mz_uint32)pState->m_central_dir.m_size;\r
+  size_t orig_central_dir_size = pState->m_central_dir.m_size;\r
+  mz_uint8 central_dir_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE];\r
+\r
+  // No zip64 support yet\r
+  if ((local_header_ofs > 0xFFFFFFFF) || (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + comment_size) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, extra_size, comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes))\r
+    return MZ_FALSE;\r
+\r
+  if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) ||\r
+      (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, filename_size)) ||\r
+      (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, extra_size)) ||\r
+      (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, comment_size)) ||\r
+      (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &central_dir_ofs, 1)))\r
+  {\r
+    // Try to push the central directory array back into its original state.\r
+    mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\r
+    return MZ_FALSE;\r
+  }\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name)\r
+{\r
+  // Basic ZIP archive filename validity checks: Valid filenames cannot start with a forward slash, cannot contain a drive letter, and cannot use DOS-style backward slashes.\r
+  if (*pArchive_name == '/')\r
+    return MZ_FALSE;\r
+  while (*pArchive_name)\r
+  {\r
+    if ((*pArchive_name == '\\') || (*pArchive_name == ':'))\r
+      return MZ_FALSE;\r
+    pArchive_name++;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+\r
+static mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip)\r
+{\r
+  mz_uint32 n;\r
+  if (!pZip->m_file_offset_alignment)\r
+    return 0;\r
+  n = (mz_uint32)(pZip->m_archive_size & (pZip->m_file_offset_alignment - 1));\r
+  return (pZip->m_file_offset_alignment - n) & (pZip->m_file_offset_alignment - 1);\r
+}\r
+\r
+static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n)\r
+{\r
+  char buf[4096];\r
+  memset(buf, 0, MZ_MIN(sizeof(buf), n));\r
+  while (n)\r
+  {\r
+    mz_uint32 s = MZ_MIN(sizeof(buf), n);\r
+    if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_file_ofs, buf, s) != s)\r
+      return MZ_FALSE;\r
+    cur_file_ofs += s; n -= s;\r
+  }\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32)\r
+{\r
+  mz_uint16 method = 0, dos_time = 0, dos_date = 0;\r
+  mz_uint level, ext_attributes = 0, num_alignment_padding_bytes;\r
+  mz_uint64 local_dir_header_ofs = pZip->m_archive_size, cur_archive_file_ofs = pZip->m_archive_size, comp_size = 0;\r
+  size_t archive_name_size;\r
+  mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE];\r
+  tdefl_compressor *pComp = NULL;\r
+  mz_bool store_data_uncompressed;\r
+  mz_zip_internal_state *pState;\r
+\r
+  if ((int)level_and_flags < 0)\r
+    level_and_flags = MZ_DEFAULT_LEVEL;\r
+  level = level_and_flags & 0xF;\r
+  store_data_uncompressed = ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA));\r
+\r
+  if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || (!pArchive_name) || ((comment_size) && (!pComment)) || (pZip->m_total_files == 0xFFFF) || (level > MZ_UBER_COMPRESSION))\r
+    return MZ_FALSE;\r
+\r
+  pState = pZip->m_pState;\r
+\r
+  if ((!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (uncomp_size))\r
+    return MZ_FALSE;\r
+  // No zip64 support yet\r
+  if ((buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+  if (!mz_zip_writer_validate_archive_name(pArchive_name))\r
+    return MZ_FALSE;\r
+\r
+#ifndef MINIZ_NO_TIME\r
+  {\r
+    time_t cur_time; time(&cur_time);\r
+    mz_zip_time_to_dos_time(cur_time, &dos_time, &dos_date);\r
+  }\r
+#endif // #ifndef MINIZ_NO_TIME\r
+\r
+  archive_name_size = strlen(pArchive_name);\r
+  if (archive_name_size > 0xFFFF)\r
+    return MZ_FALSE;\r
+\r
+  num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\r
+\r
+  // no zip64 support yet\r
+  if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + comment_size + archive_name_size) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/'))\r
+  {\r
+    // Set DOS Subdirectory attribute bit.\r
+    ext_attributes |= 0x10;\r
+    // Subdirectories cannot contain data.\r
+    if ((buf_size) || (uncomp_size))\r
+      return MZ_FALSE;\r
+  }\r
+\r
+  // Try to do any allocations before writing to the archive, so if an allocation fails the file remains unmodified. (A good idea if we're doing an in-place modification.)\r
+  if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size)) || (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1)))\r
+    return MZ_FALSE;\r
+\r
+  if ((!store_data_uncompressed) && (buf_size))\r
+  {\r
+    if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor))))\r
+      return MZ_FALSE;\r
+  }\r
+\r
+  if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header)))\r
+  {\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+    return MZ_FALSE;\r
+  }\r
+  local_dir_header_ofs += num_alignment_padding_bytes;\r
+  if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); }\r
+  cur_archive_file_ofs += num_alignment_padding_bytes + sizeof(local_dir_header);\r
+\r
+  MZ_CLEAR_OBJ(local_dir_header);\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\r
+  {\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+    return MZ_FALSE;\r
+  }\r
+  cur_archive_file_ofs += archive_name_size;\r
+\r
+  if (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\r
+  {\r
+    uncomp_crc32 = (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8*)pBuf, buf_size);\r
+    uncomp_size = buf_size;\r
+    if (uncomp_size <= 3)\r
+    {\r
+      level = 0;\r
+      store_data_uncompressed = MZ_TRUE;\r
+    }\r
+  }\r
+\r
+  if (store_data_uncompressed)\r
+  {\r
+    if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, buf_size) != buf_size)\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+      return MZ_FALSE;\r
+    }\r
+\r
+    cur_archive_file_ofs += buf_size;\r
+    comp_size = buf_size;\r
+\r
+    if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)\r
+      method = MZ_DEFLATED;\r
+  }\r
+  else if (buf_size)\r
+  {\r
+    mz_zip_writer_add_state state;\r
+\r
+    state.m_pZip = pZip;\r
+    state.m_cur_archive_file_ofs = cur_archive_file_ofs;\r
+    state.m_comp_size = 0;\r
+\r
+    if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) ||\r
+        (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != TDEFL_STATUS_DONE))\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+      return MZ_FALSE;\r
+    }\r
+\r
+    comp_size = state.m_comp_size;\r
+    cur_archive_file_ofs = state.m_cur_archive_file_ofs;\r
+\r
+    method = MZ_DEFLATED;\r
+  }\r
+\r
+  pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+  pComp = NULL;\r
+\r
+  // no zip64 support yet\r
+  if ((comp_size > 0xFFFFFFFF) || (cur_archive_file_ofs > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date))\r
+    return MZ_FALSE;\r
+\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date, local_dir_header_ofs, ext_attributes))\r
+    return MZ_FALSE;\r
+\r
+  pZip->m_total_files++;\r
+  pZip->m_archive_size = cur_archive_file_ofs;\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)\r
+{\r
+  mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes;\r
+  mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0;\r
+  mz_uint64 local_dir_header_ofs = pZip->m_archive_size, cur_archive_file_ofs = pZip->m_archive_size, uncomp_size = 0, comp_size = 0;\r
+  size_t archive_name_size;\r
+  mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE];\r
+  MZ_FILE *pSrc_file = NULL;\r
+\r
+  if ((int)level_and_flags < 0)\r
+    level_and_flags = MZ_DEFAULT_LEVEL;\r
+  level = level_and_flags & 0xF;\r
+\r
+  if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION))\r
+    return MZ_FALSE;\r
+  if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)\r
+    return MZ_FALSE;\r
+  if (!mz_zip_writer_validate_archive_name(pArchive_name))\r
+    return MZ_FALSE;\r
+\r
+  archive_name_size = strlen(pArchive_name);\r
+  if (archive_name_size > 0xFFFF)\r
+    return MZ_FALSE;\r
+\r
+  num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\r
+\r
+  // no zip64 support yet\r
+  if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + comment_size + archive_name_size) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_get_file_modified_time(pSrc_filename, &dos_time, &dos_date))\r
+    return MZ_FALSE;\r
+    \r
+  pSrc_file = MZ_FOPEN(pSrc_filename, "rb");\r
+  if (!pSrc_file)\r
+    return MZ_FALSE;\r
+  MZ_FSEEK64(pSrc_file, 0, SEEK_END);\r
+  uncomp_size = MZ_FTELL64(pSrc_file);\r
+  MZ_FSEEK64(pSrc_file, 0, SEEK_SET);\r
+\r
+  if (uncomp_size > 0xFFFFFFFF)\r
+  {\r
+    // No zip64 support yet\r
+    MZ_FCLOSE(pSrc_file);\r
+    return MZ_FALSE;\r
+  }\r
+  if (uncomp_size <= 3)\r
+    level = 0;\r
+\r
+  if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes + sizeof(local_dir_header)))\r
+  {\r
+    MZ_FCLOSE(pSrc_file);\r
+    return MZ_FALSE;\r
+  }\r
+  local_dir_header_ofs += num_alignment_padding_bytes;\r
+  if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); }\r
+  cur_archive_file_ofs += num_alignment_padding_bytes + sizeof(local_dir_header);\r
+\r
+  MZ_CLEAR_OBJ(local_dir_header);\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\r
+  {\r
+    MZ_FCLOSE(pSrc_file);\r
+    return MZ_FALSE;\r
+  }\r
+  cur_archive_file_ofs += archive_name_size;\r
+\r
+  if (uncomp_size)\r
+  {\r
+    mz_uint64 uncomp_remaining = uncomp_size;\r
+    void *pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE);\r
+    if (!pRead_buf)\r
+    {\r
+      MZ_FCLOSE(pSrc_file);\r
+      return MZ_FALSE;\r
+    }\r
+\r
+    if (!level)\r
+    {\r
+      while (uncomp_remaining)\r
+      {\r
+        mz_uint n = (mz_uint)MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, uncomp_remaining);\r
+        if ((MZ_FREAD(pRead_buf, 1, n, pSrc_file) != n) || (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, n) != n))\r
+        {\r
+          pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+          MZ_FCLOSE(pSrc_file);\r
+          return MZ_FALSE;\r
+        }\r
+        uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n);\r
+        uncomp_remaining -= n;\r
+        cur_archive_file_ofs += n;\r
+      }\r
+      comp_size = uncomp_size;\r
+    }\r
+    else\r
+    {\r
+      mz_bool result = MZ_FALSE;\r
+      mz_zip_writer_add_state state;\r
+      tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor));\r
+      if (!pComp)\r
+      {\r
+        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+        MZ_FCLOSE(pSrc_file);\r
+        return MZ_FALSE;\r
+      }\r
+\r
+      state.m_pZip = pZip;\r
+      state.m_cur_archive_file_ofs = cur_archive_file_ofs;\r
+      state.m_comp_size = 0;\r
+\r
+      if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY)\r
+      {\r
+        pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+        MZ_FCLOSE(pSrc_file);\r
+        return MZ_FALSE;\r
+      }\r
+\r
+      for ( ; ; )\r
+      {\r
+        size_t in_buf_size = (mz_uint32)MZ_MIN(uncomp_remaining, MZ_ZIP_MAX_IO_BUF_SIZE);\r
+        tdefl_status status;\r
+\r
+        if (MZ_FREAD(pRead_buf, 1, in_buf_size, pSrc_file) != in_buf_size)\r
+          break;\r
+\r
+        uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, in_buf_size);\r
+        uncomp_remaining -= in_buf_size;\r
+\r
+        status = tdefl_compress_buffer(pComp, pRead_buf, in_buf_size, uncomp_remaining ? TDEFL_NO_FLUSH : TDEFL_FINISH);\r
+        if (status == TDEFL_STATUS_DONE)\r
+        {\r
+          result = MZ_TRUE;\r
+          break;\r
+        }\r
+        else if (status != TDEFL_STATUS_OKAY)\r
+          break;\r
+      }\r
+\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\r
+\r
+      if (!result)\r
+      {\r
+        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+        MZ_FCLOSE(pSrc_file);\r
+        return MZ_FALSE;\r
+      }\r
+\r
+      comp_size = state.m_comp_size;\r
+      cur_archive_file_ofs = state.m_cur_archive_file_ofs;\r
+\r
+      method = MZ_DEFLATED;\r
+    }\r
+\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\r
+  }\r
+\r
+  MZ_FCLOSE(pSrc_file); pSrc_file = NULL;\r
+\r
+  // no zip64 support yet\r
+  if ((comp_size > 0xFFFFFFFF) || (cur_archive_file_ofs > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, 0, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date))\r
+    return MZ_FALSE;\r
+\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\r
+    return MZ_FALSE;\r
+\r
+  if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, NULL, 0, pComment, comment_size, uncomp_size, comp_size, uncomp_crc32, method, 0, dos_time, dos_date, local_dir_header_ofs, ext_attributes))\r
+    return MZ_FALSE;\r
+\r
+  pZip->m_total_files++;\r
+  pZip->m_archive_size = cur_archive_file_ofs;\r
+\r
+  return MZ_TRUE;\r
+}\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint file_index)\r
+{\r
+  mz_uint n, bit_flags, num_alignment_padding_bytes;\r
+  mz_uint64 comp_bytes_remaining, local_dir_header_ofs;\r
+  mz_uint64 cur_src_file_ofs, cur_dst_file_ofs;\r
+  mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\r
+  mz_uint8 central_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE];\r
+  size_t orig_central_dir_size;\r
+  mz_zip_internal_state *pState;\r
+  void *pBuf; const mz_uint8 *pSrc_central_header;\r
+\r
+  if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING))\r
+    return MZ_FALSE;\r
+  if (NULL == (pSrc_central_header = mz_zip_reader_get_cdh(pSource_zip, file_index)))\r
+    return MZ_FALSE;\r
+  pState = pZip->m_pState;\r
+\r
+  num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\r
+\r
+  // no zip64 support yet\r
+  if ((pZip->m_total_files == 0xFFFF) || ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  cur_src_file_ofs = MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS);\r
+  cur_dst_file_ofs = pZip->m_archive_size;\r
+\r
+  if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\r
+    return MZ_FALSE;\r
+  cur_src_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE;\r
+\r
+  if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, num_alignment_padding_bytes))\r
+    return MZ_FALSE;\r
+  cur_dst_file_ofs += num_alignment_padding_bytes;\r
+  local_dir_header_ofs = cur_dst_file_ofs;\r
+  if (pZip->m_file_offset_alignment) { MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); }\r
+\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\r
+    return MZ_FALSE;\r
+  cur_dst_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE;\r
+\r
+  n = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\r
+  comp_bytes_remaining = n + MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\r
+\r
+  if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)MZ_MAX(sizeof(mz_uint32) * 4, MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, comp_bytes_remaining)))))\r
+    return MZ_FALSE;\r
+\r
+  while (comp_bytes_remaining)\r
+  {\r
+    n = (mz_uint)MZ_MIN(MZ_ZIP_MAX_IO_BUF_SIZE, comp_bytes_remaining);\r
+    if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, n) != n)\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+      return MZ_FALSE;\r
+    }\r
+    cur_src_file_ofs += n;\r
+\r
+    if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n)\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+      return MZ_FALSE;\r
+    }\r
+    cur_dst_file_ofs += n;\r
+\r
+    comp_bytes_remaining -= n;\r
+  }\r
+\r
+  bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS);\r
+  if (bit_flags & 8)\r
+  {\r
+    // Copy data descriptor\r
+    if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4)\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+      return MZ_FALSE;\r
+    }\r
+\r
+    n = sizeof(mz_uint32) * ((MZ_READ_LE32(pBuf) == 0x08074b50) ? 4 : 3);\r
+    if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n)\r
+    {\r
+      pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+      return MZ_FALSE;\r
+    }\r
+\r
+    cur_src_file_ofs += n;\r
+    cur_dst_file_ofs += n;\r
+  }\r
+  pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\r
+\r
+  // no zip64 support yet\r
+  if (cur_dst_file_ofs > 0xFFFFFFFF)\r
+    return MZ_FALSE;\r
+\r
+  orig_central_dir_size = pState->m_central_dir.m_size;\r
+\r
+  memcpy(central_header, pSrc_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE);\r
+  MZ_WRITE_LE32(central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_dir_header_ofs);\r
+  if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE))\r
+    return MZ_FALSE;\r
+\r
+  n = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS);\r
+  if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n))\r
+  {\r
+    mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\r
+    return MZ_FALSE;\r
+  }\r
+\r
+  if (pState->m_central_dir.m_size > 0xFFFFFFFF)\r
+    return MZ_FALSE;\r
+  n = (mz_uint32)orig_central_dir_size;\r
+  if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1))\r
+  {\r
+    mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\r
+    return MZ_FALSE;\r
+  }\r
+\r
+  pZip->m_total_files++;\r
+  pZip->m_archive_size = cur_dst_file_ofs;\r
+\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)\r
+{\r
+  mz_zip_internal_state *pState;\r
+  mz_uint64 central_dir_ofs, central_dir_size;\r
+  mz_uint8 hdr[MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE];\r
+\r
+  if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING))\r
+    return MZ_FALSE;\r
+\r
+  pState = pZip->m_pState;\r
+\r
+  // no zip64 support yet\r
+  if ((pZip->m_total_files > 0xFFFF) || ((pZip->m_archive_size + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > 0xFFFFFFFF))\r
+    return MZ_FALSE;\r
+\r
+  central_dir_ofs = 0;\r
+  central_dir_size = 0;\r
+  if (pZip->m_total_files)\r
+  {\r
+    // Write central directory\r
+    central_dir_ofs = pZip->m_archive_size;\r
+    central_dir_size = pState->m_central_dir.m_size;\r
+    pZip->m_central_directory_file_ofs = central_dir_ofs;\r
+    if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, pState->m_central_dir.m_p, (size_t)central_dir_size) != central_dir_size)\r
+      return MZ_FALSE;\r
+    pZip->m_archive_size += central_dir_size;\r
+  }\r
+\r
+  // Write end of central directory record\r
+  MZ_CLEAR_OBJ(hdr);\r
+  MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG);\r
+  MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, pZip->m_total_files);\r
+  MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, pZip->m_total_files);\r
+  MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_SIZE_OFS, central_dir_size);\r
+  MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_OFS_OFS, central_dir_ofs);\r
+\r
+  if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, sizeof(hdr)) != sizeof(hdr))\r
+    return MZ_FALSE;\r
+#ifndef MINIZ_NO_STDIO\r
+  if ((pState->m_pFile) && (MZ_FFLUSH(pState->m_pFile) == EOF))\r
+    return MZ_FALSE;\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+  pZip->m_archive_size += sizeof(hdr);\r
+\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED;\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **pBuf, size_t *pSize)\r
+{\r
+  if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pSize))\r
+    return MZ_FALSE;\r
+  if (pZip->m_pWrite != mz_zip_heap_write_func)\r
+    return MZ_FALSE;\r
+  if (!mz_zip_writer_finalize_archive(pZip))\r
+    return MZ_FALSE;\r
+\r
+  *pBuf = pZip->m_pState->m_pMem;\r
+  *pSize = pZip->m_pState->m_mem_size;\r
+  pZip->m_pState->m_pMem = NULL;\r
+  pZip->m_pState->m_mem_size = pZip->m_pState->m_mem_capacity = 0;\r
+  return MZ_TRUE;\r
+}\r
+\r
+mz_bool mz_zip_writer_end(mz_zip_archive *pZip)\r
+{\r
+  mz_zip_internal_state *pState;\r
+  mz_bool status = MZ_TRUE;\r
+  if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)))\r
+    return MZ_FALSE;\r
+\r
+  pState = pZip->m_pState;\r
+  pZip->m_pState = NULL;\r
+  mz_zip_array_clear(pZip, &pState->m_central_dir);\r
+  mz_zip_array_clear(pZip, &pState->m_central_dir_offsets);\r
+  mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets);\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+  if (pState->m_pFile)\r
+  {\r
+    MZ_FCLOSE(pState->m_pFile);\r
+    pState->m_pFile = NULL;\r
+  }\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+  if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem))\r
+  {\r
+    pZip->m_pFree(pZip->m_pAlloc_opaque, pState->m_pMem);\r
+    pState->m_pMem = NULL;\r
+  }\r
+\r
+  pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\r
+  pZip->m_zip_mode = MZ_ZIP_MODE_INVALID;\r
+  return status;\r
+}\r
+\r
+#ifndef MINIZ_NO_STDIO\r
+mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)\r
+{\r
+  mz_bool status, created_new_archive = MZ_FALSE;\r
+  mz_zip_archive zip_archive;\r
+  struct MZ_FILE_STAT_STRUCT file_stat;\r
+  MZ_CLEAR_OBJ(zip_archive);\r
+  if ((int)level_and_flags < 0)\r
+     level_and_flags = MZ_DEFAULT_LEVEL;\r
+  if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION))\r
+    return MZ_FALSE;\r
+  if (!mz_zip_writer_validate_archive_name(pArchive_name))\r
+    return MZ_FALSE;\r
+  if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0)\r
+  {\r
+    // Create a new archive.\r
+    if (!mz_zip_writer_init_file(&zip_archive, pZip_filename, 0))\r
+      return MZ_FALSE;\r
+    created_new_archive = MZ_TRUE;\r
+  }\r
+  else\r
+  {\r
+    // Append to an existing archive.\r
+    if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, level_and_flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY))\r
+      return MZ_FALSE;\r
+    if (!mz_zip_writer_init_from_reader(&zip_archive, pZip_filename))\r
+    {\r
+      mz_zip_reader_end(&zip_archive);\r
+      return MZ_FALSE;\r
+    }\r
+  }\r
+  status = mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0);\r
+  // Always finalize, even if adding failed for some reason, so we have a valid central directory. (This may not always succeed, but we can try.)\r
+  if (!mz_zip_writer_finalize_archive(&zip_archive))\r
+    status = MZ_FALSE;\r
+  if (!mz_zip_writer_end(&zip_archive))\r
+    status = MZ_FALSE;\r
+  if ((!status) && (created_new_archive))\r
+  {\r
+    // It's a new archive and something went wrong, so just delete it.\r
+    int ignoredStatus = MZ_DELETE_FILE(pZip_filename);\r
+    (void)ignoredStatus;\r
+  }\r
+  return status;\r
+}\r
+\r
+void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags)\r
+{\r
+  int file_index;\r
+  mz_zip_archive zip_archive;\r
+  void *p = NULL;\r
+\r
+  if (pSize)\r
+    *pSize = 0;\r
+\r
+  if ((!pZip_filename) || (!pArchive_name))\r
+    return NULL;\r
+\r
+  MZ_CLEAR_OBJ(zip_archive);\r
+  if (!mz_zip_reader_init_file(&zip_archive, pZip_filename, flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY))\r
+    return NULL;\r
+\r
+  if ((file_index = mz_zip_reader_locate_file(&zip_archive, pArchive_name, NULL, flags)) >= 0)\r
+    p = mz_zip_reader_extract_to_heap(&zip_archive, file_index, pSize, flags);\r
+\r
+  mz_zip_reader_end(&zip_archive);\r
+  return p;\r
+}\r
+\r
+#endif // #ifndef MINIZ_NO_STDIO\r
+\r
+#endif // #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\r
+\r
+#endif // #ifndef MINIZ_NO_ARCHIVE_APIS\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // MINIZ_HEADER_FILE_ONLY\r
+\r
+/*\r
+  This is free and unencumbered software released into the public domain.\r
+\r
+  Anyone is free to copy, modify, publish, use, compile, sell, or\r
+  distribute this software, either in source code form or as a compiled\r
+  binary, for any purpose, commercial or non-commercial, and by any\r
+  means.\r
+\r
+  In jurisdictions that recognize copyright laws, the author or authors\r
+  of this software dedicate any and all copyright interest in the\r
+  software to the public domain. We make this dedication for the benefit\r
+  of the public at large and to the detriment of our heirs and\r
+  successors. We intend this dedication to be an overt act of\r
+  relinquishment in perpetuity of all present and future rights to this\r
+  software under copyright law.\r
+\r
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
+  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\r
+  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\r
+  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r
+  OTHER DEALINGS IN THE SOFTWARE.\r
+\r
+  For more information, please refer to <http://unlicense.org/>\r
+*/\r
index 57b51de..686c96f 100644 (file)
 # NOTE: You should remove CMakeCache.txt if you plan to change any of these values!
 
 
+cmake_minimum_required(VERSION 2.8.9)
 project(QuasselIRC)
 
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-include(CheckCXXCompilerFlag)
+# Versions
+set(QUASSEL_MAJOR  0)
+set(QUASSEL_MINOR 11)
+set(QUASSEL_PATCH  0)
+set(QUASSEL_VERSION_STRING "0.11-pre")
+
+# Tell CMake about or own modules
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
 
-# For building against Qt5, we check for an even newer cmake version below!
-cmake_minimum_required(VERSION 2.8.1 FATAL_ERROR)
+# General conveniences
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
 
-if(COMMAND cmake_policy)
-   cmake_policy(SET CMP0003 NEW)
-endif(COMMAND cmake_policy)
+# Moar stuff
+include(CheckFunctionExists)
+include(CheckIncludeFile)
 
-# Use our own (well, and KDE's) version of some modules
-# In particular cmake's own FindQt4 and FindOpenSSL are quite buggy
-set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
+include(QuasselCompileSettings)
 include(QuasselMacros)
 
 # Various options and variables that can be set on the command line
@@ -108,67 +113,6 @@ endif(LINK_EXTRA)
 
 # Build Types
 
-if(CMAKE_CONFIGURATION_TYPES)
-   set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug Debugfull Profile MinSizeRel)
-   set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING
-     "Reset the configurations to what we need"
-     FORCE)
-endif()
-
-if(NOT CMAKE_BUILD_TYPE)
-  SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
-     "Choose the type of build, options are: None Debug Release RelWithDebInfo Debug Debugfull Profile MinSizeRel."
-     FORCE)
-endif()
-
-# Qt debug flags
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUGFULL QT_DEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG NDEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG NDEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_PROFILE QT_NO_DEBUG NDEBUG)
-set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG NDEBUG)
-
-if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
-  set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS QT_NO_DEBUG NDEBUG)
-endif()
-
-# Enable various flags on gcc
-if(CMAKE_COMPILER_IS_GNUCXX)
-  # Let's just hope that all gccs support these options and skip the tests...
-  # -fno-strict-aliasing is needed apparently for Qt < 4.6
-  set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} -ansi -Wall -Wextra -Wnon-virtual-dtor -fno-strict-aliasing")
-#  set(CMAKE_CXX_FLAGS_RELEASE          "-O2")   # use CMake default
-#  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2")  # use CMake default
-  set(CMAKE_CXX_FLAGS_DEBUG             "-g -ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
-  set(CMAKE_CXX_FLAGS_DEBUGFULL         "-g3 -ggdb -fno-inline")
-  set(CMAKE_CXX_FLAGS_PROFILE           "-g3 -ggdb -fno-inline -ftest-coverage -fprofile-arcs")
-
-  set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} -ansi -W -Wall -Wextra -Wnon-virtual-dtor -fno-strict-aliasing -Wundef -Wcast-align -Wpointer-arith -Wformat-security -fno-check-new -fno-common")
-
-  check_cxx_compiler_flag(-Woverloaded-virtual CXX_W_OVERLOADED_VIRTUAL)
-  if(CXX_W_OVERLOADED_VIRTUAL)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
-  endif()
-endif(CMAKE_COMPILER_IS_GNUCXX)
-
-# ... and for Clang
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wextra -Wpointer-arith -Wformat-security -Woverloaded-virtual -fno-common -Werror=return-type")
-#  set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG -DQT_NO_DEBUG")     # Use CMake default
-#  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG")  # Use CMake default
-  set(CMAKE_CXX_FLAGS_DEBUG          "-g -O2 -fno-inline")
-  set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline")
-  set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
-endif()
-
-# Mac build stuff
-if(APPLE AND DEPLOY)
-  set(CMAKE_OSX_ARCHITECTURES "x86_64")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.6")
-  set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk/")
-  add_definitions(-DMAC_10_6_SDK)
-endif(APPLE AND DEPLOY)
 
 # Simplify checks
 if(WANT_MONO OR WANT_QTCLIENT)
@@ -237,6 +181,21 @@ if(QT_LRELEASE_EXECUTABLE)
 endif(QT_LRELEASE_EXECUTABLE)
 
 
+# zlib for compression, however we can always fall back to miniz
+find_package(ZLIB)
+if(ZLIB_FOUND)
+  message(STATUS "Using system zlib for compression")
+  add_definitions(-DHAVE_ZLIB)
+  include_directories(${ZLIB_INCLUDE_DIRS})
+  set(COMMON_LIBRARIES ${COMMON_LIBRARIES} ${ZLIB_LIBRARIES})
+else()
+  message(STATUS "zlib NOT found, using bundled miniz for compression")
+  if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+    message(STATUS "WARNING: This may be slow on 32 bit systems!")
+  endif()
+endif()
+
+
 # Execinfo is needed for generating backtraces
 find_package(ExecInfo)
 if(EXECINFO_FOUND)
@@ -329,6 +288,8 @@ if(BUILD_GUI)
 
   # Setup KDE4 support
   if(WITH_KDE AND NOT WITH_QT5)
+    # KDE has overzealous CFLAGS making miniz not compile, so save our old flags
+    set(_cflags ${CMAKE_C_FLAGS})
     find_package(KDE4)
     if(KDE4_FOUND)
       message(STATUS "Enabling KDE4 integration")
@@ -338,6 +299,8 @@ if(BUILD_GUI)
       set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY} ${KDE4_SOLID_LIBS} ${KDE4_KNOTIFYCONFIG_LIBRARY})
       # We always use external icons for KDE4 support, since we use its iconloader rather than our own
       set(EMBED_DATA OFF)
+      # Restore our old CFLAGS
+      set(CMAKE_C_FLAGS ${_cflags})
     else(KDE4_FOUND)
       message(STATUS "KDE4 not found, disabling KDE integration")
     endif(KDE4_FOUND)
@@ -373,6 +336,13 @@ if(BUILD_GUI)
     else(WITH_PHONON)
       message(STATUS "Not enabling Phonon support")
     endif(WITH_PHONON)
+
+    find_package(Libsnore)
+    if(LIBSNORE_FOUND)
+        add_definitions(-DHAVE_LIBSNORE)
+        set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${LIBSNORE_LIBRARIES})
+        set(HAVE_SNORENOTIFY true)
+    endif(LIBSNORE_FOUND)
   endif(NOT HAVE_KDE)
 
   # Setup libindicate-qt support
@@ -401,13 +371,6 @@ if(BUILD_GUI)
       /System/Library/Frameworks/Foundation.framework
     )
   endif()
-
-find_package(Libsnore)
-if(LIBSNORE_FOUND)
-    add_definitions(-DHAVE_LIBSNORE -DLIBSNORE_PLUGIN_PATH="${LIBSNORE_PLUGIN_PATH}")
-    set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${LIBSNORE_LIBRARIES})
-    set(HAVE_SNORENOTIFY true)
-endif(LIBSNORE_FOUND)
 endif(BUILD_GUI)
 
 # Core-only deps
@@ -519,20 +482,18 @@ if(NOT WIN32)
   endif(HAVE_UMASK)
 endif(NOT WIN32)
 
-# We need to create a version.gen
-# For this, we create our genversion binary and make sure it is run every time.
+# Generate version information from Git
+include(GetGitRevisionDescription)
+get_git_head_revision(GIT_REFSPEC GIT_HEAD)
+git_describe(GIT_DESCRIBE --long)
 
-setup_qt_variables()
-include_directories(${QUASSEL_QT_INCLUDES})
-
-add_executable(genversion ${CMAKE_SOURCE_DIR}/src/common/genversion.cpp)
-target_link_libraries(genversion ${QUASSEL_QT_LIBRARIES})
-set_target_properties(genversion PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
+# Sanitize things if we're not in a Git repo
+if(NOT GIT_HEAD OR NOT GIT_DESCRIBE)
+    set(GIT_HEAD "")
+    set(GIT_DESCRIBE "")
+endif()
 
-get_target_property(GENVERSION_EXECUTABLE genversion LOCATION)
-add_custom_target(genversion_run ALL ${GENVERSION_EXECUTABLE}
-                  ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}/src/version.gen)
-add_dependencies(genversion_run genversion)
+configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
 
 # These variables will be added to the main targets (CORE, QTCLIENT, MONO)
 set(COMMON_DEPS ${RC_WIN32})
index ce6b103..b4dfc9b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,36 @@ changes, the git history at <http://git.quassel-irc.org> is your friend.
 
 Without further ado, let's start:
 
+Version 0.10-rc1 (2014-03-16)
+=============================
+
+* Refactor lots of the protocol and connection code
+* Introduce connection probing for reliably negotiating protocol features
+* Introduce the new DataStream protocol with streaming compression
+* Option for forcing the core to only accept SSL connections
+* Support for the Snore notification backend
+* Allow searching the web for selected text
+* Connection-related fixes
+* Allow for hiding inactive networks
+* Enable line wrap in the input field
+* Show backlog messages in the Chat Monitor
+* Remove SSL protocol selection, always use auto-negotiation for best results
+* Highlight rules are now case-insensitive by default
+* New translations
+* Bump inxi version (for /sysinfo)
+
+Version 0.9.3 (TBD)
+===================
+
+* Notification fixes
+* Improve reliability of SSL connections
+* Save toolbar state properly on Mac
+* Prevent user interaction with the web preview
+* Fix fullscreen mode
+* Fix spurious crash caused by shaky ircd connections
+* Fix adding an unneeded colon to custom commands
+* Avoid Qt's DNS cache to properly handle round-robin DNS records
+
 Version 0.9.2 (2013-11-26)
 ==========================
 
similarity index 87%
rename from cmake/modules/COPYING-CMAKE-SCRIPTS
rename to cmake/COPYING-CMAKE-SCRIPTS
index 4b41776..cb8a990 100644 (file)
@@ -1,3 +1,7 @@
+This is the standard license for CMake scripts. Please note that some
+of the CMake scripts we bundle come with their own license as indicated
+in the file, in which case that one applies.
+
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
diff --git a/cmake/FindDBusMenuQt.cmake b/cmake/FindDBusMenuQt.cmake
new file mode 100644 (file)
index 0000000..5af70ef
--- /dev/null
@@ -0,0 +1,94 @@
+# - Try to find dbusmenu-qt
+# This module helps finding an installation of the DBusMenuQt library (see https://launchpad.net/libdbusmenu-qt/)
+# Once done this will define
+#
+#  DBUSMENUQT_FOUND - system has dbusmenu-qt
+#  DBUSMENUQT_INCLUDE_DIR - the dbusmenu-qt include directory
+#  DBUSMENUQT_LIBRARIES - the libraries needed to use dbusmenu-qt
+#  DBUSMENUQT_DEFINITIONS - Compiler switches required for using dbusmenu-qt
+#
+# The minimum required version of DBusMenuQt can be specified using the
+# standard syntax, e.g. find_package(DBusMenuQt 0.6)
+#
+# WARNING: versions below 0.4.0 cannot be checked for.
+# So if you want to have a version check, require at least 0.4.0 of dbusmenuqt.
+
+# Copyright (c) 2009, Canonical Ltd.
+# - Author: Aurélien Gâteau <aurelien.gateau@canonical.com>
+#
+# Based on FindQCA2.cmake
+# Copyright (c) 2006, Michael Larouche, <michael.larouche@kdemail.net>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include(FindPackageHandleStandardArgs)
+
+find_package(PkgConfig)
+pkg_check_modules(PC_DBUSMENUQT QUIET dbusmenu-qt)
+
+
+set(DBUSMENUQT_DEFINITIONS ${PC_DBUSMENUQT_CFLAGS_OTHER})
+
+find_library(DBUSMENUQT_LIBRARIES
+    NAMES dbusmenu-qt dbusmenu-qtd
+    HINTS ${PC_DBUSMENUQT_LIBDIR} ${PC_DBUSMENUQT_LIBRARY_DIRS}
+    )
+
+find_path(DBUSMENUQT_INCLUDE_DIR dbusmenuexporter.h
+    HINTS ${PC_DBUSMENUQT_INCLUDEDIR} ${PC_DBUSMENUQT_INCLUDE_DIRS}
+    PATH_SUFFIXES dbusmenu-qt
+    )
+
+
+# dbusmenu_version.h is installed since 0.4.0, fail if a version below this is required:
+if ((DBusMenuQt_FIND_VERSION)  AND ("${DBusMenuQt_FIND_VERSION}" VERSION_LESS "0.4.0"))
+  message(FATAL_ERROR "Cannot check reliably for a DBusMenuQt version below 0.4.0 (${DBusMenuQt_FIND_VERSION} was requested)")
+endif ((DBusMenuQt_FIND_VERSION)  AND ("${DBusMenuQt_FIND_VERSION}" VERSION_LESS "0.4.0"))
+
+
+# find the version number from dbusmenu_version.h and store it in the cache
+if(DBUSMENUQT_INCLUDE_DIR  AND NOT DBUSMENUQT_VERSION)
+  # parse the version number out from dbusmenu_version:
+  if(EXISTS ${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h)
+    file(READ "${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h" DBUSMENUQT_VERSION_CONTENT)
+
+    if ("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR") # introduced after 0.6.4, makes this code here more robust
+
+     string(REGEX MATCH "#define +DBUSMENUQT_VERSION_MAJOR +([0-9]+)"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+     set(DBUSMENUQT_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+      string(REGEX MATCH "#define +DBUSMENUQT_VERSION_MINOR +([0-9]+)"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+      set(DBUSMENUQT_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+      string(REGEX MATCH "#define +DBUSMENUQT_VERSION_PATCH +([0-9]+)"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+      set(DBUSMENUQT_VERSION_PATCH "${CMAKE_MATCH_1}")
+
+    else("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR")
+      # In versions up to 0.6.4, the code for setting the version number in the header looked like
+      # shopw below. This made version checking quite un-obvious:
+      # #define DBUSMENUQT_VERSION \
+      #     ((0 << 16) \
+      #     |(6 << 8) \
+      #     |4)
+
+      string(REGEX MATCH "\\(\\( *([0-9]+) *<<"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+      set(DBUSMENUQT_VERSION_MAJOR "${CMAKE_MATCH_1}")
+
+      string(REGEX MATCH "\\|\\( *([0-9]+) *<<"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+      set(DBUSMENUQT_VERSION_MINOR "${CMAKE_MATCH_1}")
+
+      string(REGEX MATCH "\\| *([0-9]+) *\\)"  _dummy "${DBUSMENUQT_VERSION_CONTENT}")
+      set(DBUSMENUQT_VERSION_PATCH "${CMAKE_MATCH_1}")
+    endif("${DBUSMENUQT_VERSION_CONTENT}" MATCHES "DBUSMENUQT_VERSION_MAJOR")
+  endif(EXISTS ${DBUSMENUQT_INCLUDE_DIR}/dbusmenu_version.h)
+
+  set(DBUSMENUQT_VERSION "${DBUSMENUQT_VERSION_MAJOR}.${DBUSMENUQT_VERSION_MINOR}.${DBUSMENUQT_VERSION_PATCH}" CACHE STRING "Version number of DBusMenuQt" FORCE)
+endif(DBUSMENUQT_INCLUDE_DIR  AND NOT DBUSMENUQT_VERSION)
+
+
+find_package_handle_standard_args(DBusMenuQt REQUIRED_VARS DBUSMENUQT_LIBRARIES DBUSMENUQT_INCLUDE_DIR
+                                             VERSION_VAR DBUSMENUQT_VERSION)
+#"Could not find dbusmenu-qt; available at https://launchpad.net/libdbusmenu-qt/" DBUSMENUQT_LIBRARIES DBUSMENUQT_INCLUDE_DIR)
+
+mark_as_advanced(DBUSMENUQT_INCLUDE_DIR DBUSMENUQT_LIBRARIES DBUSMENUQT_VERSION)
similarity index 72%
rename from cmake/modules/FindLibsnore.cmake
rename to cmake/FindLibsnore.cmake
index 4dc0b9e..1af3944 100644 (file)
@@ -4,8 +4,7 @@
 #  LIBSNORE_FOUND - system has the LIBSNORE library
 #  LIBSNORE_LIBRARIES - The libraries needed to use LIBSNORE
 #  LIBSNORE_INCLUDE_DIRS - The includes needed to use LIBSNORE
-#  LIBSNORE_PLUGIN_PATH - Path of the plugins
-#  Copyright 2013 Patrick von Reth <vonreth@kde.org>
+#  Copyright 2013-2014 Patrick von Reth <vonreth@kde.org>
 
 find_path(LIBSNORE_INCLUDE_DIR
   NAMES snore/core/snore.h
@@ -19,12 +18,6 @@ find_library(LIBSNORE_LIBRARY
   PATHS ${KDE4_LIB_DIR}
 )
 
-find_path(LIBSNORE_PLUGIN_PATH snoreplugins)
-
-if(LIBSNORE_LIBRARY AND LIBSNORE_PLUGIN_PATH)
-    set(LIBSNORE_PLUGIN_PATH ${LIBSNORE_PLUGIN_PATH}/snoreplugins)
-endif()
-
 set(LIBSNORE_LIBRARIES ${LIBSNORE_LIBRARY})
 set(LIBSNORE_INCLUDE_DIRS ${LIBSNORE_INCLUDE_DIR})
 
diff --git a/cmake/FindPhonon.cmake b/cmake/FindPhonon.cmake
new file mode 100644 (file)
index 0000000..cd9e5cb
--- /dev/null
@@ -0,0 +1,37 @@
+# Find libphonon
+# Once done this will define
+#
+#  PHONON_FOUND    - system has Phonon Library
+#  PHONON_INCLUDES - the Phonon include directory
+#  PHONON_LIBS     - link these to use Phonon
+#  PHONON_VERSION  - the version of the Phonon Library
+
+# Copyright (c) 2008, Matthias Kretz <kretz@kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+macro(_phonon_find_version)
+   set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/phonon/phononnamespace.h")
+   if (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+      set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+   endif (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+   file(READ ${_phonon_namespace_header_file} _phonon_header LIMIT 5000 OFFSET 1000)
+   string(REGEX MATCH "define PHONON_VERSION_STR \"(4\\.[0-9]+\\.[0-9a-z]+)\"" _phonon_version_match "${_phonon_header}")
+   set(PHONON_VERSION "${CMAKE_MATCH_1}")
+endmacro(_phonon_find_version)
+
+# the dirs listed with HINTS are searched before the default sets of dirs
+find_library(PHONON_LIBRARY NAMES phonon HINTS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR})
+find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h HINTS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
+
+if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+   set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
+   set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
+   _phonon_find_version()
+endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Phonon  DEFAULT_MSG  PHONON_INCLUDE_DIR PHONON_LIBRARY)
+
+mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY)
similarity index 53%
rename from cmake/modules/FindQCA2.cmake
rename to cmake/FindQCA2.cmake
index cf000e4..e2d8f2a 100644 (file)
@@ -30,31 +30,11 @@ else (QCA2_INCLUDE_DIR AND QCA2_LIBRARIES)
     set(QCA2_DEFINITIONS ${PC_QCA2_CFLAGS_OTHER})
   endif (NOT WIN32)
 
-  find_library(QCA2_LIBRARIES_DEBUG
-                  NAMES qcad qcad2
+  find_library_with_debug(QCA2_LIBRARIES
+                  WIN32_DEBUG_POSTFIX d
+                  NAMES qca
                   HINTS ${PC_QCA2_LIBDIR} ${PC_QCA2_LIBRARY_DIRS}
                   )
-  find_library(QCA2_LIBRARIES_RELEASE
-                  NAMES qca qca2
-                  HINTS ${PC_QCA2_LIBDIR} ${PC_QCA2_LIBRARY_DIRS}
-                  )
-  # if the release- as well as the debug-version of the library have been found:
-  IF (QCA2_LIBRARIES_DEBUG AND QCA2_LIBRARIES_RELEASE)
-    # if the generator supports configuration types then set
-    # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
-    IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-      SET(QCA2_LIBRARIES       optimized ${QCA2_LIBRARIES_RELEASE} debug ${QCA2_LIBRARIES_DEBUG})
-    ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-      # if there are no configuration types and CMAKE_BUILD_TYPE has no value
-      # then just use the release libraries
-      SET(QCA2_LIBRARIES       ${QCA2_LIBRARIES_RELEASE} )
-    ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-  ELSE (QCA2_LIBRARIES_DEBUG AND QCA2_LIBRARIES_RELEASE)
-    IF (QCA2_LIBRARIES_RELEASE)
-       SET(QCA2_LIBRARIES ${QCA2_LIBRARIES_RELEASE})
-    ENDIF (QCA2_LIBRARIES_RELEASE)
-  ENDIF (QCA2_LIBRARIES_DEBUG AND QCA2_LIBRARIES_RELEASE)
-
 
   find_path(QCA2_INCLUDE_DIR QtCrypto
             HINTS ${PC_QCA2_INCLUDEDIR} ${PC_QCA2_INCLUDE_DIRS}
diff --git a/cmake/GetGitRevisionDescription.cmake b/cmake/GetGitRevisionDescription.cmake
new file mode 100644 (file)
index 0000000..10e3707
--- /dev/null
@@ -0,0 +1,124 @@
+# - Returns a version string from Git
+#
+# These functions force a re-configure on each git commit so that you can
+# trust the values of the variables in your build system.
+#
+#  get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
+#
+# Returns the refspec and sha hash of the current head revision
+#
+#  git_describe(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the source tree, and adjusting
+# the output so that it tests false if an error occurs.
+#
+#  git_get_exact_tag(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe --exact-match on the source tree,
+# and adjusting the output so that it tests false if there was no exact
+# matching tag.
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+if(__get_git_revision_description)
+       return()
+endif()
+set(__get_git_revision_description YES)
+
+# We must run the following at "include" time, not at function call time,
+# to find the path to this module rather than the path to a calling list file
+get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+function(get_git_head_revision _refspecvar _hashvar)
+       set(GIT_DIR "${CMAKE_SOURCE_DIR}/.git")
+       if(NOT EXISTS "${GIT_DIR}")     # .git dir not found
+               set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+               set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+               return()
+       endif()
+       # check if this is a submodule
+       if(NOT IS_DIRECTORY ${GIT_DIR})
+               file(READ ${GIT_DIR} submodule)
+               string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
+               get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
+               get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
+       endif()
+       set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
+       if(NOT EXISTS "${GIT_DATA}")
+               file(MAKE_DIRECTORY "${GIT_DATA}")
+       endif()
+
+       if(NOT EXISTS "${GIT_DIR}/HEAD")
+               return()
+       endif()
+       set(HEAD_FILE "${GIT_DATA}/HEAD")
+       configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
+
+       configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+               "${GIT_DATA}/grabRef.cmake"
+               @ONLY)
+       include("${GIT_DATA}/grabRef.cmake")
+
+       set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
+       set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
+endfunction()
+
+function(git_describe _var)
+       if(NOT GIT_FOUND)
+               find_package(Git QUIET)
+       endif()
+       get_git_head_revision(refspec hash)
+       if(NOT GIT_FOUND)
+               set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+               return()
+       endif()
+       if(NOT hash)
+               set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
+               return()
+       endif()
+
+       # TODO sanitize
+       #if((${ARGN}" MATCHES "&&") OR
+       #       (ARGN MATCHES "||") OR
+       #       (ARGN MATCHES "\\;"))
+       #       message("Please report the following error to the project!")
+       #       message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
+       #endif()
+
+       #message(STATUS "Arguments to execute_process: ${ARGN}")
+
+       execute_process(COMMAND
+               "${GIT_EXECUTABLE}"
+               describe
+               ${hash}
+               ${ARGN}
+               WORKING_DIRECTORY
+               "${CMAKE_SOURCE_DIR}"
+               RESULT_VARIABLE
+               res
+               OUTPUT_VARIABLE
+               out
+               ERROR_QUIET
+               OUTPUT_STRIP_TRAILING_WHITESPACE)
+       if(NOT res EQUAL 0)
+                message(STATUS "RES ${res} OUT ${out}")
+               set(out "${out}-${res}-NOTFOUND")
+       endif()
+
+       set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
+function(git_get_exact_tag _var)
+       git_describe(out --exact-match ${ARGN})
+       set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
diff --git a/cmake/GetGitRevisionDescription.cmake.in b/cmake/GetGitRevisionDescription.cmake.in
new file mode 100644 (file)
index 0000000..888ce13
--- /dev/null
@@ -0,0 +1,38 @@
+# 
+# Internal file for GetGitRevisionDescription.cmake
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+set(HEAD_HASH)
+
+file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
+
+string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
+if(HEAD_CONTENTS MATCHES "ref")
+       # named branch
+       string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
+       if(EXISTS "@GIT_DIR@/${HEAD_REF}")
+               configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+       elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
+               configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+               set(HEAD_HASH "${HEAD_REF}")
+       endif()
+else()
+       # detached HEAD
+       configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
+endif()
+
+if(NOT HEAD_HASH)
+       file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+       string(STRIP "${HEAD_HASH}" HEAD_HASH)
+endif()
diff --git a/cmake/QuasselCompileSettings.cmake b/cmake/QuasselCompileSettings.cmake
new file mode 100644 (file)
index 0000000..1fc8161
--- /dev/null
@@ -0,0 +1,71 @@
+# This file contains compile flags and general build configuration for Quassel
+#
+# (C) 2014 by the Quassel Project <devel@quassel-irc.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+include(CheckCXXCompilerFlag)
+
+if(CMAKE_CONFIGURATION_TYPES)
+    set(CMAKE_CONFIGURATION_TYPES Release RelWithDebInfo Debug Debugfull Profile)
+    set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "These are the configuration types we support" FORCE)
+endif()
+
+if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo Debug Debugfull Profile" FORCE)
+endif()
+
+# Qt debug flags
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG)
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUGFULL QT_DEBUG)
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG NDEBUG)
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG NDEBUG)
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_PROFILE QT_NO_DEBUG NDEBUG)
+set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG NDEBUG)
+
+if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+    set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS QT_NO_DEBUG NDEBUG)
+endif()
+
+# Enable various flags on gcc
+if(CMAKE_COMPILER_IS_GNUCXX)
+    # Let's just hope that all gccs support these options and skip the tests...
+    # -fno-strict-aliasing is needed apparently for Qt < 4.6
+    set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} -ansi -Wall -Wextra -Wnon-virtual-dtor -fno-strict-aliasing")
+    #  set(CMAKE_CXX_FLAGS_RELEASE          "-O2")   # use CMake default
+    #  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g -O2")  # use CMake default
+    set(CMAKE_CXX_FLAGS_DEBUG             "-g -ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline")
+    set(CMAKE_CXX_FLAGS_DEBUGFULL         "-g3 -ggdb -fno-inline")
+    set(CMAKE_CXX_FLAGS_PROFILE           "-g3 -ggdb -fno-inline -ftest-coverage -fprofile-arcs")
+
+    set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} -ansi -W -Wall -Wextra -Wnon-virtual-dtor -fno-strict-aliasing -Wundef -Wcast-align -Wpointer-arith -Wformat-security -fno-check-new -fno-common")
+
+    check_cxx_compiler_flag(-Woverloaded-virtual CXX_W_OVERLOADED_VIRTUAL)
+    if(CXX_W_OVERLOADED_VIRTUAL)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
+    endif()
+
+    # Just for miniz
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-unused-function -Wno-undef -fno-strict-aliasing")
+endif()
+
+# ... and for Clang
+if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wextra -Wpointer-arith -Wformat-security -Woverloaded-virtual -fno-common -Werror=return-type")
+    #  set(CMAKE_CXX_FLAGS_RELEASE        "-O2 -DNDEBUG -DQT_NO_DEBUG")     # Use CMake default
+    #  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG")  # Use CMake default
+    set(CMAKE_CXX_FLAGS_DEBUG          "-g -O2 -fno-inline")
+    set(CMAKE_CXX_FLAGS_DEBUGFULL      "-g3 -fno-inline")
+    set(CMAKE_CXX_FLAGS_PROFILE        "-g3 -fno-inline -ftest-coverage -fprofile-arcs")
+
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-unused-function -Wno-undef -fno-strict-aliasing")
+endif()
+
+# Mac build stuff
+if(APPLE AND DEPLOY)
+    set(CMAKE_OSX_ARCHITECTURES "x86_64")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.6")
+    set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.6.sdk/")
+    add_definitions(-DMAC_10_6_SDK)
+endif()
diff --git a/cmake/QuasselMacros.cmake b/cmake/QuasselMacros.cmake
new file mode 100644 (file)
index 0000000..eb9dca6
--- /dev/null
@@ -0,0 +1,126 @@
+# This file contains various macros useful for building Quassel.
+#
+# (C) 2014 by the Quassel Project <devel@quassel-irc.org>
+#
+# The qt4_use_modules function was taken from CMake's Qt4Macros.cmake:
+# (C) 2005-2009 Kitware, Inc.
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+############################
+# Macros for dealing with Qt
+############################
+
+# CMake gained this function in 2.8.10. To be able to use older versions, we've copied
+# this here. If present, the function from CMake will take precedence and our copy will be ignored.
+function(quassel_qt4_use_modules _target _link_type)
+    message("SPUT calling")
+    if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE")
+        set(modules ${ARGN})
+        set(link_type ${_link_type})
+    else()
+        set(modules ${_link_type} ${ARGN})
+    endif()
+    foreach(_module ${modules})
+        string(TOUPPER ${_module} _ucmodule)
+        set(_targetPrefix QT_QT${_ucmodule})
+        if (_ucmodule STREQUAL QAXCONTAINER OR _ucmodule STREQUAL QAXSERVER)
+            if (NOT QT_Q${_ucmodule}_FOUND)
+                message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
+            endif()
+            set(_targetPrefix QT_Q${_ucmodule})
+        else()
+            if (NOT QT_QT${_ucmodule}_FOUND)
+                message(FATAL_ERROR "Can not use \"${_module}\" module which has not yet been found.")
+            endif()
+            if ("${_ucmodule}" STREQUAL "MAIN")
+                message(FATAL_ERROR "Can not use \"${_module}\" module with qt4_use_modules.")
+            endif()
+        endif()
+        target_link_libraries(${_target} ${link_type} ${${_targetPrefix}_LIBRARIES})
+        set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${${_targetPrefix}_INCLUDE_DIR} ${QT_HEADERS_DIR} ${QT_MKSPECS_DIR}/default)
+        set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${${_targetPrefix}_COMPILE_DEFINITIONS})
+    endforeach()
+endfunction()
+
+# Some wrappers for simplifying dual-Qt support
+
+function(qt_use_modules)
+    if (WITH_QT5)
+        qt5_use_modules(${ARGN})
+    else()
+        qt4_use_modules(${ARGN})
+    endif()
+endfunction()
+
+function(qt_wrap_ui _var)
+    if (WITH_QT5)
+        qt5_wrap_ui(var ${ARGN})
+    else()
+        qt4_wrap_ui(var ${ARGN})
+    endif()
+    set(${_var} ${${_var}} ${var} PARENT_SCOPE)
+endfunction()
+
+function(qt_add_resources _var)
+    if (WITH_QT5)
+        qt5_add_resources(var ${ARGN})
+    else()
+        qt4_add_resources(var ${ARGN})
+    endif()
+    set(${_var} ${${_var}} ${var} PARENT_SCOPE)
+endfunction()
+
+function(qt_add_dbus_interface _var)
+    if (WITH_QT5)
+        qt5_add_dbus_interface(var ${ARGN})
+    else()
+        qt4_add_dbus_interface(var ${ARGN})
+    endif()
+    set(${_var} ${${_var}} ${var} PARENT_SCOPE)
+endfunction()
+
+function(qt_add_dbus_adaptor _var)
+    if (WITH_QT5)
+        qt5_add_dbus_adaptor(var ${ARGN})
+    else()
+        qt4_add_dbus_adaptor(var ${ARGN})
+    endif()
+    set(${_var} ${${_var}} ${var} PARENT_SCOPE)
+endfunction()
+
+######################################
+# Macros for dealing with translations
+######################################
+
+# This generates a .ts from a .po file
+macro(generate_ts outvar basename)
+  set(input ${basename}.po)
+  set(output ${CMAKE_BINARY_DIR}/po/${basename}.ts)
+  add_custom_command(OUTPUT ${output}
+          COMMAND ${QT_LCONVERT_EXECUTABLE}
+          ARGS -i ${input}
+               -of ts
+               -o ${output}
+          WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po
+# This is a workaround to add (duplicate) strings that lconvert missed to the .ts
+          COMMAND ${QT_LUPDATE_EXECUTABLE}
+          ARGS -silent
+               ${CMAKE_SOURCE_DIR}/src/
+               -ts ${output}
+          DEPENDS ${basename}.po)
+  set(${outvar} ${output})
+endmacro(generate_ts outvar basename)
+
+# This generates a .qm from a .ts file
+macro(generate_qm outvar basename)
+  set(input ${CMAKE_BINARY_DIR}/po/${basename}.ts)
+  set(output ${CMAKE_BINARY_DIR}/po/${basename}.qm)
+  add_custom_command(OUTPUT ${output}
+          COMMAND ${QT_LRELEASE_EXECUTABLE}
+          ARGS -silent
+               ${input}
+          DEPENDS ${basename}.ts)
+  set(${outvar} ${output})
+endmacro(generate_qm outvar basename)
diff --git a/cmake/README b/cmake/README
new file mode 100644 (file)
index 0000000..b53bc32
--- /dev/null
@@ -0,0 +1,5 @@
+We bundle some CMake scripts that are not part of CMake itself, for convenience
+on platforms that do not have a standard location for packages to put their
+CMake support into. Most of those scripts originate from the KDE community;
+some are from other sources. Please see the files themselves for copyright
+and license statements.
diff --git a/cmake/modules/FindDBusMenuQt.cmake b/cmake/modules/FindDBusMenuQt.cmake
deleted file mode 100644 (file)
index 82673b7..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# - Try to find dbusmenu-qt
-# Once done this will define
-#
-#  DBUSMENUQT_FOUND - system has dbusmenu-qt
-#  DBUSMENUQT_INCLUDE_DIR - the dbusmenu-qt include directory
-#  DBUSMENUQT_LIBRARIES - the libraries needed to use dbusmenu-qt
-#  DBUSMENUQT_DEFINITIONS - Compiler switches required for using dbusmenu-qt
-
-# Copyright (c) 2009, Canonical Ltd.
-# - Author: Aurélien Gâteau <aurelien.gateau@canonical.com>
-#
-# Based on FindQCA2.cmake
-# Copyright (c) 2006, Michael Larouche, <michael.larouche@kdemail.net>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-include(FindPackageHandleStandardArgs)
-
-find_package(PkgConfig)
-pkg_check_modules(PC_DBUSMENUQT QUIET dbusmenu-qt)
-set(DBUSMENUQT_DEFINITIONS ${PC_DBUSMENUQT_CFLAGS_OTHER})
-
-find_library(DBUSMENUQT_LIBRARIES
-    NAMES dbusmenu-qt dbusmenu-qtd
-    HINTS ${PC_DBUSMENUQT_LIBDIR} ${PC_DBUSMENUQT_LIBRARY_DIRS}
-    )
-
-find_path(DBUSMENUQT_INCLUDE_DIR dbusmenuexporter.h
-    HINTS ${PC_DBUSMENUQT_INCLUDEDIR} ${PC_DBUSMENUQT_INCLUDE_DIRS}
-    PATH_SUFFIXES dbusmenu-qt
-    )
-
-find_package_handle_standard_args(DBusMenuQt "Could not find dbusmenu-qt; available at https://launchpad.net/libdbusmenu-qt/" DBUSMENUQT_LIBRARIES DBUSMENUQT_INCLUDE_DIR)
-
-mark_as_advanced(DBUSMENUQT_INCLUDE_DIR DBUSMENUQT_LIBRARIES)
diff --git a/cmake/modules/FindOpenSSL.cmake b/cmake/modules/FindOpenSSL.cmake
deleted file mode 100644 (file)
index 4583c17..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# - Try to find the OpenSSL encryption library
-# Once done this will define
-#
-#  OPENSSL_FOUND - system has the OpenSSL library
-#  OPENSSL_INCLUDE_DIR - the OpenSSL include directory
-#  OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
-#  OPENSSL_EAY_LIBRARIES - The additional libraries needed to use OpenSSL on windows
-
-# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-INCLUDE(FindLibraryWithDebug)
-
-# on win32 we additional need to link to libeay32.lib
-MACRO(OPENSSL_ADD_LIB_EAY_LIBS)
-   FIND_LIBRARY_WITH_DEBUG(OPENSSL_EAY_LIBRARIES
-                   WIN32_DEBUG_POSTFIX d
-                   NAMES eay libeay libeay32 libeay32MT)
-ENDMACRO(OPENSSL_ADD_LIB_EAY_LIBS)
-
-IF(OPENSSL_LIBRARIES)
-   SET(OpenSSL_FIND_QUIETLY TRUE)
-ENDIF(OPENSSL_LIBRARIES)
-
-IF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
-   SET(LIB_FOUND 1)
-ENDIF(SSL_EAY_DEBUG AND SSL_EAY_RELEASE)
-
-FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h )
-
-FIND_LIBRARY_WITH_DEBUG(OPENSSL_LIBRARIES
-                WIN32_DEBUG_POSTFIX d
-                NAMES ssl ssleay ssleay32 libssleay32 ssleay32MT)
-
-IF(WIN32)
-   OPENSSL_ADD_LIB_EAY_LIBS()
-   IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND OPENSSL_EAY_LIBRARIES)
-      SET(OPENSSL_FOUND TRUE)
-   ELSE(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND OPENSSL_EAY_LIBRARIES)
-      SET(OPENSSL_FOUND FALSE)
-   ENDIF (OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES AND OPENSSL_EAY_LIBRARIES)
-ELSE(WIN32)
-   IF(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
-      SET(OPENSSL_FOUND TRUE)
-   ELSE(OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
-      SET(OPENSSL_FOUND FALSE)
-   ENDIF (OPENSSL_INCLUDE_DIR AND OPENSSL_LIBRARIES)
-ENDIF(WIN32)
-
-IF (OPENSSL_FOUND)
-   IF (NOT OpenSSL_FIND_QUIETLY)
-      MESSAGE(STATUS "Found OpenSSL: ${OPENSSL_LIBRARIES}")
-   ENDIF (NOT OpenSSL_FIND_QUIETLY)
-ELSE (OPENSSL_FOUND)
-   IF (OpenSSL_FIND_REQUIRED)
-      MESSAGE(FATAL_ERROR "Could NOT find OpenSSL")
-   ENDIF (OpenSSL_FIND_REQUIRED)
-ENDIF (OPENSSL_FOUND)
-
-MARK_AS_ADVANCED(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
-
diff --git a/cmake/modules/FindPhonon.cmake b/cmake/modules/FindPhonon.cmake
deleted file mode 100644 (file)
index ab0a86c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-# Find libphonon
-# Once done this will define
-#
-#  PHONON_FOUND    - system has Phonon Library
-#  PHONON_INCLUDES - the Phonon include directory
-#  PHONON_LIBS     - link these to use Phonon
-#  PHONON_VERSION  - the version of the Phonon Library
-
-# Copyright (c) 2008, Matthias Kretz <kretz@kde.org>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-macro(_phonon_find_version)
-   set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/phonon/phononnamespace.h")
-   if (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
-      set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
-   endif (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
-   file(READ ${_phonon_namespace_header_file} _phonon_header LIMIT 5000 OFFSET 1000)
-   string(REGEX MATCH "define PHONON_VERSION_STR \"(4\\.[0-9]+\\.[0-9a-z]+)\"" _phonon_version_match "${_phonon_header}")
-   set(PHONON_VERSION "${CMAKE_MATCH_1}")
-   message(STATUS "Phonon Version: ${PHONON_VERSION}")
-endmacro(_phonon_find_version)
-
-if(PHONON_FOUND)
-   # Already found, nothing more to do except figuring out the version
-   _phonon_find_version()
-else(PHONON_FOUND)
-   if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
-      set(PHONON_FIND_QUIETLY TRUE)
-   endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
-
-   find_library(PHONON_LIBRARY_RELEASE NAMES phonon phonon4 HINTS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR})
-   find_library(PHONON_LIBRARY_DEBUG NAMES phonond phonond4 HINTS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR})
-
-   # if the release- as well as the debug-version of the library have been found:
-   IF (PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
-     # if the generator supports configuration types then set
-     # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
-     IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-       SET(PHONON_LIBRARY       optimized ${PHONON_LIBRARY_RELEASE} debug ${PHONON_LIBRARY_DEBUG})
-     ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-       # if there are no configuration types and CMAKE_BUILD_TYPE has no value
-       # then just use the release libraries
-       SET(PHONON_LIBRARY       ${PHONON_LIBRARY_RELEASE} )
-     ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-   ELSE(PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
-     IF (PHONON_LIBRARY_RELEASE)
-       SET(PHONON_LIBRARY ${PHONON_LIBRARY_RELEASE})
-     ENDIF (PHONON_LIBRARY_RELEASE)
-   ENDIF (PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
-
-   find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h HINTS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
-
-   if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
-      set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
-      set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
-      set(PHONON_FOUND TRUE)
-      _phonon_find_version()
-   else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
-      set(PHONON_FOUND FALSE)
-   endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
-
-   include(FindPackageHandleStandardArgs)
-   find_package_handle_standard_args(Phonon  DEFAULT_MSG  PHONON_INCLUDE_DIR PHONON_LIBRARY)
-
-   mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY)
-endif(PHONON_FOUND)
diff --git a/cmake/modules/FindPkgConfig.cmake b/cmake/modules/FindPkgConfig.cmake
deleted file mode 100644 (file)
index 78c4a13..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-# - a pkg-config module for CMake
-#
-# Usage:
-#   pkg_check_modules(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
-#     checks for all the given modules
-#
-#   pkg_search_module(<PREFIX> [REQUIRED] [QUIET] <MODULE> [<MODULE>]*)
-#     checks for given modules and uses the first working one
-#
-# When the 'REQUIRED' argument was set, macros will fail with an error
-# when module(s) could not be found
-#
-# When the 'QUIET' argument is set, no status messages will be printed.
-#
-# It sets the following variables:
-#   PKG_CONFIG_FOUND         ... true if pkg-config works on the system
-#   PKG_CONFIG_EXECUTABLE    ... pathname of the pkg-config program
-#   <PREFIX>_FOUND           ... set to 1 if module(s) exist
-#
-# For the following variables two sets of values exist; first one is the
-# common one and has the given PREFIX. The second set contains flags
-# which are given out when pkgconfig was called with the '--static'
-# option.
-#   <XPREFIX>_LIBRARIES      ... only the libraries (w/o the '-l')
-#   <XPREFIX>_LIBRARY_DIRS   ... the paths of the libraries (w/o the '-L')
-#   <XPREFIX>_LDFLAGS        ... all required linker flags
-#   <XPREFIX>_LDFLAGS_OTHER  ... all other linker flags
-#   <XPREFIX>_INCLUDE_DIRS   ... the '-I' preprocessor flags (w/o the '-I')
-#   <XPREFIX>_CFLAGS         ... all required cflags
-#   <XPREFIX>_CFLAGS_OTHER   ... the other compiler flags
-#
-#   <XPREFIX> = <PREFIX>        for common case
-#   <XPREFIX> = <PREFIX>_STATIC for static linking
-#
-# There are some special variables whose prefix depends on the count
-# of given modules. When there is only one module, <PREFIX> stays
-# unchanged. When there are multiple modules, the prefix will be
-# changed to <PREFIX>_<MODNAME>:
-#   <XPREFIX>_VERSION    ... version of the module
-#   <XPREFIX>_PREFIX     ... prefix-directory of the module
-#   <XPREFIX>_INCLUDEDIR ... include-dir of the module
-#   <XPREFIX>_LIBDIR     ... lib-dir of the module
-#
-#   <XPREFIX> = <PREFIX>  when |MODULES| == 1, else
-#   <XPREFIX> = <PREFIX>_<MODNAME>
-#
-# A <MODULE> parameter can have the following formats:
-#   {MODNAME}            ... matches any version
-#   {MODNAME}>={VERSION} ... at least version <VERSION> is required
-#   {MODNAME}={VERSION}  ... exactly version <VERSION> is required
-#   {MODNAME}<={VERSION} ... modules must not be newer than <VERSION>
-#
-# Examples
-#   pkg_check_modules (GLIB2   glib-2.0)
-#
-#   pkg_check_modules (GLIB2   glib-2.0>=2.10)
-#     requires at least version 2.10 of glib2 and defines e.g.
-#       GLIB2_VERSION=2.10.3
-#
-#   pkg_check_modules (FOO     glib-2.0>=2.10 gtk+-2.0)
-#     requires both glib2 and gtk2, and defines e.g.
-#       FOO_glib-2.0_VERSION=2.10.3
-#       FOO_gtk+-2.0_VERSION=2.8.20
-#
-#   pkg_check_modules (XRENDER REQUIRED xrender)
-#     defines e.g.:
-#       XRENDER_LIBRARIES=Xrender;X11
-#       XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
-#
-#   pkg_search_module (BAR     libxml-2.0 libxml2 libxml>=2)
-
-
-# Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-#
-# Redistribution and use, with or without modification, are permitted
-# provided that the following conditions are met:
-#
-#    1. Redistributions must retain the above copyright notice, this
-#       list of conditions and the following disclaimer.
-#    2. The name of the author may not be used to endorse or promote
-#       products derived from this software without specific prior
-#       written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Modified for KDE use from cmake 2.6.2 version, to add QUIET option to
-# pkg_check_modules().
-# Copyright (c) 2009, David Jarvie <djarvie@kde.org>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-### Common stuff ####
-set(PKG_CONFIG_VERSION 1)
-set(PKG_CONFIG_FOUND   0)
-
-find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config DOC "pkg-config executable")
-mark_as_advanced(PKG_CONFIG_EXECUTABLE)
-
-if(PKG_CONFIG_EXECUTABLE)
-  set(PKG_CONFIG_FOUND 1)
-endif(PKG_CONFIG_EXECUTABLE)
-
-
-# Unsets the given variables
-macro(_pkgconfig_unset var)
-  set(${var} "" CACHE INTERNAL "")
-endmacro(_pkgconfig_unset)
-
-macro(_pkgconfig_set var value)
-  set(${var} ${value} CACHE INTERNAL "")
-endmacro(_pkgconfig_set)
-
-# Invokes pkgconfig, cleans up the result and sets variables
-macro(_pkgconfig_invoke _pkglist _prefix _varname _regexp)
-  set(_pkgconfig_invoke_result)
-
-  execute_process(
-    COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${_pkglist}
-    OUTPUT_VARIABLE _pkgconfig_invoke_result
-    RESULT_VARIABLE _pkgconfig_failed)
-
-  if (_pkgconfig_failed)
-    set(_pkgconfig_${_varname} "")
-    _pkgconfig_unset(${_prefix}_${_varname})
-  else(_pkgconfig_failed)
-    string(REGEX REPLACE "[\r\n]"                  " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
-    string(REGEX REPLACE " +$"                     ""  _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
-
-    if (NOT ${_regexp} STREQUAL "")
-      string(REGEX REPLACE "${_regexp}" " " _pkgconfig_invoke_result "${_pkgconfig_invoke_result}")
-    endif(NOT ${_regexp} STREQUAL "")
-
-    separate_arguments(_pkgconfig_invoke_result)
-
-    #message(STATUS "  ${_varname} ... ${_pkgconfig_invoke_result}")
-    set(_pkgconfig_${_varname} ${_pkgconfig_invoke_result})
-    _pkgconfig_set(${_prefix}_${_varname} "${_pkgconfig_invoke_result}")
-  endif(_pkgconfig_failed)
-endmacro(_pkgconfig_invoke)
-
-# Invokes pkgconfig two times; once without '--static' and once with
-# '--static'
-macro(_pkgconfig_invoke_dyn _pkglist _prefix _varname cleanup_regexp)
-  _pkgconfig_invoke("${_pkglist}" ${_prefix}        ${_varname} "${cleanup_regexp}" ${ARGN})
-  _pkgconfig_invoke("${_pkglist}" ${_prefix} STATIC_${_varname} "${cleanup_regexp}" --static  ${ARGN})
-endmacro(_pkgconfig_invoke_dyn)
-
-# Splits given arguments into options and a package list
-macro(_pkgconfig_parse_options _result _is_req _is_silent)
-  set(${_is_req} 0)
-  set(${_is_silent} 0)
-
-  foreach(_pkg ${ARGN})
-    if (_pkg STREQUAL "REQUIRED")
-      set(${_is_req} 1)
-    endif (_pkg STREQUAL "REQUIRED")
-    if (_pkg STREQUAL "QUIET")
-      set(${_is_silent} 1)
-    endif (_pkg STREQUAL "QUIET")
-  endforeach(_pkg ${ARGN})
-
-  set(${_result} ${ARGN})
-  list(REMOVE_ITEM ${_result} "REQUIRED")
-  list(REMOVE_ITEM ${_result} "QUIET")
-endmacro(_pkgconfig_parse_options)
-
-###
-macro(_pkg_check_modules_internal _is_required _is_silent _prefix)
-  _pkgconfig_unset(${_prefix}_FOUND)
-  _pkgconfig_unset(${_prefix}_VERSION)
-  _pkgconfig_unset(${_prefix}_PREFIX)
-  _pkgconfig_unset(${_prefix}_INCLUDEDIR)
-  _pkgconfig_unset(${_prefix}_LIBDIR)
-  _pkgconfig_unset(${_prefix}_LIBS)
-  _pkgconfig_unset(${_prefix}_LIBS_L)
-  _pkgconfig_unset(${_prefix}_LIBS_PATHS)
-  _pkgconfig_unset(${_prefix}_LIBS_OTHER)
-  _pkgconfig_unset(${_prefix}_CFLAGS)
-  _pkgconfig_unset(${_prefix}_CFLAGS_I)
-  _pkgconfig_unset(${_prefix}_CFLAGS_OTHER)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBDIR)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_L)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_PATHS)
-  _pkgconfig_unset(${_prefix}_STATIC_LIBS_OTHER)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_I)
-  _pkgconfig_unset(${_prefix}_STATIC_CFLAGS_OTHER)
-
-  # create a better addressable variable of the modules and calculate its size
-  set(_pkg_check_modules_list ${ARGN})
-  list(LENGTH _pkg_check_modules_list _pkg_check_modules_cnt)
-
-  if(PKG_CONFIG_EXECUTABLE)
-    # give out status message telling checked module
-    if (NOT ${_is_silent})
-      if (_pkg_check_modules_cnt EQUAL 1)
-        message(STATUS "checking for module '${_pkg_check_modules_list}'")
-      else(_pkg_check_modules_cnt EQUAL 1)
-        message(STATUS "checking for modules '${_pkg_check_modules_list}'")
-      endif(_pkg_check_modules_cnt EQUAL 1)
-    endif(NOT ${_is_silent})
-
-    set(_pkg_check_modules_packages)
-    set(_pkg_check_modules_failed)
-
-    # iterate through module list and check whether they exist and match the required version
-    foreach (_pkg_check_modules_pkg ${_pkg_check_modules_list})
-      set(_pkg_check_modules_exist_query)
-
-      # check whether version is given
-      if (_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
-        string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\1" _pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
-        string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\2" _pkg_check_modules_pkg_op   "${_pkg_check_modules_pkg}")
-        string(REGEX REPLACE "(.*[^><])(>=|=|<=)(.*)" "\\3" _pkg_check_modules_pkg_ver  "${_pkg_check_modules_pkg}")
-      else(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
-        set(_pkg_check_modules_pkg_name "${_pkg_check_modules_pkg}")
-        set(_pkg_check_modules_pkg_op)
-        set(_pkg_check_modules_pkg_ver)
-      endif(_pkg_check_modules_pkg MATCHES ".*(>=|=|<=).*")
-
-      # handle the operands
-      if (_pkg_check_modules_pkg_op STREQUAL ">=")
-        list(APPEND _pkg_check_modules_exist_query --atleast-version)
-      endif(_pkg_check_modules_pkg_op STREQUAL ">=")
-
-      if (_pkg_check_modules_pkg_op STREQUAL "=")
-        list(APPEND _pkg_check_modules_exist_query --exact-version)
-      endif(_pkg_check_modules_pkg_op STREQUAL "=")
-
-      if (_pkg_check_modules_pkg_op STREQUAL "<=")
-        list(APPEND _pkg_check_modules_exist_query --max-version)
-      endif(_pkg_check_modules_pkg_op STREQUAL "<=")
-
-      # create the final query which is of the format:
-      # * --atleast-version <version> <pkg-name>
-      # * --exact-version <version> <pkg-name>
-      # * --max-version <version> <pkg-name>
-      # * --exists <pkg-name>
-      if (_pkg_check_modules_pkg_op)
-        list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_ver}")
-      else(_pkg_check_modules_pkg_op)
-        list(APPEND _pkg_check_modules_exist_query --exists)
-      endif(_pkg_check_modules_pkg_op)
-
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_VERSION)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_PREFIX)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_INCLUDEDIR)
-      _pkgconfig_unset(${_prefix}_${_pkg_check_modules_pkg_name}_LIBDIR)
-
-      list(APPEND _pkg_check_modules_exist_query "${_pkg_check_modules_pkg_name}")
-      list(APPEND _pkg_check_modules_packages    "${_pkg_check_modules_pkg_name}")
-
-      # execute the query
-      execute_process(
-        COMMAND ${PKG_CONFIG_EXECUTABLE} ${_pkg_check_modules_exist_query}
-        RESULT_VARIABLE _pkgconfig_retval)
-
-      # evaluate result and tell failures
-      if (_pkgconfig_retval)
-        if(NOT ${_is_silent})
-          message(STATUS "  package '${_pkg_check_modules_pkg}' not found")
-        endif(NOT ${_is_silent})
-
-        set(_pkg_check_modules_failed 1)
-      endif(_pkgconfig_retval)
-    endforeach(_pkg_check_modules_pkg)
-
-    if(_pkg_check_modules_failed)
-      # fail when requested
-      if (${_is_required})
-        message(SEND_ERROR "A required package was not found")
-      endif (${_is_required})
-    else(_pkg_check_modules_failed)
-      # when we are here, we checked whether requested modules
-      # exist. Now, go through them and set variables
-
-      _pkgconfig_set(${_prefix}_FOUND 1)
-      list(LENGTH _pkg_check_modules_packages pkg_count)
-
-      # iterate through all modules again and set individual variables
-      foreach (_pkg_check_modules_pkg ${_pkg_check_modules_packages})
-        # handle case when there is only one package required
-        if (pkg_count EQUAL 1)
-          set(_pkg_check_prefix "${_prefix}")
-        else(pkg_count EQUAL 1)
-          set(_pkg_check_prefix "${_prefix}_${_pkg_check_modules_pkg}")
-        endif(pkg_count EQUAL 1)
-
-        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" VERSION    ""   --modversion )
-        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" PREFIX     ""   --variable=prefix )
-        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" INCLUDEDIR ""   --variable=includedir )
-        _pkgconfig_invoke(${_pkg_check_modules_pkg} "${_pkg_check_prefix}" LIBDIR     ""   --variable=libdir )
-
-        if (NOT ${_is_silent})
-          message(STATUS "  found ${_pkg_check_modules_pkg}, version ${_pkgconfig_VERSION}")
-        endif (NOT ${_is_silent})
-      endforeach(_pkg_check_modules_pkg)
-
-      # set variables which are combined for multiple modules
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARIES           "(^| )-l" --libs-only-l )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LIBRARY_DIRS        "(^| )-L" --libs-only-L )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS             ""        --libs )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" LDFLAGS_OTHER       ""        --libs-only-other )
-
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" INCLUDE_DIRS        "(^| )-I" --cflags-only-I )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS              ""        --cflags )
-      _pkgconfig_invoke_dyn("${_pkg_check_modules_packages}" "${_prefix}" CFLAGS_OTHER        ""        --cflags-only-other )
-    endif(_pkg_check_modules_failed)
-  else(PKG_CONFIG_EXECUTABLE)
-    if (${_is_required})
-      message(SEND_ERROR "pkg-config tool not found")
-    endif (${_is_required})
-  endif(PKG_CONFIG_EXECUTABLE)
-endmacro(_pkg_check_modules_internal)
-
-###
-### User visible macros start here
-###
-
-###
-macro(pkg_check_modules _prefix _module0)
-  # check cached value
-  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
-    _pkgconfig_parse_options   (_pkg_modules _pkg_is_required _pkg_is_silent "${_module0}" ${ARGN})
-    _pkg_check_modules_internal("${_pkg_is_required}" "${_pkg_is_silent}" "${_prefix}" ${_pkg_modules})
-
-    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
-  endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
-endmacro(pkg_check_modules)
-
-###
-macro(pkg_search_module _prefix _module0)
-  # check cached value
-  if (NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
-    set(_pkg_modules_found 0)
-    _pkgconfig_parse_options(_pkg_modules_alt _pkg_is_required _pkg_is_silent "${_module0}" ${ARGN})
-
-    if (NOT ${_pkg_is_silent})
-      message(STATUS "checking for one of the modules '${_pkg_modules_alt}'")
-    endif (NOT ${_pkg_is_silent})
-
-    # iterate through all modules and stop at the first working one.
-    foreach(_pkg_alt ${_pkg_modules_alt})
-      if(NOT _pkg_modules_found)
-        _pkg_check_modules_internal(0 1 "${_prefix}" "${_pkg_alt}")
-      endif(NOT _pkg_modules_found)
-
-      if (${_prefix}_FOUND)
-        set(_pkg_modules_found 1)
-      endif(${_prefix}_FOUND)
-    endforeach(_pkg_alt)
-
-    if (NOT ${_prefix}_FOUND)
-      if(${_pkg_is_required})
-        message(SEND_ERROR "None of the required '${_pkg_modules_alt}' found")
-      endif(${_pkg_is_required})
-    endif(NOT ${_prefix}_FOUND)
-
-    _pkgconfig_set(__pkg_config_checked_${_prefix} ${PKG_CONFIG_VERSION})
-  endif(NOT DEFINED __pkg_config_checked_${_prefix} OR __pkg_config_checked_${_prefix} LESS ${PKG_CONFIG_VERSION} OR NOT ${_prefix}_FOUND)
-endmacro(pkg_search_module)
-
-### Local Variables:
-### mode: cmake
-### End:
diff --git a/cmake/modules/QuasselMacros.cmake b/cmake/modules/QuasselMacros.cmake
deleted file mode 100644 (file)
index f0791ec..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# This macro sets variables for the Qt modules we need.
-
-macro(setup_qt_variables)
-  set(QUASSEL_QT_LIBRARIES )
-  set(QUASSEL_QT_INCLUDES ${QT_INCLUDE_DIR})    # Qt4
-  set(QUASSEL_QT_DEFINITIONS ${QT_DEFINITIONS}) # Qt4
-
-  IF(WIN32)
-    set(MAIN Main)
-  ENDIF(WIN32)
-  foreach(qtmod Core ${ARGV} ${MAIN})
-    if(WITH_QT5)
-      find_package(Qt5${qtmod} ${QT_MIN_VERSION} REQUIRED)
-      list(APPEND QUASSEL_QT_LIBRARIES ${Qt5${qtmod}_LIBRARIES})
-      list(APPEND QUASSEL_QT_INCLUDES ${Qt5${qtmod}_INCLUDE_DIRS})
-      list(APPEND QUASSEL_QT_DEFINITIONS ${Qt5${qtmod}_DEFINITIONS} ${Qt5${qtmod}_EXECUTABLE_COMPILE_FLAGS})
-    else(WITH_QT5)
-      string(TOUPPER ${qtmod} QTMOD)
-      list(APPEND QUASSEL_QT_LIBRARIES ${QT_QT${QTMOD}_LIBRARY})
-      if(STATIC)
-        list(APPEND QUASSEL_QT_LIBRARIES ${QT_QT${QTMOD}_LIB_DEPENDENCIES})
-      endif(STATIC)
-      list(APPEND QUASSEL_QT_INCLUDES ${QT_QT${QTMOD}_INCLUDE_DIR})
-      list(APPEND QUASSEL_QT_DEFINITIONS -DQT_QT${QTMOD}_LIB)
-    endif(WITH_QT5)
-  endforeach(qtmod)
-
-  list(REMOVE_DUPLICATES QUASSEL_QT_LIBRARIES)
-  list(REMOVE_DUPLICATES QUASSEL_QT_INCLUDES)
-  list(REMOVE_DUPLICATES QUASSEL_QT_DEFINITIONS)
-
-  # The COMPILE_FLAGS property expects a string, not a list...
-  set(QUASSEL_QT_COMPILEFLAGS )
-  foreach(flag ${QUASSEL_QT_DEFINITIONS})
-    set(QUASSEL_QT_COMPILEFLAGS "${QUASSEL_QT_COMPILEFLAGS} ${flag}")
-  endforeach(flag)
-
-endmacro(setup_qt_variables)
-
-# This generates a .ts from a .po file
-macro(generate_ts outvar basename)
-  set(input ${basename}.po)
-  set(output ${CMAKE_BINARY_DIR}/po/${basename}.ts)
-  add_custom_command(OUTPUT ${output}
-          COMMAND ${QT_LCONVERT_EXECUTABLE}
-          ARGS -i ${input}
-               -of ts
-               -o ${output}
-          WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/po
-# This is a workaround to add (duplicate) strings that lconvert missed to the .ts
-          COMMAND ${QT_LUPDATE_EXECUTABLE}
-          ARGS -silent
-              ${CMAKE_SOURCE_DIR}/src/
-               -ts ${output}
-          DEPENDS ${basename}.po)
-  set(${outvar} ${output})
-endmacro(generate_ts outvar basename)
-
-# This generates a .qm from a .ts file
-macro(generate_qm outvar basename)
-  set(input ${CMAKE_BINARY_DIR}/po/${basename}.ts)
-  set(output ${CMAKE_BINARY_DIR}/po/${basename}.qm)
-  add_custom_command(OUTPUT ${output}
-          COMMAND ${QT_LRELEASE_EXECUTABLE}
-          ARGS -silent
-               ${input}
-          DEPENDS ${basename}.ts)
-  set(${outvar} ${output})
-endmacro(generate_qm outvar basename)
diff --git a/cmake/modules/README b/cmake/modules/README
deleted file mode 100644 (file)
index 560323d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Most of these modules have been copied from KDE's repository.
-
-Files starting with Quassel* are solely created by us.
-
-Below is the contents of KDE's original README:
-
---------8<--------------------------------------------------------------
-these are additional cmake modules required for compiling KDE3 or KDE4
-applications with cmake. Some of them are enhanced versions of the files
-coming with cmake, some of them are NOT yet part of cmake.
-To use them, copy them into the cmake Module directory or
-run "cmake ."  followed by "make install"
-
-Alex <neundorf@kde.org>
--------->8--------------------------------------------------------------
-
-Thank you Alex!
index f5d8a91..0c55bb8 100755 (executable)
@@ -1,8 +1,8 @@
-#!/bin/bash
+#!/usr/bin/env bash
 ########################################################################
 ####  Script Name: inxi
-####  version: 1.7.31
-####  Date: March 26 2012
+####  Version: 2.1.2
+####  Date: 2014-03-14
 ####  Patch Number: 00
 ########################################################################
 ####  SPECIAL THANKS
 ########################################################################
 ####  ABOUT INXI
 ########################################################################
-####  inxi is a fork of infobash 3.02, the original bash sys info script by locsmif
+####  inxi is a fork of infobash 3.02, the original bash sys info tool by locsmif
 ####  As time permits functionality improvements and recoding will occur.
 ####
-####  inxi, the universal, portable, system info script for irc.
+####  inxi, the universal, portable, system information tool for irc.
 ####  Tested with Irssi, Xchat, Konversation, BitchX, KSirc, ircII,
 ####  Gaim/Pidgin, Weechat, KVIrc and Kopete.
 ####  Original infobash author and copyright holder:
 ####  Copyright (C) 2005-2007  Michiel de Boer a.k.a. locsmif
-####  inxi version: Copyright (C) 2008-12 Scott Rogers & Harald Hope
+####  inxi version: Copyright (C) 2008-2014 Scott Rogers & Harald Hope
 ####  Further fixes (listed as known): Horst Tritremmel <hjt at sidux.com>
 ####  Steven Barrett (aka: damentz) - usb audio patch; swap percent used patch
 ####  Jarett.Stevens - dmidecde -M patch for older systems with the /sys 
 ####
-####  Current script home page: http://techpatterns.com/forums/about1131.html
-####  Script svn: http://code.google.com/p/inxi
+####  Current script home page/wiki/svn: http://inxi.googlecode.com
+####  Script forums: http://techpatterns.com/forums/forum-33.html
+####  IRC support: irc.oftc.net channel #smxi
 ####
 ####  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
@@ -52,7 +53,7 @@
 ####  DEPENDENCIES
 ####  * bash >=3.0 (bash); df, readlink, stty, tr, uname, wc (coreutils);
 ####    gawk (gawk); grep (grep); lspci (pciutils);
-####    free, ps, uptime (procps); find (findutils)
+####    ps, uptime (procps); find (findutils)
 ####  * Also the proc filesystem should be present and mounted
 ####  * Some features, like -M and -d will not work, or will work incompletely,
 ####    if /sys is missing
 ####       and ideally, pwmconfig) prior to full output being available. 
 ####  -S   For desktop environment, user must be in X and have xprop installed (in X11-utils)
 ########################################################################
+####  BSD Adjustments
+####  * sed -i '' form supported by using SED_I="-i ''".
+####  * Note: New BSD sed supports using -r instead of -E for compatibility with gnu sed
+####    However, older, like FreeBSD 7.x, does not have -r so using SED_RX='-E' for this.
+####  * Gnu grep options can be used if the function component is only run in linux
+####    These are the options that bsd grep does not support that inxi uses: -m <number> -o 
+####    so make sure if you use those to have them in gnu/linux only sections.
+####    It appears that freebsd uses gnu grep but openbsd uses bsd grep, however.
+####  * BSD ps does not support --without-headers option, and also does not support --sort <option>
+####    Tests show that -m fails to sort memory as expected, but -r does sort cpu percentage.
+####  * BSD_TYPE is set with values null, debian-bsd (debian gnu/kfreebsd), bsd (all other bsds)
+####  * Subshell and array closing ) must not be on their own line unless you use an explicit \ 
+####    to indicate that logic continues to next line where closing ) or )) are located.
+########################################################################
 ####  CONVENTIONS:
 ####  * Character Encoding: UTF-8 - this file contains special characters that must be opened and saved as UTF8
 ####  * Indentation: TABS
 ####  * All variables should clearly explain what they are, except counters like i, j.
 ####  * Each word of Bash variable must be separated by '_' (underscore) (camel form), like: cpu_data
 ####  * Each word of Gawk variable must be like this (first word lower, following start with upper): cpuData
-####  * Global variables are 'UPPER CASE', at top of script.
+####  * Global variables are 'UPPER CASE', at top of this file.
 ####     ie, SOME_VARIABLE=''
 ####  * Local variables are 'lower case' and declared at the top of the function using local, always.
 ####     ie: local some_variable=''
 ####  * In gawk search patterns, . is a wildcard EXCEPT in [0-9.] type containers, then it's a literal
 ####    So outside of bracketed items, it must be escaped, \. but inside, no need. Outside of gawk it should 
 ####    be escaped in search patterns if you are using it as a literal.
+####  
+####  PACKAGE MANAGER DATA (note, while inxi tries to avoid using package managers to get data, sometimes 
+####  it's the only way to get some data):
+####  * dpkg options: http://www.cyberciti.biz/howto/question/linux/dpkg-cheat-sheet.php
+####  * pacman options: https://wiki.archlinux.org/index.php/Pacman_Rosetta
 ####
 ####  As with all 'rules' there are acceptions, these are noted where used.
 ###################################################################################
 ####   KDE Konversation information.  Moving from dcop(qt3/KDE3) to dbus(qt4/KDE4)
 ###################################################################################
-####  * dcop and dbus  -- these talk back to Konversation from this script
+####  * dcop and dbus  -- these talk back to Konversation from this program
 ####  * Scripting info -- http://konversation.berlios.de/docs/scripting.html
 ####    -- http://www.kde.org.uk/apps/konversation/
 ####  * dbus info      -- http://dbus.freedesktop.org/doc/dbus-tutorial.html
 ####   Because webpages come and go, the above information needs to be moved to inxi's wiki
 ########################################################################
 ####  Valuable Resources
+####  CPU flags: http://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean
+####  Advanced Bash: http://wiki.bash-hackers.org/syntax/pe
 ####  gawk arrays: http://www.math.utah.edu/docs/info/gawk_12.html
+####  raid mdstat: http://www-01.ibm.com/support/docview.wss?uid=isg3T1011259
+####               http://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array
+####               https://raid.wiki.kernel.org/index.php/Mdstat
 ########################################################################
 ####  TESTING FLAGS
 ####  inxi supports advanced testing triggers to do various things, using -! <arg>
 
 ## NOTE: we can use hwinfo if it's available in all systems, or most, to get
 ## a lot more data and verbosity levels going
-# set to default LANG to avoid locales errors with , or .
-LANG=C
-### Variable initializations: null values
-CMDL_MAX=''
-COLOR_SCHEME=''
+
+### DISTRO MAINTAINER FLAGS ###
+# flag to allow distro maintainers to turn off update features. If false, turns off
+# -U and -! testing/advanced update options, as well as removing the -U help menu item
+# NOTE: Usually you want to create these in /etc/inxi.conf to avoid having to update each time
+B_ALLOW_UPDATE='true'
+B_ALLOW_WEATHER='true'
+
+### USER CONFIGS: SET IN inxi.conf file see wiki for directions ###
+# http://code.google.com/p/inxi/wiki/script_configuration_files
 # override in user config if desired, seems like less than .3 doesn't work as reliably
 CPU_SLEEP='0.3' 
-DEV_DISK_LABEL=''
-DEV_DISK_UUID=''
 FILTER_STRING='<filter>'
-IRC_CLIENT=''
-IRC_CLIENT_VERSION=''
-LINE_MAX=''
-LINE_MAX_CONSOLE='115'
-LINE_MAX_IRC='105'
+
+# for features like help/version will fit to terminal / console screen width. Console
+# widths will be dynamically set in main() based on cols in term/console
+COLS_MAX_CONSOLE='115'
+COLS_MAX_IRC='105'
 PS_COUNT=5
-PS_THROTTLED=''
-REPO_DATA=''
-REPO_FILE_ID=''
+# change to less, or more if you have very slow connection
+WGET_TIMEOUT=8
+### END USER CONFIGS ###
+
+### LOCALIZATION - DO NOT CHANGE! ###
+# set to default LANG to avoid locales errors with , or .
+LANG=C
+# Make sure every program speaks English.
+LC_ALL="C"
+export LC_ALL
+
+### ARRAYS ###
+## Prep
+# Clear nullglob, because it creates unpredictable situations with IFS=$'\n' ARR=($VAR) IFS="$ORIGINAL_IFS"
+# type constructs. Stuff like [rev a1] is now seen as a glob expansion pattern, and fails, and
+# therefore results in nothing.
+shopt -u nullglob
+## info on bash built in: $IFS - http://tldp.org/LDP/abs/html/internalvariables.html
+# Backup the current Internal Field Separator
+ORIGINAL_IFS="$IFS"
 
-### primary data array holders ## usage: 'A_<var>'
+## Initialize
 A_ALSA_DATA=''
 A_AUDIO_DATA=''
 A_CMDL=''
@@ -197,24 +242,27 @@ A_CPU_DATA=''
 A_CPU_TYPE_PCNT_CCNT=''
 A_DEBUG_BUFFER=''
 A_GCC_VERSIONS=''
-A_GFX_CARD_DATA=''
 A_GLX_DATA=''
+A_GRAPHICS_CARD_DATA=''
 A_GRAPHIC_DRIVERS=''
 A_HDD_DATA=''
+A_INIT_DATA=''
 A_INTERFACES_DATA=''
 A_MACHINE_DATA=''
 A_NETWORK_DATA=''
 A_OPTICAL_DRIVE_DATA=''
 A_PARTITION_DATA=''
+A_PCICONF_DATA=''
 A_PS_DATA=''
+A_RAID_DATA=''
 A_SENSORS_DATA=''
 A_UNMOUNTED_PARTITION_DATA=''
-A_X_DATA=''
+A_WEATHER_DATA=''
+A_DISPLAY_SERVER_DATA=''
 
-### Boolean true/false globals ## usage: 'B_<var>'
-# flag to allow distro maintainers to turn off update features. If false, turns off
-# -U and -! testing/advanced update options, as well as removing the -U help menu item
-B_ALLOW_UPDATE='true'
+### BOOLEANS ###
+## standard boolean flags ##
+B_BSD_RAID='false'
 B_COLOR_SCHEME_SET='false'
 B_CONSOLE_IRC='false'
 # triggers full display of cpu flags
@@ -225,44 +273,53 @@ B_DBUS_CLIENT='false'
 B_DCOP='false'
 # Debug flood override: make 'true' to allow long debug output
 B_DEBUG_FLOOD='false'
+B_DMIDECODE_SET='false'
 # show extra output data
 B_EXTRA_DATA='false'
 # triggered by -xx
 B_EXTRA_EXTRA_DATA='false'
+B_ID_SET='false'
 # override certain errors due to currupted data
 B_HANDLE_CORRUPT_DATA='false'
 B_LABEL_SET='false'
+B_LSPCI='false'
 B_LOG_COLORS='false'
 B_LOG_FULL_DATA='false'
+B_MAPPER_SET='false'
 B_OUTPUT_FILTER='false'
 B_OVERRIDE_FILTER='false'
+B_PCICONF='false'
+B_PCICONF_SET='false'
 # kde qdbus
 B_QDBUS='false'
 B_PORTABLE='false'
+B_RAID_SET='false'
 B_ROOT='false'
 B_RUN_COLOR_SELECTOR='false'
-# Running in a shell? Defaults to false, and is determined later.
-B_RUNNING_IN_SHELL='false'
+B_RUNNING_IN_DISPLAY='false' # in x type display server
 if tty >/dev/null;then
        B_RUNNING_IN_SHELL='true'
+else
+       B_RUNNING_IN_SHELL='false'
 fi
 # this sets the debug buffer
 B_SCRIPT_UP='false'
 B_SHOW_ADVANCED_NETWORK='false'
 # Show sound card data
 B_SHOW_AUDIO='false'
+B_SHOW_BASIC_RAID='false'
 B_SHOW_BASIC_CPU='false'
 B_SHOW_BASIC_DISK='false'
 B_SHOW_BASIC_OPTICAL='false'
 B_SHOW_CPU='false'
+B_SHOW_DISPLAY_DATA='false'
 B_SHOW_DISK_TOTAL='false'
 B_SHOW_DISK='false'
 # Show full hard disk output
 B_SHOW_FULL_HDD='false'
 B_SHOW_FULL_OPTICAL='false'
 B_SHOW_GRAPHICS='false'
-# Set this to 'false' to avoid printing the hostname, this isn't used except for 
-# user configuration options via config files
+# Set this to 'false' to avoid printing the hostname, can be set false now
 B_SHOW_HOST='true'
 B_SHOW_INFO='false'
 B_SHOW_IP='false'
@@ -274,15 +331,18 @@ B_SHOW_PARTITIONS='false'
 B_SHOW_PARTITIONS_FULL='false'
 B_SHOW_PS_CPU_DATA='false'
 B_SHOW_PS_MEM_DATA='false'
+B_SHOW_RAID='false'
+# because many systems have no mdstat file, -b/-F should not show error if no raid file found
+B_SHOW_RAID_R='false' 
 B_SHOW_REPOS='false'
-B_RUNNING_IN_X='false'
 B_SHOW_SENSORS='false'
 # triggers only short inxi output
 B_SHOW_SHORT_OUTPUT='false'
 B_SHOW_SYSTEM='false'
 B_SHOW_UNMOUNTED_PARTITIONS='false'
 B_SHOW_UUIDS='false'
-B_SHOW_X_DATA='false'
+B_SHOW_WEATHER='false'
+B_SYSCTL='false'
 # triggers various debugging and new option testing
 B_TESTING_1='false'
 B_TESTING_2='false'
@@ -293,74 +353,37 @@ B_USE_LOGGING='false'
 B_UUID_SET='false'
 B_XORG_LOG='false'
 
-### Directory/file exist flags; test as [[ $(boolean) ]] not [[ $boolean ]]
+## Directory/file exist flags; test as [[ $(boolean) ]] not [[ $boolean ]]
 B_ASOUND_DEVICE_FILE='false'
 B_ASOUND_VERSION_FILE='false'
 B_BASH_ARRAY='false'
 B_CPUINFO_FILE='false'
+B_DMESG_BOOT_FILE='false' # bsd only
 B_LSB_FILE='false'
+B_MDSTAT_FILE='false'
 B_MEMINFO_FILE='false'
 B_MODULES_FILE='false' #
 B_MOUNTS_FILE='false'
+B_OS_RELEASE_FILE='false' # new default distro id file? will this one work where lsb-release didn't?
 B_PARTITIONS_FILE='false' #
 B_PROC_DIR='false'
 B_SCSI_FILE='false'
 
-### File's used when present
-FILE_ASOUND_DEVICE='/proc/asound/cards'
-FILE_ASOUND_MODULES='/proc/asound/modules' # not used but maybe for -A?
-FILE_ASOUND_VERSION='/proc/asound/version'
-FILE_CPUINFO='/proc/cpuinfo'
-FILE_LSB_RELEASE='/etc/lsb-release'
-FILE_MEMINFO='/proc/meminfo'
-FILE_MODULES='/proc/modules'
-FILE_MOUNTS='/proc/mounts'
-FILE_PARTITIONS='/proc/partitions'
-FILE_SCSI='/proc/scsi/scsi'
-FILE_XORG_LOG='/var/log/Xorg.0.log' # if not found, search and replace with actual location
-
 ## app tested for and present, to avoid repeat tests
 B_FILE_TESTED='false'
 B_HDDTEMP_TESTED='false'
 B_MODINFO_TESTED='false'
 B_SUDO_TESTED='false'
-FILE_PATH=''
-HDDTEMP_PATH=''
-MODINFO_PATH=''
-SUDO_PATH=''
 
-### Variable initializations: constants
+### CONSTANTS/INITIALIZE - SOME MAY BE RESET LATER ###
 DCOPOBJ="default"
 DEBUG=0 # Set debug levels from 1-10 (8-10 trigger logging levels)
 # Debug Buffer Index, index into a debug buffer storing debug messages until inxi is 'all up'
 DEBUG_BUFFER_INDEX=0
 ## note: the debugger rerouting to /dev/null has been moved to the end of the get_parameters function
 ## so -@[number] debug levels can be set if there is a failure, otherwise you can't even see the errors
-
-# Defaults to 2, make this 1 for normal, 0 for no colorcodes at all. Use following variables in config 
-# files to change defaults for each type, or global
-# Same as runtime parameter.
-DEFAULT_COLOR_SCHEME=2
-# Always leave these blank, these are only going to be set in inxi.conf files, that makes testing
-# for user changes easier after sourcing the files
-GLOBAL_COLOR_SCHEME=''
-IRC_COLOR_SCHEME=''
-IRC_CONS_COLOR_SCHEME=''
-IRC_X_TERM_COLOR_SCHEME=''
-CONSOLE_COLOR_SCHEME=''
-VIRT_TERM_COLOR_SCHEME=''
-
-# Default indentation level
-INDENT=10
-
-# logging eval variables, start and end function: Insert to LOGFS LOGFE when debug level >= 8
-LOGFS_STRING='log_function_data fs $FUNCNAME "$( echo $@ )"'
-LOGFE_STRING='log_function_data fe $FUNCNAME'
-LOGFS=''
-LOGFE=''
-# uncomment for debugging from script start
-# LOGFS=$LOGFS_STRING
-# LOGFE=$LOGFE_STRING
+SED_I='-i' # for gnu sed, will be set to -i '' for bsd sed
+SED_RX='-r' # for gnu sed, will be set to -E for bsd sed for backward compatibility
 
 # default to false, no konversation found, 1 is native konvi (qt3/KDE3) script mode, 2 is /cmd inxi start,
 ##     3 is Konversation > 1.2 (qt4/KDE4) 
@@ -379,47 +402,135 @@ VERBOSITY_LEVEL=0
 # Supported number of verbosity levels, including 0
 VERBOSITY_LEVELS=7
 
-# Clear nullglob, because it creates unpredictable situations with IFS=$'\n' ARR=($VAR) IFS="$ORIGINAL_IFS"
-# type constructs. Stuff like [rev a1] is now seen as a glob expansion pattern, and fails, and
-# therefore results in nothing.
-shopt -u nullglob
-## info on bash built in: $IFS - http://tldp.org/LDP/abs/html/internalvariables.html
-# Backup the current Internal Field Separator
-ORIGINAL_IFS="$IFS"
+### LOGGING ###
+## logging eval variables, start and end function: Insert to LOGFS LOGFE when debug level >= 8
+LOGFS_STRING='log_function_data fs $FUNCNAME "$( echo $@ )"'
+LOGFE_STRING='log_function_data fe $FUNCNAME'
+LOGFS=''
+LOGFE=''
+# uncomment for debugging from script start
+# LOGFS=$LOGFS_STRING
+# LOGFE=$LOGFE_STRING
 
-# These two determine separators in single line output, to force irc clients not to break off sections
-SEP1='~'
-SEP2=' '
-# these will assign a separator to non irc states. Important! Using ':' can trigger stupid emoticon
-# behaviors in output on IRC, so do not use those.
-SEP3_IRC=''
-SEP3_CONSOLE=':'
-SEP3='' # do not set, will be set dynamically
+### FILE NAMES/PATHS/URLS - must be non root writable ###
+# File's used when present
+FILE_ASOUND_DEVICE='/proc/asound/cards'
+FILE_ASOUND_MODULES='/proc/asound/modules' # not used but maybe for -A?
+FILE_ASOUND_VERSION='/proc/asound/version'
+FILE_CPUINFO='/proc/cpuinfo'
+FILE_DMESG_BOOT='/var/run/dmesg.boot'
+FILE_LSB_RELEASE='/etc/lsb-release'
+FILE_MDSTAT='/proc/mdstat'
+FILE_MEMINFO='/proc/meminfo'
+FILE_MODULES='/proc/modules'
+FILE_MOUNTS='/proc/mounts'
+FILE_OS_RELEASE='/etc/os-release'
+FILE_PARTITIONS='/proc/partitions'
+FILE_SCSI='/proc/scsi/scsi'
+FILE_XORG_LOG='/var/log/Xorg.0.log' # if not found, search and replace with actual location
+
+FILE_PATH=''
+HDDTEMP_PATH=''
+MODINFO_PATH=''
+SUDO_PATH=''
 
-### Script names/paths - must be non root writable
 SCRIPT_DATA_DIR="$HOME/.inxi"
 ALTERNATE_FTP='' # for data uploads
+ALTERNATE_WEATHER_LOCATION='' # weather alternate location
 LOG_FILE="$SCRIPT_DATA_DIR/inxi.log"
 LOG_FILE_1="$SCRIPT_DATA_DIR/inxi.1.log"
 LOG_FILE_2="$SCRIPT_DATA_DIR/inxi.2.log"
-SCRIPT_NAME="inxi"
+MAN_FILE_DOWNLOAD='http://inxi.googlecode.com/svn/trunk/inxi.1.gz'
+MAN_FILE_LOCATION='/usr/share/man/man1'
+SCRIPT_NAME='inxi'
 SCRIPT_PATCH_NUMBER=''
-SCRIPT_PATH=""                 #filled-in in Main
+SCRIPT_PATH='' #filled-in in Main
 SCRIPT_VERSION_NUMBER=""       #filled-in in Main
 SCRIPT_DOWNLOAD='http://inxi.googlecode.com/svn/trunk/'
 SCRIPT_DOWNLOAD_BRANCH_1='http://inxi.googlecode.com/svn/branches/one/'
 SCRIPT_DOWNLOAD_BRANCH_2='http://inxi.googlecode.com/svn/branches/two/'
 SCRIPT_DOWNLOAD_BRANCH_3='http://inxi.googlecode.com/svn/branches/three/'
 SCRIPT_DOWNLOAD_BRANCH_4='http://inxi.googlecode.com/svn/branches/four/'
+SCRIPT_DOWNLOAD_BRANCH_BSD='http://inxi.googlecode.com/svn/branches/bsd/'
+SCRIPT_DOWNLOAD_BRANCH_GNUBSD='http://inxi.googlecode.com/svn/branches/gnubsd/'
 SCRIPT_DOWNLOAD_DEV='http://smxi.org/test/'
+# note, you can use any ip url here as long as it's the only line on the output page.
+# Also the ip address must be the last thing on that line.
+WAN_IP_URL='http://smxi.org/opt/ip.php'
 KONVI_CFG="konversation/scripts/$SCRIPT_NAME.conf" # relative path to $(kde-config --path data)
 
-### Script Localization
-# Make sure every program speaks English.
-LC_ALL="C"
-export LC_ALL
+### INITIALIZE VARIABLES NULL ###
+BSD_TYPE=''
+BSD_VERSION=
+CMDL_MAX=''
+
+DEV_DISK_ID=''
+DEV_DISK_LABEL=''
+DEV_DISK_MAPPER=''
+DEV_DISK_UUID=''
+DMIDECODE_DATA=''
+IRC_CLIENT=''
+IRC_CLIENT_VERSION=''
+PS_THROTTLED=''
+REPO_DATA=''
+
+### LAYOUT ###
+# These two determine separators in single line output, to force irc clients not to break off sections
+SEP1='~'
+SEP2=' '
+# these will assign a separator to non irc states. Important! Using ':' can trigger stupid emoticon
+# behaviors in output on IRC, so do not use those.
+SEP3_IRC=''
+SEP3_CONSOLE=':'
+SEP3='' # do not set, will be set dynamically
+
+# Default indentation level. NOTE: actual indent is 1 greater to allow for spacing
+INDENT=10
+
+### COLUMN WIDTHS ###
+COLS_INNER='' ## for width minus INDENT
+COLS_MAX=''
+
+TERM_COLUMNS=80
+TERM_LINES=100
+
+## sometimes will trigger an error (mageia) if not in shell
+if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
+       if [[ -n $( type -p tput ) ]];then
+               TERM_COLUMNS=$(tput cols)
+               TERM_LINES=$(tput lines)
+       fi
+       # double check, just in case it's missing functionality or whatever
+       if [[ -n ${TERM_COLUMNS##[0-9]*} ]];then
+               TERM_COLUMNS=80
+               TERM_LINES=100
+       fi
+fi
+
+# Only for legacy user config files se we can test and convert the var name
+LINE_MAX_CONSOLE=''
+LINE_MAX_IRC=''
+
+### COLORS ###
+# Defaults to 2, make this 1 for normal, 0 for no colorcodes at all. Use following variables in config 
+# files to change defaults for each type, or global
+# Same as runtime parameter.
+DEFAULT_COLOR_SCHEME=2
+## color variables - set dynamically
+COLOR_SCHEME=''
+C1=''
+C2=''
+CN=''
+## Always leave these blank, these are only going to be set in inxi.conf files, that makes testing
+## for user changes easier after sourcing the files
+GLOBAL_COLOR_SCHEME=''
+IRC_COLOR_SCHEME=''
+IRC_CONS_COLOR_SCHEME=''
+IRC_X_TERM_COLOR_SCHEME=''
+CONSOLE_COLOR_SCHEME=''
+VIRT_TERM_COLOR_SCHEME=''
 
-### Output Colors
+## Output colors
 # A more elegant way to have a scheme that doesn't print color codes (neither ANSI nor mIRC) at all. See below.
 unset EMPTY
 #             DGREY   BLACK   RED     DRED    GREEN   DGREEN  YELLOW  DYELLOW
@@ -476,27 +587,30 @@ RED,WHITE,NORMAL
 BLUE,WHITE,NORMAL
 )
 
-## Actual color variables
-C1=''
-C2=''
-CN=''
+# WARNING: In the main part below (search for 'KONVI')
+# there's a check for Konversation-specific config files.
+# Any one of these can override the above if inxi is run
+# from Konversation!
 
-### Distro Data
+## DISTRO DATA/ID ##
 # In cases of derived distros where the version file of the base distro can also be found under /etc,
 # the derived distro's version file should go first. (Such as with Sabayon / Gentoo)
-DISTROS_DERIVED="antix-version aptosid-version kanotix-version knoppix-version mandrake-release pardus-release sabayon-release siduction-version sidux-version turbolinux-release zenwalk-version"
+DISTROS_DERIVED="antix-version aptosid-version kanotix-version knoppix-version mandrake-release pardus-release sabayon-release siduction-version sidux-version solusos-release turbolinux-release zenwalk-version"
 # debian_version excluded from DISTROS_PRIMARY so Debian can fall through to /etc/issue detection. Same goes for Ubuntu.
 DISTROS_EXCLUDE_LIST="debian_version ubuntu_version"
-DISTROS_PRIMARY="gentoo-release redhat-release slackware-version SuSE-release"
+DISTROS_PRIMARY="arch-release gentoo-release redhat-release slackware-version SuSE-release"
 DISTROS_LSB_GOOD="mandrake-release mandriva-release mandrakelinux-release"
+# this is being used both by core distros and derived distros now, eg, solusos 1 uses it for solusos id, while
+# debian, solusos base, uses it as well, so we have to know which it is.
+DISTROS_OS_RELEASE_GOOD="arch-release SuSE-release"
 ## Distros with known problems
 # DSL (Bash 2.05b: grep -m doesn't work; arrays won't work) --> unusable output
 # Puppy Linux 4.1.2 (Bash 3.0: arrays won't work) --> works partially
 
-### Bans Data
+## OUTPUT FILTERS/SEARCH ##
 # Note that \<ltd\> bans only words, not parts of strings; in \<corp\> you can't use punctuation characters like . or ,
 # we're saving about 10+% of the total script exec time by hand building the ban lists here, using hard quotes.
-BAN_LIST_NORMAL='computing|computer|corporation|communications|electronics|electrical|electric|gmbh|group|industrial|international|revision|software|technologies|technology|ltd\.|\<ltd\>|inc\.|\<inc\>|intl\.|co\.|\<co\>|corp\.|\<corp\>|\(tm\)|\(r\)|®|\(rev ..\)'
+BAN_LIST_NORMAL='chipset|components|computing|computer|corporation|communications|electronics|electrical|electric|gmbh|group|industrial|international|revision|semiconductor|software|technologies|technology|ltd\.|\<ltd\>|inc\.|\<inc\>|intl\.|co\.|\<co\>|corp\.|\<corp\>|\(tm\)|\(r\)|®|\(rev ..\)'
 BAN_LIST_CPU='@|cpu deca|dual core|dual-core|tri core|tri-core|quad core|quad-core|ennea|genuine|hepta|hexa|multi|octa|penta|processor|single|triple|[0-9\.]+ *[MmGg][Hh][Zz]'
 
 SENSORS_GPU_SEARCH='intel|radeon|nouveau'
@@ -504,17 +618,12 @@ SENSORS_GPU_SEARCH='intel|radeon|nouveau'
 ### USB networking search string data, because some brands can have other products than
 ### wifi/nic cards, they need further identifiers, with wildcards.
 ### putting the most common and likely first, then the less common, then some specifics
-USB_NETWORK_SEARCH="Wi-Fi.*Adapter|Wireless.*Adapter|WLAN.*Adapter|Network.*Adapter|802\.11|Atheros|Atmel|D-Link.*Adapter|D-Link.*Wireless|Linksys|Netgea|Ralink|Realtek.*Network|Realtek.*Wireless|Realtek.*WLAN|Belkin.*Wireless|Belkin.*WLAN|Belkin.*Network"
+USB_NETWORK_SEARCH="Wi-Fi.*Adapter|Wireless.*Adapter|Ethernet.*Adapter|WLAN.*Adapter|Network.*Adapter|802\.11|Atheros|Atmel|D-Link.*Adapter|D-Link.*Wireless|Linksys|Netgea|Ralink|Realtek.*Network|Realtek.*Wireless|Realtek.*WLAN|Belkin.*Wireless|Belkin.*WLAN|Belkin.*Network"
 USB_NETWORK_SEARCH="$USB_NETWORK_SEARCH|Actiontec.*Wireless|Actiontec.*Network|AirLink.*Wireless|Asus.*Network|Asus.*Wireless|Buffalo.*Wireless|Davicom|DWA-.*RangeBooster|DWA-.*Wireless|ENUWI-.*Wireless|LG.*Wi-Fi|Rosewill.*Wireless|RNX-.*Wireless|Samsung.*LinkStick|Samsung.*Wireless|Sony.*Wireless|TEW-.*Wireless|TP-Link.*Wireless|WG[0-9][0-9][0-9].*Wireless|WNA[0-9][0-9][0-9]|WNDA[0-9][0-9][0-9]|Zonet.*ZEW.*Wireless|54 Mbps" 
 # then a few known hard to ID ones added 
 # belkin=050d; d-link=07d1; netgear=0846; ralink=148f; realtek=0bda; 
 USB_NETWORK_SEARCH="$USB_NETWORK_SEARCH|050d:935b|0bda:8189|0bda:8197"
 
-# WARNING: In the main part below (search for 'KONVI')
-# there's a check for Konversation-specific config files.
-# Any one of these can override the above if inxi is run
-# from Konversation!
-
 ########################################################################
 #### MAIN: Where it all begins
 ########################################################################
@@ -523,24 +632,14 @@ main()
        eval $LOGFS
        
        local color_scheme=''
-       
-       # This function just initializes variables
-       initialize_script_data
-
-       # Check for dependencies BEFORE running ANYTHING else except above functions
-       # Not all distro's have these depends installed by default. Don't want to run
-       # this if the user is requesting to see this information in the first place
-       if [[ $1 != '--recommends' ]];then
-               check_script_depends
-               check_script_suggested_apps
-       fi
+       # this will be used by all functions following
+       local Ps_aux_Data="$( ps aux )"
 
-       ### Only continue if depends ok
-       SCRIPT_PATH=$( dirname $0 )
-       SCRIPT_VERSION_NUMBER=$( grep -im 1 'version:' $SCRIPT_PATH/$SCRIPT_NAME | gawk '{print $3}' )
-       SCRIPT_PATCH_NUMBER=$( grep -im 1 'Patch Number:' $SCRIPT_PATH/$SCRIPT_NAME | gawk '{print $4}' )
+       # This function just initializes variables
+       initialize_data
        
-       ### Source global config overrides
+       # Source global config overrides, needs to be here because some things
+       # can be reset that were set in initialize, but check_required_apps needs
        if [[ -s /etc/$SCRIPT_NAME.conf ]];then
                source /etc/$SCRIPT_NAME.conf
        fi
@@ -548,6 +647,48 @@ main()
        if [[ -s $HOME/.$SCRIPT_NAME/$SCRIPT_NAME.conf ]];then
                source $HOME/.$SCRIPT_NAME/$SCRIPT_NAME.conf
        fi
+       # Convert to new variable names if set in config files, legacy test
+       if [[ -n $LINE_MAX_CONSOLE ]];then
+               COLS_MAX_CONSOLE=$LINE_MAX_CONSOLE
+       fi
+       if [[ -n $LINE_MAX_IRC ]];then
+               COLS_MAX_IRC=$LINE_MAX_IRC
+       fi
+       # TERM_COLUMNS is set in top globals, using tput cols
+       if [[ $TERM_COLUMNS -lt $COLS_MAX_CONSOLE ]];then
+               COLS_MAX_CONSOLE=$TERM_COLUMNS
+       fi
+       # adjust, some terminals will wrap if output cols == term cols
+       COLS_MAX_CONSOLE=$(( $COLS_MAX_CONSOLE - 2 ))
+       
+       # comes after source for user set stuff
+       if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
+               COLS_MAX=$COLS_MAX_CONSOLE
+               SEP3=$SEP3_CONSOLE
+       else
+               # too hard to read if no colors, so force that for users on irc
+               if [[ $SCHEME == 0 ]];then
+                       SEP3=$SEP3_CONSOLE
+               else
+                       SEP3=$SEP3_IRC
+               fi
+               COLS_MAX=$COLS_MAX_IRC
+       fi
+       
+       COLS_INNER=$(( $COLS_MAX - $INDENT - 1 ))
+       # Check for dependencies BEFORE running ANYTHING else except above functions
+       # Not all distro's have these depends installed by default. Don't want to run
+       # this if the user is requesting to see this information in the first place
+       # Only continue if required apps tests ok
+       if [[ $1 != '--recommends' ]];then
+               check_required_apps
+               check_recommended_apps
+       fi
+
+       SCRIPT_VERSION_NUMBER=$( parse_version_data 'main' )
+       SCRIPT_PATCH_NUMBER=$( parse_version_data 'patch' )
+       
+       # previous source location, check for bugs
 
        ## this needs to run before the KONVI stuff is set below
        ## Konversation 1.2 apparently does not like the $PPID test in get_start_client
@@ -615,7 +756,7 @@ main()
                                                color_scheme=$VIRT_TERM_COLOR_SCHEME
                                        fi
                                else
-                                       if [[ -n $IRC_X_TERM_COLOR_SCHEME && $B_CONSOLE_IRC == 'true' && -n $DISPLAY ]];then
+                                       if [[ -n $IRC_X_TERM_COLOR_SCHEME && $B_CONSOLE_IRC == 'true' && -n $B_RUNNING_IN_DISPLAY ]];then
                                                color_scheme=$IRC_X_TERM_COLOR_SCHEME
                                        elif [[ -n $IRC_CONS_COLOR_SCHEME && -z $DISPLAY ]];then
                                                color_scheme=$IRC_CONS_COLOR_SCHEME
@@ -627,19 +768,7 @@ main()
                        set_color_scheme $color_scheme
                fi
        fi
-       if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
-               LINE_MAX=$LINE_MAX_CONSOLE
-               SEP3=$SEP3_CONSOLE
-       else
-               # too hard to read if no colors, so force that for users on irc
-               if [[ $SCHEME == 0 ]];then
-                       SEP3=$SEP3_CONSOLE
-               else
-                       SEP3=$SEP3_IRC
-               fi
-               LINE_MAX=$LINE_MAX_IRC
-       fi
-
+       
        # all the pre-start stuff is in place now
        B_SCRIPT_UP='true'
        script_debugger "Debugger: $SCRIPT_NAME is up and running..."
@@ -658,7 +787,7 @@ main()
 }
 
 #### -------------------------------------------------------------------
-#### basic tests: set script data, booleans, PATH
+#### basic tests: set script data, booleans, PATH, version numbers
 #### -------------------------------------------------------------------
 
 # Set PATH data so we can access all programs as user. Set BAN lists.
@@ -666,24 +795,47 @@ main()
 # some apps are used for extended functions any directory used, should be
 # checked here first.
 # No args taken.
-initialize_script_data()
+initialize_data()
 {
        eval $LOGFS
+       BSD_VERSION=$( uname -s 2>/dev/null | tr '[A-Z]' '[a-z]' )
        
+       # note: archbsd says they are a freebsd distro, so assuming it's the same as freebsd
+       if [[ -n $( grep 'bsd' <<< "$BSD_VERSION" ) ]];then
+               # GNU/kfreebsd will by definition have GNU tools like sed/grep
+               if [[ -n $( grep 'kfreebsd' <<< "$BSD_VERSION" ) ]];then
+                       BSD_TYPE='debian-bsd' # debian gnu bsd
+               else
+                       BSD_TYPE='bsd' # all other bsds
+                       SED_I="-i ''"
+                       SED_RX='-E'
+               fi
+       fi
        # now set the script BOOLEANS for files required to run features
-       if [[ -d "/proc/" ]];then
+       # note that freebsd has /proc but it's empty
+       if [[ -d "/proc/" && -z $BSD_TYPE ]];then
                B_PROC_DIR='true'
+       elif [[ -n $BSD_TYPE ]];then
+               B_PROC_DIR='false'
        else
                error_handler 6
        fi
        
-       initialize_script_paths
+       initialize_paths
        
-       # found a case of battery existing but having nothing in it on desktop mobo
-       # not all laptops show the first, 
-       if [[ -n $( ls /proc/acpi/battery 2>/dev/null ) ]];then
-               B_PORTABLE='true'
+       if [[ -n $BSD_TYPE ]];then
+               if [[ -e $FILE_DMESG_BOOT ]];then
+                       B_DMESG_BOOT_FILE='true'
+               fi
+       else
+               # found a case of battery existing but having nothing in it on desktop mobo
+               # not all laptops show the first, 
+               if [[ -n $( ls /proc/acpi/battery 2>/dev/null ) ]];then
+                       B_PORTABLE='true'
+               fi
        fi
+       
+       
        if [[ -e $FILE_CPUINFO ]]; then
                B_CPUINFO_FILE='true'
        fi
@@ -703,14 +855,22 @@ initialize_script_data()
        if [[ -f $FILE_LSB_RELEASE ]];then
                B_LSB_FILE='true'
        fi
+       
+       if [[ -f $FILE_OS_RELEASE ]];then
+               B_OS_RELEASE_FILE='true'
+       fi
 
        if [[ -e $FILE_SCSI ]];then
                B_SCSI_FILE='true'
        fi
 
        if [[ -n $DISPLAY ]];then
-               B_SHOW_X_DATA='true'
-               B_RUNNING_IN_X='true'
+               B_SHOW_DISPLAY_DATA='true'
+               B_RUNNING_IN_DISPLAY='true'
+       fi
+       
+       if [[ -e $FILE_MDSTAT ]];then
+               B_MDSTAT_FILE='true'
        fi
 
        if [[ -e $FILE_MODULES ]];then
@@ -743,11 +903,43 @@ initialize_script_data()
        eval $LOGFE
 }
 
-initialize_script_paths()
+# arg: $1 - version number: main/patch/date
+parse_version_data()
+{
+       local version_data=''
+
+       # note, using ####[[:space:]]+ to avoid having this function also trip the version datas
+       case $1 in
+               date)
+                       version_data="$( gawk -F ': ' '
+                       /####[[:space:]]+Date:/ {
+                               print $NF
+                       }' $SCRIPT_PATH/$SCRIPT_NAME )"
+                       ;;
+               main)
+                       version_data="$( gawk '
+                       /####[[:space:]]+Version:/ {
+                               print $3
+                       }' $SCRIPT_PATH/$SCRIPT_NAME )"
+                       ;;
+               patch)
+                       version_data="$( gawk '
+                       /####[[:space:]]+Patch Number:/ {
+                               print $4
+                       }' $SCRIPT_PATH/$SCRIPT_NAME )"
+                       ;;
+       esac
+       echo $version_data
+}
+
+initialize_paths()
 {
        local path='' added_path='' b_path_found='' sys_path=''
        # Extra path variable to make execute failures less likely, merged below
        local extra_paths="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
+       
+       # this needs to be set here because various options call the parent initialize function directly.
+       SCRIPT_PATH=$( dirname $0 )
 
        # Fallback paths put into $extra_paths; This might, among others, help on gentoo.
        # Now, create a difference of $PATH and $extra_paths and add that to $PATH:
@@ -773,7 +965,7 @@ initialize_script_paths()
 }
 
 # No args taken.
-check_script_suggested_apps()
+check_recommended_apps()
 {
        eval $LOGFS
        local bash_array_test=( "one" "two" )
@@ -789,6 +981,18 @@ check_script_suggested_apps()
        else
                script_debugger "Suggestion: update to Bash v3.1 for optimal inxi output"
        fi
+       # test for a few apps that bsds may not have after initial tests
+       if [[ -n $( type -p lspci ) ]];then
+               B_LSPCI='true'
+       fi
+       if [[ -n $BSD_TYPE ]];then
+               if [[ -n $( type -p sysctl ) ]];then
+                       B_SYSCTL='true'
+               fi
+               if [[ -n $( type -p pciconf ) ]];then
+                       B_PCICONF='true'
+               fi
+       fi
        # now setting qdbus/dcop for first run, some systems can have both by the way
        if [[ -n $( type -p qdbus ) ]];then
                B_QDBUS='true'
@@ -801,23 +1005,32 @@ check_script_suggested_apps()
 
 # Determine if any of the absolutely necessary tools are absent
 # No args taken.
-check_script_depends()
+check_required_apps()
 {
        eval $LOGFS
        local app_name='' app_path=''
        # bc removed from deps for now
-       local depends="df free gawk grep lspci ps readlink tr uname uptime wc"
+       local depends="df gawk grep ps readlink tr uname uptime wc"
+       
+       if [[ -z $BSD_TYPE  ]];then
+               depends="$depends lspci"
+       elif [[ $BSD_TYPE == 'bsd' ]];then
+               depends="$depends sysctl"
+               # debian-bsd has lspci but you must be root to run it
+       elif [[ $BSD_TYPE == 'debian-bsd' ]];then
+               depends="$depends sysctl lspci"
+       fi
        # no need to add xprop because it will just give N/A if not there, but if we expand use of xprop,
-       # should add that here as a test, then use the B_SHOW_X_DATA flag to trigger the tests in de function
+       # should add that here as a test, then use the B_SHOW_DISPLAY_DATA flag to trigger the tests in de function
        local x_apps="xrandr xdpyinfo glxinfo" 
 
-       if [[ $B_RUNNING_IN_X == 'true' ]];then
+       if [[ $B_RUNNING_IN_DISPLAY == 'true' ]];then
                for app_name in $x_apps
                do
                        app_path=$( type -p $app_name )
                        if [[ -z $app_path ]];then
                                script_debugger "Resuming in non X mode: $app_name not found. For package install advice run: $SCRIPT_NAME --recommends"
-                               B_SHOW_X_DATA='false'
+                               B_SHOW_DISPLAY_DATA='false'
                                break
                        fi
                done
@@ -864,7 +1077,7 @@ sanitize_characters()
 set_color_scheme()
 {
        eval $LOGFS
-       local i='' a_script_colors='' a_color_codes=''
+       local i='' a_output_colors='' a_color_codes=''
 
        if [[ $1 -ge ${#A_COLOR_SCHEMES[@]} ]];then
                set -- 1
@@ -881,12 +1094,12 @@ set_color_scheme()
                eval "${A_COLORS_AVAILABLE[i]}=\"${a_color_codes[i]}\""
        done
        IFS=","
-       a_script_colors=( ${A_COLOR_SCHEMES[$1]} )
+       a_output_colors=( ${A_COLOR_SCHEMES[$1]} )
        IFS="$ORIGINAL_IFS"
        # then assign the colors globally
-       C1="${!a_script_colors[0]}"
-       C2="${!a_script_colors[1]}"
-       CN="${!a_script_colors[2]}"
+       C1="${!a_output_colors[0]}"
+       C2="${!a_output_colors[1]}"
+       CN="${!a_output_colors[2]}"
        # ((COLOR_SCHEME++)) ## note: why is this? ##
        eval $LOGFE
 }
@@ -1003,21 +1216,21 @@ select_default_color_scheme()
                                echo "$config_variable=$user_selection" >> $config_file
                        else
                                print_screen_output "Updating config file for $COLOR_SELECTION color scheme now..."
-                               sed -i "s/$config_variable=.*/$config_variable=$user_selection/" $config_file
+                               sed $SED_I "s/$config_variable=.*/$config_variable=$user_selection/" $config_file
                        fi
                        # file exists now so we can go on to cleanup
                        case $COLOR_SELECTION in
                                irc|irc-console|irc-virtual-terminal|console|virtual-terminal)
-                                       sed -i '/GLOBAL_COLOR_SCHEME=/d' $config_file
+                                       sed $SED_I '/GLOBAL_COLOR_SCHEME=/d' $config_file
                                        ;;
                                global)
-                                       sed -i -e '/VIRT_TERM_COLOR_SCHEME=/d' -e '/CONSOLE_COLOR_SCHEME=/d' -e '/IRC_COLOR_SCHEME=/d' \
+                                       sed $SED_I -e '/VIRT_TERM_COLOR_SCHEME=/d' -e '/CONSOLE_COLOR_SCHEME=/d' -e '/IRC_COLOR_SCHEME=/d' \
                                        -e '/IRC_CONS_COLOR_SCHEME=/d' -e '/IRC_X_TERM_COLOR_SCHEME=/d' $config_file
                                        ;;
                        esac
                elif [[ $user_selection == $i ]];then
                        print_screen_output "Removing all color settings from config file now..."
-                       sed -i -e '/VIRT_TERM_COLOR_SCHEME=/d' -e '/GLOBAL_COLOR_SCHEME=/d' -e '/CONSOLE_COLOR_SCHEME=/d' \
+                       sed $SED_I -e '/VIRT_TERM_COLOR_SCHEME=/d' -e '/GLOBAL_COLOR_SCHEME=/d' -e '/CONSOLE_COLOR_SCHEME=/d' \
                        -e '/IRC_COLOR_SCHEME=/d' -e '/IRC_CONS_COLOR_SCHEME=/d' -e '/IRC_X_TERM_COLOR_SCHEME=/d' $config_file
                        set_color_scheme $DEFAULT_COLOR_SCHEME
                elif [[ $user_selection == $(( $i+1 )) ]];then
@@ -1059,7 +1272,7 @@ select_default_color_scheme()
 #### -------------------------------------------------------------------
 
 # Error handling
-# args: $1 - error number; $2 - optional, extra information
+# args: $1 - error number; $2 - optional, extra information; $3 - optional extra info
 error_handler()
 {
        eval $LOGFS
@@ -1104,6 +1317,15 @@ error_handler()
                16)
                        error_message="$SCRIPT_NAME downloaded but the file data is corrupted. Purged data and using current version."
                        ;;
+               17)
+                       error_message="All $SCRIPT_NAME self updater features have been disabled by the distribution\npackage maintainer. This includes the option you used: $2"
+                       ;;
+               18)
+                       error_message="The argument you provided for $2 does not have supported syntax.\nPlease use the following formatting:\n$3"
+                       ;;
+               19)
+                       error_message="The option $2 has been deprecated. Please use $3 instead.\nSee -h for instructions and syntax."
+                       ;;
                20)
                        error_message="The option you selected has been deprecated. $2\nSee the -h (help) menu for currently supported options."
                        ;;
@@ -1193,7 +1415,7 @@ log_function_data()
                # This pattern doesn't work for irc colors, if we need that someone can figure it out
                if [[ -n $logged_data ]];then
                        if [[ $B_LOG_COLORS != 'true' ]];then
-                               echo -e "${spacer}$logged_data" | sed -r 's/\x1b\[[0-9]{1,2}(;[0-9]{1,2}){0,2}m//g' >> $LOG_FILE
+                               echo -e "${spacer}$logged_data" | sed $SED_RX 's/\x1b\[[0-9]{1,2}(;[0-9]{1,2}){0,2}m//g' >> $LOG_FILE
                        else
                                echo -e "${spacer}$logged_data" >> $LOG_FILE
                        fi
@@ -1227,11 +1449,19 @@ create_rotate_logfiles()
 }
 
 # args: $1 - download url, not including file name; $2 - string to print out
+# $3 - update type option
 # note that $1 must end in / to properly construct the url path
 script_self_updater()
 {
        eval $LOGFS
-       local wget_error=0 file_contents=''
+       local wget_error=0 file_contents='' wget_man_error=0 
+       local man_file_path="$MAN_FILE_LOCATION/inxi.1.gz"
+       
+       if [[ $B_RUNNING_IN_SHELL != 'true' ]];then
+               print_screen_output "Sorry, you can't run the $SCRIPT_NAME self updater option (-$3) in an IRC client."
+               exit 1
+       fi
+
        print_screen_output "Starting $SCRIPT_NAME self updater."
        print_screen_output "Currently running $SCRIPT_NAME version number: $SCRIPT_VERSION_NUMBER"
        print_screen_output "Current version patch number: $SCRIPT_PATCH_NUMBER"
@@ -1244,11 +1474,44 @@ script_self_updater()
                if [[ -n $( grep '###\*\*EOF\*\*###' <<< "$file_contents" ) ]];then
                        echo "$file_contents" > $SCRIPT_PATH/$SCRIPT_NAME || error_handler 14 "$?"
                        chmod +x $SCRIPT_PATH/$SCRIPT_NAME || error_handler 15 "$?"
-                       SCRIPT_VERSION_NUMBER=$( grep -im 1 'version:' $SCRIPT_PATH/$SCRIPT_NAME | gawk '{print $3}' )
-                       SCRIPT_PATCH_NUMBER=$( grep -im 1 'Patch Number:' $SCRIPT_PATH/$SCRIPT_NAME | gawk '{print $4}' )
+                       SCRIPT_VERSION_NUMBER=$( parse_version_data 'main' )
+                       SCRIPT_PATCH_NUMBER=$( parse_version_data 'patch' )
                        print_screen_output "Successfully updated to $2 version: $SCRIPT_VERSION_NUMBER"
                        print_screen_output "New $2 version patch number: $SCRIPT_PATCH_NUMBER"
                        print_screen_output "To run the new version, just start $SCRIPT_NAME again."
+                       print_screen_output "----------------------------------------"
+                       print_screen_output "Starting download of man page file now."
+                       if [[ ! -d $MAN_FILE_LOCATION ]];then
+                               print_screen_output "The required man directory was not detected on your system, unable to continue: $MAN_FILE_LOCATION"
+                       else
+                               if [[ $B_ROOT == 'true' ]];then
+                                       print_screen_output "Checking Man page download URL..."
+                                       if [[ -f /usr/share/man/man8/inxi.8.gz ]];then
+                                               print_screen_output "Updating man page location to man1."
+                                               mv -f /usr/share/man/man8/inxi.8.gz /usr/share/man/man1/inxi.1.gz 
+                                               if [[ -n $( type -p mandb ) ]];then
+                                                       exec $( type -p mandb ) -q 
+                                               fi
+                                       fi
+                                       wget -q --spider $MAN_FILE_DOWNLOAD || wget_man_error=$?
+                                       if [[ $wget_man_error -eq 0 ]];then
+                                               print_screen_output "Man file download URL verified: $MAN_FILE_DOWNLOAD"
+                                               print_screen_output "Downloading Man page file now."
+                                               wget -q -O $man_file_path $MAN_FILE_DOWNLOAD || wget_man_error=$?
+                                               if [[ $wget_man_error -gt 0 ]];then
+                                                       print_screen_output "Oh no! Something went wrong downloading the Man gz file at: $MAN_FILE_DOWNLOAD"
+                                                       print_screen_output "Check the error messages for what happened. Error: $wget_man_error"
+                                               else
+                                                       print_screen_output "Download/install of man page successful. Check to make sure it works: man inxi"
+                                               fi
+                                       else
+                                               print_screen_output "Man file download URL failed, unable to continue: $MAN_FILE_DOWNLOAD"
+                                       fi
+                               else
+                                       print_screen_output "Updating / Installing the Man page requires root user, writing to: $MAN_FILE_LOCATION"
+                                       print_screen_output "If you want the man page, you'll have to run $SCRIPT_NAME -$3 as root."
+                               fi
+                       fi
                        exit 0
                else
                        error_handler 16
@@ -1270,9 +1533,16 @@ script_self_updater()
 debug_data_collector()
 {
        local xiin_app='' xiin_data_file='' xiin_download='' error='' b_run_xiin='false'
-       local debug_data_dir="inxi-$(tr ' ' '-' <<< $HOSTNAME | tr '[A-Z]' '[a-z]' )-$1-$(date +%Y%m%d)" 
+       local debug_data_dir='' bsd_string=''
        local completed_gz_file='' xiin_file='xiin.py' ftp_upload='ftp.techpatterns.com/incoming'
        local Line='-------------------------'
+       local start_directory=$( pwd )
+       
+       if [[ -n $BSD_TYPE ]];then
+               bsd_string="$BSD_TYPE-"
+       fi
+       
+       debug_data_dir="inxi-$bsd_string$(tr ' ' '-' <<< $HOSTNAME | tr '[A-Z]' '[a-z]' )-$1-$(date +%Y%m%d)" 
        
        if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
                if [[ -n $ALTERNATE_FTP ]];then
@@ -1285,35 +1555,58 @@ debug_data_collector()
                fi
                echo 'completed'
                cd $SCRIPT_DATA_DIR
-               if [[ -d $debug_data_dir ]];then
+               if [[ -d $SCRIPT_DATA_DIR/$debug_data_dir ]];then
                        echo 'Deleting previous xiin data directory...'
-                       rm -rf $debug_data_dir
+                       rm -rf $SCRIPT_DATA_DIR/$debug_data_dir
                fi
-               mkdir $debug_data_dir
-               if [[ -f $debug_data_dir.tar.gz ]];then
+               mkdir $SCRIPT_DATA_DIR/$debug_data_dir
+               if [[ -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz ]];then
                        echo 'Deleting previous tar.gz file...'
-                       rm -f $debug_data_dir.tar.gz
+                       rm -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz
                fi
                
                echo 'Collecting system info: sensors, lsusb, lspci, lspci -v data, plus /proc data'
-               lsusb &> $debug_data_dir/lsusb.txt
+               echo 'also checking for dmidecode data: note, you must be root to have dmidecode work.'
+               echo "Data going into: $SCRIPT_DATA_DIR/$debug_data_dir"
+               # bsd tools
+               pciconf -vl &> $debug_data_dir/bsd-pciconf-vl.txt
+               sysctl -a &> $debug_data_dir/bsd-sysctl-a.txt
+               
+               dmidecode &> $debug_data_dir/dmidecode.txt
+               
+               lscpu &> $debug_data_dir/lscpu.txt
                lspci &> $debug_data_dir/lspci.txt
+               lspci -n &> $debug_data_dir/lspci-n.txt
                lspci -v &> $debug_data_dir/lspci-v.txt
+               lsusb &> $debug_data_dir/lsusb.txt
                ps aux &> $debug_data_dir/ps-aux.txt
+               runlevel &> $debug_data_dir/runlevel.txt
+               systemctl list-units &> $debug_data_dir/systemctl-list-units.txt
+               systemctl list-units --type=target &> $debug_data_dir/systemctl-list-units-target.txt
+               initctl list &> $debug_data_dir/initctl-list.txt
                sensors &> $debug_data_dir/sensors.txt
+               strings --version  &> $debug_data_dir/strings.txt
+               nvidia-smi -q &> $debug_data_dir/nvidia-smi-q.txt
+               nvidia-smi -q -x &> $debug_data_dir/nvidia-smi-xq.txt
+               
                ls /usr/bin/gcc* &> $debug_data_dir/gcc-sys-versions.txt
                gcc --version &> $debug_data_dir/gcc-version.txt
+               cat /etc/issue &> $debug_data_dir/etc-issue.txt
                cat $FILE_LSB_RELEASE &> $debug_data_dir/lsb-release.txt
+               cat $FILE_OS_RELEASE &> $debug_data_dir/os-release.txt
                cat $FILE_ASOUND_DEVICE &> $debug_data_dir/proc-asound-device.txt
                cat $FILE_ASOUND_VERSION &> $debug_data_dir/proc-asound-version.txt
                cat $FILE_CPUINFO &> $debug_data_dir/proc-cpu-info.txt
                cat $FILE_MEMINFO &> $debug_data_dir/proc-meminfo.txt
                cat $FILE_MODULES &> $debug_data_dir/proc-modules.txt
                cat /proc/net/arp &> $debug_data_dir/proc-net-arp.txt 
-               check_recommends &> $debug_data_dir/check-recommends.txt
+               # bsd data
+               cat /var/run/dmesg.boot &> $debug_data_dir/bsd-var-run-dmesg.boot.txt 
+               
+               check_recommends_user_output &> $debug_data_dir/check-recommends-user-output.txt
                # first download and verify xiin
                if [[ $B_UPLOAD_DEBUG_DATA == 'true' || $1 == 'disk' || $1 == 'sys' || $1 == 'all' ]];then
-                       touch $debug_data_dir/xiin-error.txt
+                       touch $SCRIPT_DATA_DIR/$debug_data_dir/xiin-error.txt
                        echo "Downloading required tree traverse tool $xiin_file..."
                        if [[ -f xiin && ! -f $xiin_file ]];then
                                mv -f xiin $xiin_file
@@ -1344,9 +1637,11 @@ debug_data_collector()
                        echo 'Collecting networking data...'
                        ifconfig &> $debug_data_dir/ifconfig.txt
                        ip addr &> $debug_data_dir/ip-addr.txt
-                       if [[ $b_run_xiin == 'true' ]];then
+                       if [[ $b_run_xiin == 'true' && -z $BSD_TYPE ]];then
                                echo $Line
                                echo "Running $xiin_file tool now on /sys..."
+                               echo "Using Python version:" && python --version
+                               python --version &> $debug_data_dir/python-version.txt
                                python ./$xiin_file -d /sys -f $xiin_data_file
                                if [[ $? -ne 0 ]];then
                                        error=$?
@@ -1359,7 +1654,7 @@ debug_data_collector()
                        fi
                fi
                if [[ $1 == 'xorg' || $1 == 'all' ]];then
-                       if [[ $B_RUNNING_IN_X != 'true' ]];then
+                       if [[ $B_RUNNING_IN_DISPLAY != 'true' ]];then
                                echo 'Warning: only some of the data collection can occur if you are not in X'
                                touch $debug_data_dir/warning-user-not-in-x
                        fi
@@ -1374,13 +1669,13 @@ debug_data_collector()
                                touch $debug_data_dir/no-xorg-log-file
                        fi
                        if [[ -e /etc/X11/xorg.conf ]];then
-                               cp /etc/X11/xorg.conf $debug_data_dir
+                               cp /etc/X11/xorg.conf $SCRIPT_DATA_DIR/$debug_data_dir
                        else
                                touch $debug_data_dir/no-xorg-conf-file
                        fi
                        if [[ -n $( ls /etc/X11/xorg.conf.d/ 2>/dev/null ) ]];then
                                ls /etc/X11/xorg.conf.d &> $debug_data_dir/ls-etc-x11-xorg-conf-d.txt
-                               cp /etc/X11/xorg.conf.d $debug_data_dir
+                               cp /etc/X11/xorg.conf.d $SCRIPT_DATA_DIR/$debug_data_dir
                        else
                                touch $debug_data_dir/no-xorg-conf-d-files
                        fi
@@ -1391,6 +1686,12 @@ debug_data_collector()
                        xrandr &> $debug_data_dir/xrandr.txt
                        X -version &> $debug_data_dir/x-version.txt
                        Xorg -version &> $debug_data_dir/xorg-version.txt
+                       echo $GNOME_DESKTOP_SESSION_ID &> $debug_data_dir/gnome-desktop-session-id.txt
+                       # kde 3 id
+                       echo $KDE_FULL_SESSION &> $debug_data_dir/kde3-ful-session.txt
+                       echo $KDE_SESSION_VERSION &> $debug_data_dir/kde456-session-version.txt
+                       echo "$(kded$KDE_SESSION_VERSION --version )" &> $debug_data_dir/kde-version-data.txt
+                       echo $XDG_CURRENT_DESKTOP &> $debug_data_dir/xdg-current-desktop.txt
                fi
                if [[ $1 == 'disk' || $1 == 'all' ]];then
                        echo 'Collecting dev, label, disk, uuid data, df...'
@@ -1400,10 +1701,27 @@ debug_data_collector()
                        ls -l /dev/disk/by-label &> $debug_data_dir/dev-disk-label-data.txt
                        ls -l /dev/disk/by-uuid &> $debug_data_dir/dev-disk-uuid-data.txt
                        ls -l /dev/disk/by-path &> $debug_data_dir/dev-disk-path-data.txt
+                       ls -l /dev/mapper &> $debug_data_dir/dev-disk-mapper-data.txt
                        readlink /dev/root &> $debug_data_dir/dev-root.txt
-                       df -h -T -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs &> $debug_data_dir/df-h-T-excludes.txt
+                       df -h -T -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs &> $debug_data_dir/df-h-T-P-excludes.txt
+                       df -T -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs &> $debug_data_dir/df-T-P-excludes.txt
+                       df -H -T &> $debug_data_dir/bsd-df-H-T-no-excludes.txt
+                       df -H &> $debug_data_dir/bsd-df-H-no-excludes.txt
+                       # bsd tool
+                       mount &> $debug_data_dir/mount.txt
+                       gpart list &> $debug_data_dir/bsd-gpart-list.txt
+                       gpart show &> $debug_data_dir/bsd-gpart-show.txt
+                       gpart status &> $debug_data_dir/bsd-gpart-status.txt
+                       swapctl -l &> $debug_data_dir/bsd-swapctl-l.txt
                        swapon -s &> $debug_data_dir/swapon-s.txt
-                       df -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 &> $debug_data_dir/df-excludes.txt
+                       sysctl -b kern.geom.conftxt  &> $debug_data_dir/bsd-sysctl-b-kern.geom.conftxt.txt
+                       sysctl -b kern.geom.confxml &> $debug_data_dir/bsd-sysctl-b-kern.geom.confxml.txt
+                       zfs list &> $debug_data_dir/bsd-zfs-list.txt
+                       zpool list &> $debug_data_dir/bsd-zpool-list.txt
+                       zpool list -v &> $debug_data_dir/bsd-zpool-list-v.txt
+                       df -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 &> $debug_data_dir/df-P-excludes.txt
+                       df -P &> $debug_data_dir/bsd-df-P-no-excludes.txt
+                       cat /proc/mdstat &> $debug_data_dir/proc-mdstat.txt
                        cat $FILE_PARTITIONS &> $debug_data_dir/proc-partitions.txt
                        cat $FILE_SCSI &> $debug_data_dir/proc-scsi.txt
                        cat $FILE_MOUNTS &> $debug_data_dir/proc-mounts.txt
@@ -1414,12 +1732,15 @@ debug_data_collector()
                        cat /etc/mtab &> $debug_data_dir/etc-mtab.txt
                fi
                echo 'Creating inxi output file now. This can take a few seconds...'
-               $SCRIPT_NAME -Fploudxx -c 0 -@ 8 > $debug_data_dir/inxi-Fploudxx.txt
+               echo "Starting $SCRIPT_NAME from: $start_directory"
+               cd $start_directory
+               $SCRIPT_PATH/$SCRIPT_NAME -FRploudxxx -c 0 -@ 8 > $SCRIPT_DATA_DIR/$debug_data_dir/inxi-FRploudxxx.txt
                cp $LOG_FILE $SCRIPT_DATA_DIR/$debug_data_dir
-               if [[ -f $debug_data_dir.tar.gz ]];then
+               if [[ -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz ]];then
                        echo "Found and removing previous tar.gz data file: $debug_data_dir.tar.gz"
-                       rm -f $debug_data_dir.tar.gz
+                       rm -f $SCRIPT_DATA_DIR/$debug_data_dir.tar.gz
                fi
+               cd $SCRIPT_DATA_DIR
                echo 'Creating tar.gz compressed file of this material now. Contents:'
                echo $Line
                tar -cvzf $debug_data_dir.tar.gz $debug_data_dir
@@ -1462,7 +1783,7 @@ debug_data_collector()
        exit 0
 }
 
-check_recommends()
+check_recommends_user_output()
 {
        local Line='-----------------------------------------------------------------------------------------'
        local gawk_version='N/A' sed_version='N/A' sudo_version='N/A' python_version='N/A'
@@ -1472,7 +1793,7 @@ check_recommends()
                exit 1
        fi
        
-       initialize_script_paths
+       initialize_paths
        
        echo "$SCRIPT_NAME will now begin checking for the programs it needs to operate. First a check of"
        echo "the main languages and tools $SCRIPT_NAME uses. Python is only for debugging data collection."
@@ -1483,6 +1804,10 @@ check_recommends()
        fi
        if [[ -n $( type -p sed ) ]];then
                sed_version=$( sed --version 2>&1 | awk 'BEGIN {IGNORECASE=1} /^GNU sed version/ {print $4}' )
+               if [[ -z $sed_version ]];then
+                       # note: bsd sed shows error with --version flag
+                       sed_version=$( sed --version 2>&1 | awk 'BEGIN {IGNORECASE=1} /^sed: illegal option/ {print "BSD sed"}' )
+               fi
        fi
        if [[ -n $( type -p sudo ) ]];then
                sudo_version=$( sudo -V 2>&1 | awk 'BEGIN {IGNORECASE=1} /^Sudo version/ {print $3}' )
@@ -1529,7 +1854,6 @@ check_recommends_items()
        # pardus: pisi sf -q /usr/bin/package
        local required_apps='
        df:coreutils~coreutils~coreutils~:partition_data 
-       free:procps~procps~procps~:system_memory 
        gawk:gawk~gawk~gawk~:core_tool
        grep:grep~grep~grep~:string_search 
        lspci:pciutils~pciutils~pciutils~:hardware_data 
@@ -1542,17 +1866,19 @@ check_recommends_items()
        wc:coreutils~coreutils~coreutils~:word_character_count
        '
        local x_recommends='
-       glxinfo:mesa-utils~mesa-demos~glx-utils~:-G_glx_info 
+       glxinfo:mesa-utils~mesa-demos~glx-utils_(openSUSE_12.3_and_later_Mesa-demo-x)~:-G_glx_info 
        xdpyinfo:X11-utils~xorg-xdpyinfo~xorg-x11-utils~:-G_multi_screen_resolution 
        xprop:X11-utils~xorg-xprop~x11-utils~:-S_desktop_data 
        xrandr:x11-xserver-utils~xrandr~x11-server-utils~:-G_single_screen_resolution
        '
        local recommended_apps='
+       dmidecode:dmidecode~dmidecode~dmidecode~:-M_if_no_sys_machine_data 
        file:file~file~file~:-o_unmounted_file_system
        hddtemp:hddtemp~hddtemp~hddtemp~:-Dx_show_hdd_temp 
        ifconfig:net-tools~net-tools~net-tools~:-i_ip_lan-deprecated
        ip:iproute~iproute2~iproute~:-i_ip_lan
        sensors:lm-sensors~lm_sensors~lm-sensors~:-s_sensors_output
+       strings:binutils~~~:-I_sysvinit_version
        lsusb:usbutils~usbutils~usbutils~:-A_usb_audio;-N_usb_networking 
        modinfo:module-init-tools~module-init-tools~module-init-tools~:-Ax,-Nx_module_version 
        runlevel:sysvinit~sysvinit~systemd~:-I_runlevel
@@ -1563,6 +1889,7 @@ check_recommends_items()
        /dev:-l,-u,-o,-p,-P,-D_disk_partition_data
        /dev/disk/by-label:-l,-o,-p,-P_partition_labels
        /dev/disk/by-uuid:-u,-o,-p,-P_partition_uuid
+       /var/run/dmesg.boot:-C,-f_(BSD_only)
        '
        
        case $1 in
@@ -1629,6 +1956,7 @@ check_recommends_items()
                else
                        print_string="$item_string: $application"
                fi
+               
                starter="$( sed -e :a -e 's/^.\{1,75\}$/&./;ta' <<< $print_string )"
                if [[ -z $( grep '^/' <<< $application ) && -n $location ]] || [[ -d $application ]];then
                        if [[ -n $location ]];then
@@ -1684,7 +2012,8 @@ print_screen_output()
 {
        eval $LOGFS
        # the double quotes are needed to avoid losing whitespace in data when certain output types are used
-       local print_data="$( echo -e "$1" )"
+       # trim off whitespace at end
+       local print_data="$( echo -e "$1" )" 
 
        # just using basic debugger stuff so you can tell which thing is printing out the data. This
        # should help debug kde 4 konvi issues when that is released into sid, we'll see. Turning off
@@ -1727,7 +2056,8 @@ print_screen_output()
 create_print_line()
 {
        eval $LOGFS
-       printf "${C1}%-${INDENT}s${C2} %s" "$1" "$2"
+       local line=$2
+       printf "${C1}%-${INDENT}s${C2} %s" "$1" "$line"
        eval $LOGFE
 }
 
@@ -1763,12 +2093,13 @@ remove_erroneous_chars()
 get_parameters()
 {
        eval $LOGFS
-       local opt='' wget_test='' update_flags='U!:' debug_data_type='
+       local opt='' wget_test='' debug_data_type='' weather_flag='wW:
        local use_short='true' # this is needed to trigger short output, every v/d/F/line trigger sets this false
 
-       # If distro maintainers want to not allow updates, turn off that option for users
-       if [[ $B_ALLOW_UPDATE == 'false' ]];then
-               update_flags=''
+       # if distro maintainers don't want the weather feature disable it
+       if [[ $B_ALLOW_WEATHER == 'false' ]];then
+               weather_flag=''
+               
        fi
        if [[ $1 == '--version' ]];then
                print_version_info
@@ -1777,13 +2108,13 @@ get_parameters()
                show_options
                exit 0
        elif [[ $1 == '--recommends' ]];then
-               check_recommends
+               check_recommends_user_output
                exit 0
        # the short form only runs if no args output args are used
        # no need to run through these if there are no args
        # reserved for future use: -g for extra Graphics; -m for extra Machine; -d for extra Disk
        elif [[ -n $1 ]];then
-               while getopts Abc:CdDfFGhHiIlMnNopPrsSt:uv:VxzZ%@:${update_flags} opt
+               while getopts Abc:CdDfFGhHiIlMnNopPrRsSt:uUv:V${weather_flag}xzZ%@:!: opt
                do
                        case $opt in
                        A)      B_SHOW_AUDIO='true'
@@ -1791,6 +2122,7 @@ get_parameters()
                                ;;
                        b)      use_short='false'
                                B_SHOW_BASIC_CPU='true'
+                               B_SHOW_BASIC_RAID='true'
                                B_SHOW_DISK_TOTAL='true'
                                B_SHOW_GRAPHICS='true'
                                B_SHOW_INFO='true'
@@ -1863,6 +2195,7 @@ get_parameters()
                                B_SHOW_MACHINE='true'
                                B_SHOW_NETWORK='true'
                                B_SHOW_PARTITIONS='true'
+                               B_SHOW_RAID='true'
                                B_SHOW_SENSORS='true'
                                B_SHOW_SYSTEM='true'
                                use_short='false'
@@ -1905,6 +2238,13 @@ get_parameters()
                        r)      B_SHOW_REPOS='true'
                                use_short='false'
                                ;;
+                       R)      B_SHOW_RAID='true'
+                               # it turns out only users with mdraid software installed will have raid,
+                               # so unless -R is explicitly called, blank -b/-F/-v6 and less output will not show
+                               # error if file is missing.
+                               B_SHOW_RAID_R='true'
+                               use_short='false'
+                               ;;
                        s)      B_SHOW_SENSORS='true'
                                use_short='false'
                                ;;
@@ -1914,7 +2254,7 @@ get_parameters()
                        t)      if [[ -n $( grep -E '^(c|m|cm|mc)([1-9]|1[0-9]|20)?$' <<< $OPTARG ) ]];then
                                        use_short='false'
                                        if [[ -n $( grep -E '[0-9]+' <<< $OPTARG ) ]];then
-                                               PS_COUNT=$( grep -Eo '[0-9]+' <<< $OPTARG )
+                                               PS_COUNT=$( sed 's/[^0-9]//g' <<< $OPTARG )
                                        fi
                                        if [[ -n $( grep 'c' <<< $OPTARG ) ]];then
                                                B_SHOW_PS_CPU_DATA='true'
@@ -1941,6 +2281,7 @@ get_parameters()
                                        fi
                                        if [[ $OPTARG -ge 2 ]];then
                                                B_SHOW_BASIC_DISK='true'
+                                               B_SHOW_BASIC_RAID='true'
                                                B_SHOW_MACHINE='true'
                                                B_SHOW_NETWORK='true'
                                        fi
@@ -1959,30 +2300,51 @@ get_parameters()
                                                B_SHOW_SENSORS='true'
                                                B_SHOW_LABELS='true'
                                                B_SHOW_UUIDS='true'
+                                               B_SHOW_RAID='true'
                                        fi
                                        if [[ $OPTARG -ge 6 ]];then
                                                B_SHOW_FULL_OPTICAL='true'
                                                B_SHOW_PARTITIONS_FULL='true'
                                                B_SHOW_UNMOUNTED_PARTITIONS='true'
+                                               B_EXTRA_EXTRA_DATA='true'
                                        fi
                                        if [[ $OPTARG -ge 7 ]];then
-                                               B_EXTRA_EXTRA_DATA='true'
+                                               B_EXTRA_EXTRA_EXTRA_DATA='true'
                                                B_SHOW_IP='true'
+                                               B_SHOW_RAID_R='true'
                                        fi
                                else
                                        error_handler 4 "$OPTARG"
                                fi
                                ;;
-                       U)      script_self_updater "$SCRIPT_DOWNLOAD" 'svn server'
+                       U)      if [[ $B_ALLOW_UPDATE == 'true' ]];then
+                                       script_self_updater "$SCRIPT_DOWNLOAD" 'svn server' "$opt"
+                               else
+                                       error_handler 17 "-$opt"
+                               fi
                                ;;
                        V)      print_version_info
                                exit 0
                                ;;
-                       # this will trigger either with xx or with Fx but not with xF
-                       x)      if [[ $B_EXTRA_DATA == 'true' ]];then
+                       w)      B_SHOW_WEATHER=true
+                               use_short='false'
+                               ;;
+                       W)      ALTERNATE_WEATHER_LOCATION=$( sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'  <<< $OPTARG )
+                               if [[ -n $( grep -Esi '([^,]+,.+|[0-9-]+)' <<< $ALTERNATE_WEATHER_LOCATION ) ]];then
+                                       B_SHOW_WEATHER=true
+                                       use_short='false'
+                               else
+                                       error_handler 18 "-$opt: '$OPTARG'" "city,state OR latitude,longitude OR postal/zip code."
+                               fi
+                               ;;
+                       # this will trigger either with x, xx, xxx or with Fx but not with xF
+                       x)      if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                       B_EXTRA_EXTRA_EXTRA_DATA='true'
+                               elif [[ $B_EXTRA_DATA == 'true' ]];then
                                        B_EXTRA_EXTRA_DATA='true'
+                               else
+                                       B_EXTRA_DATA='true'
                                fi
-                               B_EXTRA_DATA='true'
                                ;;
                        z)      B_OUTPUT_FILTER='true'
                                ;;
@@ -2032,7 +2394,7 @@ get_parameters()
                                                                        debug_data_type='all'
                                                                        ;;
                                                        esac
-                                                       initialize_script_data
+                                                       initialize_data
                                                        debug_data_collector $debug_data_type
                                                        ;;
                                        esac
@@ -2049,26 +2411,53 @@ get_parameters()
                                        3)      B_TESTING_1='true'
                                                B_TESTING_2='true'
                                                ;;
-                                       10)
-                                               script_self_updater "$SCRIPT_DOWNLOAD_DEV" 'dev server'
-                                               ;;
-                                       11)
-                                               script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_1" 'svn: branch one server'
+                                       1[0-6]|http*)
+                                               if [[ $B_ALLOW_UPDATE == 'true' ]];then
+                                                       case $OPTARG in
+                                                               10)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_DEV" 'dev server' "$opt $OPTARG"
+                                                                       ;;
+                                                               11)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_1" 'svn: branch one server' "$opt $OPTARG"
+                                                                       ;;
+                                                               12)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_2" 'svn: branch two server' "$opt $OPTARG"
+                                                                       ;;
+                                                               13)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_3" 'svn: branch three server' "$opt $OPTARG"
+                                                                       ;;
+                                                               14)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_4" 'svn: branch four server' "$opt $OPTARG"
+                                                                       ;;
+                                                               15)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_BSD" 'svn: branch bsd server' "$opt $OPTARG"
+                                                                       ;;
+                                                               16)
+                                                                       script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_GNUBSD" 'svn: branch gnubsd server' "$opt $OPTARG"
+                                                                       ;;
+                                                               http*)
+                                                                       script_self_updater "$OPTARG" 'alt server' "$opt <http...>"
+                                                                       ;;
+                                                       esac
+                                               else
+                                                       error_handler 17 "-$opt $OPTARG"
+                                               fi
                                                ;;
-                                       12)
-                                               script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_2" 'svn: branch two server'
+                                       30)
+                                               B_RUNNING_IN_SHELL='true'
                                                ;;
-                                       13)
-                                               script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_3" 'svn: branch three server'
+                                       31)
+                                               B_SHOW_HOST='false'
                                                ;;
-                                       14)
-                                               script_self_updater "$SCRIPT_DOWNLOAD_BRANCH_4" 'svn: branch four server'
+                                       32)
+                                               B_SHOW_HOST='true'
                                                ;;
                                        ftp*)
                                                ALTERNATE_FTP="$OPTARG"
                                                ;;
-                                       http*)
-                                               script_self_updater "$OPTARG" 'alt server'
+                                       # for weather function, allows user to set an alternate weather location
+                                       location=*)
+                                               error_handler 19 "-$opt location=" "-W"
                                                ;;
                                        *)      error_handler 11 "$OPTARG"
                                                ;;
@@ -2094,6 +2483,12 @@ get_parameters()
        if [[ $B_OVERRIDE_FILTER == 'true' ]];then
                B_OUTPUT_FILTER='false'
        fi
+       # change basic to full if user requested it or if arg overrides it
+       if [[ $B_SHOW_RAID == 'true' && $B_SHOW_BASIC_RAID == 'true' ]];then
+               B_SHOW_BASIC_RAID='false'
+       fi
+       
+       
        eval $LOGFE
 }
 
@@ -2101,163 +2496,319 @@ get_parameters()
 show_options()
 {
        local color_scheme_count=$(( ${#A_COLOR_SCHEMES[@]} - 1 ))
+       local partition_string='partition' partition_string_u='Partition'
        
        if [[ $B_RUNNING_IN_SHELL != 'true' ]];then
                print_screen_output "Sorry, you can't run the help option in an IRC client."
                exit 1
        fi
-       print_screen_output "$SCRIPT_NAME supports the following options. You can combine them, or list them"
-       print_screen_output "one by one: Examples: $SCRIPT_NAME -v4 -c6 OR $SCRIPT_NAME -bDc 6"
+       if [[ -n $BSD_TYPE ]];then
+               partition_string='slice'
+               partition_string_u='Slice'
+       fi
+       # print_lines_basic "0" "" ""
+       # print_lines_basic "1" "" ""
+       # print_lines_basic "2" "" ""
+       # print_screen_output " "
+       print_lines_basic "0" "" "$SCRIPT_NAME supports the following options. You can combine them, or list them one by one. Examples: $SCRIPT_NAME^-v4^-c6 OR $SCRIPT_NAME^-bDc^6. If you start $SCRIPT_NAME with no arguments, it will show the short form."
        print_screen_output " "
-       print_screen_output "If you start $SCRIPT_NAME with no arguments, it will show the short form."
-       print_screen_output "The following options if used without -F, -b, or -v will show just the complete line(s):"
-       print_screen_output "A,C,D,G,I,M,N,P,S,f,i,n,o,p,l,u,r,s,t - you can use these alone or together to show"
-       print_screen_output "just the line(s) you want to see."
-       print_screen_output "If you use them with -v [level], -b or -F, it will show the full output for that line "
-       print_screen_output "along with the output for the chosen verbosity level."
+       print_lines_basic "0" "" "The following options if used without -F, -b, or -v will show just option line(s): A, C, D, G, I, M, N, P, R, S, f, i, n, o, p, l, u, r, s, t - you can use these alone or together to show just the line(s) you want to see. If you use them with -v [level], -b or -F, it will show the full output for that line along with the output for the chosen verbosity level."
+       
        print_screen_output "- - - - - - - - - - - - - - - - - - - - - - - - - - - - -"
        print_screen_output "Output Control Options:"
-       print_screen_output "-A  Show Audio/sound card information."
-       print_screen_output "-b  Shows basic output, short form (previously -d). Same as: $SCRIPT_NAME -v 2"
-       print_screen_output "-c  Available color schemes. Scheme number is required. Color selectors run a color selector option"
-       print_screen_output "    prior to $SCRIPT_NAME starting which lets you set the config file value for the selection."
-       print_screen_output "    Supported color schemes: 0-$color_scheme_count Example: $SCRIPT_NAME -c 11"
-       print_screen_output "    Color selectors for each type display (NOTE: irc and global only show safe color set):"
-       print_screen_output "    94 - Console, out of X"
-       print_screen_output "    95 - Terminal, running in X - like xTerm"
-       print_screen_output "    96 - Gui IRC, running in X - like Xchat, Quassel, Konversation etc."
-       print_screen_output "    97 - Console IRC running in X - like irssi in xTerm"
-       print_screen_output "    98 - Console IRC not in  X"
-       print_screen_output "    99 - Global - Overrides/removes all settings. Setting specific removes global."
-       print_screen_output "-C  Show full CPU output, including per CPU clockspeed."
-       print_screen_output "-d  Shows optical drive data. Same as -Dd. With -x, adds features line to output. -xx adds a few more features."
-       print_screen_output "-D  Show full hard Disk info, not only model, ie: /dev/sda ST380817AS 80.0GB."
-       print_screen_output "-f  Show all cpu flags used, not just the short list. Not shown with -F to avoid spamming."
-       print_screen_output "-F  Show Full output for $SCRIPT_NAME. Includes all Upper Case line letters, plus -s and -n."
-       print_screen_output "    Does not show extra verbose options like -x -d -f -u -l -o -p -t -r unless you use that argument."
-       print_screen_output "-G  Show Graphic card information (card, x type, resolution, glx renderer, version)."
-       print_screen_output "-i  Show Wan IP address, and shows local interfaces (requires ifconfig network tool). Same as -Nni"
-       print_screen_output "    Not shown with -F for user security reasons, you shouldn't paste your local/wan IP."
-       print_screen_output "-I  Show Information: processes, uptime, memory, irc client, inxi version."
-       print_screen_output "-l  Show partition labels. Default: short partition -P. For full -p output, use: -pl (or -plu)."
-       print_screen_output "-M  Show machine data. Motherboard, Bios, and if present, System Builder (Like Lenovo)."
-       print_screen_output "    Older systems/kernels without the required /sys data can use dmidecode instead, run as root."
-       print_screen_output "-n  Show Advanced Network card information. Same as -Nn. Shows interface, speed, mac id, state, etc."
-       print_screen_output "-N  Show Network card information. With -x, shows PCI BusID, Port number."
-       print_screen_output "-o  Show unmounted partition information (includes UUID and LABEL if available)."
-       print_screen_output "    Shows file system type if you have file installed, if you are root OR if you have"
-       print_screen_output "    added to /etc/sudoers (sudo v. 1.7 or newer): <username> ALL = NOPASSWD: /usr/bin/file (sample)"
-       print_screen_output "-p  Show full partition information (-P plus all other detected partitions)."
-       print_screen_output "-P  Show Partition information (shows what -v 4 would show, but without extra data)."
-       print_screen_output "    Shows, if detected: / /boot /home /tmp /usr /var. Use -p to see all mounted partitions."
-       print_screen_output "-r  Show distro repository data. Currently supported repo types: APT; PACMAN; PISI; YUM."
-       print_screen_output "-s  Show sensors output (if sensors installed/configured): mobo/cpu/gpu temp; detected fan speeds."
-       print_screen_output "    Gpu temp only for Fglrx/Nvidia drivers. Nvidia shows screen number for > 1 screens."
-       print_screen_output "-S  Show System information: host name, kernel, desktop environment (if in X), distro"
-       print_screen_output "-t  Show processes. Requires extra options: c (cpu) m (memory) cm (cpu+memory). If followed by numbers 1-20,"
-       print_screen_output "    shows that number of processes for each type (default: $PS_COUNT; if in irc, max: 5): -t cm10"
-       print_screen_output "    Make sure to have no space between letters and numbers (-t cm10 -right, -t cm 10 -wrong)."
-       print_screen_output "-u  Show partition UUIDs. Default: short partition -P. For full -p output, use: -pu (or -plu)."
-       print_screen_output "-v  Script verbosity levels. Verbosity level number is required. Should not be used with -b or -F"
-       print_screen_output "    Supported levels: 0-${VERBOSITY_LEVELS} Example: $SCRIPT_NAME -v 4"
-       print_screen_output "    0 - Short output, same as: $SCRIPT_NAME"
-       print_screen_output "    1 - Basic verbose, -S + basic CPU + -G + basic Disk + -I."
-       print_screen_output "    2 - Adds networking card (-N), Machine (-M) data, and shows basic hard disk data (names only)."
-       print_screen_output "        Same as: $SCRIPT_NAME -b"
-       print_screen_output "    3 - Adds advanced CPU (-C), network (-n) data, and switches on -x advanced data option."
-       print_screen_output "    4 - Adds partition size/filled data (-P) for (if present):/, /home, /var/, /boot"
-       print_screen_output "        Shows full disk data (-D)"
-       print_screen_output "    5 - Adds audio card (-A); sensors (-s), partion label (-l) and UUID (-u), short form of optical drives."
-       print_screen_output "    6 - Adds full partition data (-p), unmounted partition data (-o), optical drive data (-d)."
-       print_screen_output "    7 - Adds network IP data (-i); triggers -xx."
-       print_screen_output "-x  Show extra data (only works with verbose or line output, not short form): "
-       print_screen_output "    -C - bogomips on Cpu;"
-       print_screen_output "    -d - Adds items to features line of optical drive; adds rev version to optical drive."
-       print_screen_output "    -D - Hdd temp with disk data if you have hddtemp installed, if you are root OR if you have added to"
-       print_screen_output "         /etc/sudoers (sudo v. 1.7 or newer): <username> ALL = NOPASSWD: /usr/sbin/hddtemp (sample)"
-       print_screen_output "    -G - Direct rendering status for Graphics (in X)."
-       print_screen_output "    -G - (for single gpu, nvidia driver) screen number gpu is running on."
-       print_screen_output "    -i - Show IPv6 as well for LAN interface (IF) devices."
-       print_screen_output "    -I - Show system GCC, default. With -xx, also show other installed GCC versions."
-       print_screen_output "    -N -A - Adds version/port(s)/driver version (if available) for Network/Audio;"
-       print_screen_output "    -N -A -G - Network, audio, graphics, shows PCI Bus ID/Usb ID number of card;"
-       print_screen_output "    -S - Desktop toolkit if avaliable (GNOME/XFCE/KDE only); Kernel gcc version"
-       print_screen_output "    -t - Adds memory use output to cpu (-xt c), and cpu use to memory (-xt m)."
-       print_screen_output "-xx Show extra, extra data (only works with verbose or line output, not short form): "
-       print_screen_output "    -I - Adds other detected installed gcc versions to primary gcc output (if present)."
-       print_screen_output "    -M - Adds chassis information, if any data for that is available."
-       print_screen_output "    -xx -@ <11-14> - Automatically uploads debugger data tar.gz file to ftp.techpatterns.com."
-       print_screen_output "-z  Adds security filters for IP addresses, Mac, and user home directory name. Default on for irc clients."
-       print_screen_output "-Z  Absolute override for output filters. Useful for debugging networking issues in irc for example."
+       print_lines_basic "1" "-A" "Audio/sound card information."
+       print_lines_basic "1" "-b" "Basic output, short form. Like $SCRIPT_NAME^-v^2, only minus hard disk names."
+       print_lines_basic "1" "-c" "Color schemes. Scheme number is required. Color selectors run a color selector option prior to $SCRIPT_NAME starting which lets you set the config file value for the selection."
+       print_lines_basic "1" "" "Supported color schemes: 0-$color_scheme_count Example: $SCRIPT_NAME^-c^11"
+       print_lines_basic "1" "" "Color selectors for each type display (NOTE: irc and global only show safe color set):"
+#      print_screen_output "    Supported color schemes: 0-$color_scheme_count Example: $SCRIPT_NAME -c 11"
+#      print_screen_output "    Color selectors for each type display (NOTE: irc and global only show safe color set):"
+       print_lines_basic "2" "94" "Console, out of X"
+       print_lines_basic "2" "95" "Terminal, running in X - like xTerm"
+       print_lines_basic "2" "96" "Gui IRC, running in X - like Xchat, Quassel, Konversation etc."
+       print_lines_basic "2" "97" "Console IRC running in X - like irssi in xTerm"
+       print_lines_basic "2" "98" "Console IRC not in  X"
+       print_lines_basic "2" "99" "Global - Overrides/removes all settings. Setting specific removes global."
+       print_lines_basic "1" "-C" "CPU output, including per CPU clockspeed (if available)."
+       print_lines_basic "1" "-d" "Optical drive data. Same as -Dd. See also -x and -xx."
+       print_lines_basic "1" "-D" "Full hard Disk info, not only model, ie: /dev/sda ST380817AS 80.0GB. See also -x and -xx."
+       print_lines_basic "1" "-f" "All cpu flags, triggers -C. Not shown with -F to avoid spamming. ARM cpus show 'features'."
+       print_lines_basic "1" "-F" "Full output for $SCRIPT_NAME. Includes all Upper Case line letters, plus -s and -n. Does not show extra verbose options like -x -d -f -u -l -o -p -t -r"
+       print_lines_basic "1" "-G" "Graphic card information (card, display server type/version, resolution, glx renderer, version)."
+       print_lines_basic "1" "-i" "Wan IP address, and shows local interfaces (requires ifconfig network tool). Same as -Nni. Not shown with -F for user security reasons, you shouldn't paste your local/wan IP."
+       print_lines_basic "1" "-I" "Information: processes, uptime, memory, irc client (or shell type), $SCRIPT_NAME version."
+       print_lines_basic "1" "-l" "${partition_string_u} labels. Default: short ${partition_string} -P. For full -p output, use: -pl (or -plu)."
+       print_lines_basic "1" "-M" "Machine data. Motherboard, Bios, and if present, System Builder (Like Lenovo). Older systems/kernels without the required /sys data can use dmidecode instead, run as root."
+       print_lines_basic "1" "-n" "Advanced Network card information. Same as -Nn. Shows interface, speed, mac id, state, etc."
+       print_lines_basic "1" "-N" "Network card information. With -x, shows PCI BusID, Port number."
+       print_lines_basic "1" "-o" "Unmounted ${partition_string} information (includes UUID and LABEL if available). Shows file system type if you have file installed, if you are root OR if you have added to /etc/sudoers (sudo v. 1.7 or newer) Example:^<username>^ALL^=^NOPASSWD:^/usr/bin/file^"
+       print_lines_basic "1" "-p" "Full ${partition_string} information (-P plus all other detected ${partition_string}s)."
+       print_lines_basic "1" "-P" "Basic ${partition_string} information (shows what -v 4 would show, but without extra data). Shows, if detected: / /boot /home /tmp /usr /var. Use -p to see all mounted ${partition_string}s."
+       print_lines_basic "1" "-r" "Distro repository data. Supported repo types: APT; PACMAN; PISI; YUM; URPMQ; Ports."
+       print_lines_basic "1" "-R" "RAID data. Shows RAID devices, states, levels, and components, and extra data with -x/-xx. md-raid: If device is resyncing, shows resync progress line as well."
+       print_lines_basic "1" "-s" "Sensors output (if sensors installed/configured): mobo/cpu/gpu temp; detected fan speeds. Gpu temp only for Fglrx/Nvidia drivers. Nvidia shows screen number for > 1 screens."
+       print_lines_basic "1" "-S" "System information: host name, kernel, desktop environment (if in X), distro"
+       print_lines_basic "1" "-t" "Processes. Requires extra options: c (cpu) m (memory) cm (cpu+memory). If followed by numbers 1-20, shows that number of processes for each type (default:^$PS_COUNT; if in irc, max:^5): -t^cm10"
+       print_lines_basic "1" "" "Make sure to have no space between letters and numbers (-t^cm10 - right, -t^cm^10 - wrong)."
+       print_lines_basic "1" "-u" "${partition_string_u} UUIDs. Default: short ${partition_string} -P. For full -p output, use: -pu (or -plu)."
+       print_lines_basic "1" "-v" "Script verbosity levels. Verbosity level number is required. Should not be used with -b or -F"
+       print_lines_basic "1" "" "Supported levels: 0-${VERBOSITY_LEVELS} Example: $SCRIPT_NAME^-v^4"
+       print_lines_basic "2" "0" "Short output, same as: $SCRIPT_NAME"
+       print_lines_basic "2" "1" "Basic verbose, -S + basic CPU + -G + basic Disk + -I."
+       print_lines_basic "2" "2" "Networking card (-N), Machine (-M) data, shows basic hard disk data (names only), and, if present, basic raid (devices only, and if inactive, notes that). similar to: $SCRIPT_NAME^-b"
+       print_lines_basic "2" "3" "Advanced CPU (-C), network (-n) data, and switches on -x advanced data option."
+       print_lines_basic "2" "4" "${partition_string_u} size/filled data (-P) for (if present):/, /home, /var/, /boot. Shows full disk data (-D)."
+       print_lines_basic "2" "5" "Audio card (-A); sensors (-s), ${partition_string} label (-l) and UUID (-u), short form of optical drives, standard raid data (-R)."
+       print_lines_basic "2" "6" "Full ${partition_string} (-p), unmounted ${partition_string} (-o), optical drive (-d), full raid; triggers -xx."
+       print_lines_basic "2" "7" "Network IP data (-i); triggers -xxx."
+       
+       # if distro maintainers don't want the weather feature disable it
+       if [[ $B_ALLOW_WEATHER == 'true' ]];then
+               print_lines_basic "1" "-w" "Local weather data/time. To check an alternate location, see: -W^<location>. For extra weather data options see -x, -xx, and -xxx."
+               print_lines_basic "1" "-W" "<location> Supported options for <location>: postal code; city, state/country; latitude/longitude. Only use if you want the weather somewhere other than the machine running $SCRIPT_NAME. Use only ascii characters, replace spaces in city/state/country names with '+'. Example:^$SCRIPT_NAME^-W^new+york,ny"
+       fi
+       print_lines_basic "1" "-x" "Adds the following extra data (only works with verbose or line output, not short form):"
+       print_lines_basic "2" "-C" "CPU Flags, Bogomips on Cpu;"
+       print_lines_basic "2" "-d" "Extra optical drive data; adds rev version to optical drive."
+       print_lines_basic "2" "-D" "Hdd temp with disk data if you have hddtemp installed, if you are root OR if you have added to /etc/sudoers (sudo v. 1.7 or newer) Example:^<username>^ALL^=^NOPASSWD:^/usr/sbin/hddtemp"
+       print_lines_basic "2" "-G" "Direct rendering status for Graphics (in X)."
+       print_lines_basic "2" "-G" "(for single gpu, nvidia driver) screen number gpu is running on."
+       print_lines_basic "2" "-i" "IPv6 as well for LAN interface (IF) devices."
+       print_lines_basic "2" "-I" "System GCC, default. With -xx, also show other installed GCC versions. If running in console, not in IRC client, shows shell version number, if detected. Init/RC Type and runlevel (if available)."
+       print_lines_basic "2" "-N -A" "Version/port(s)/driver version (if available) for Network/Audio;"
+       print_lines_basic "2" "-N -A -G" "Network, audio, graphics, shows PCI Bus ID/Usb ID number of card."
+       print_lines_basic "2" "-R" "md-raid: Shows component raid id. Adds second RAID Info line: raid level; report on drives (like 5/5); blocks; chunk size; bitmap (if present). Resync line, shows blocks synced/total blocks. zfs-raid: Shows raid array full size; available size; portion allocated to RAID"
+       print_lines_basic "2" "-S" "Desktop toolkit if avaliable (GNOME/XFCE/KDE only); Kernel gcc version"
+       print_lines_basic "2" "-t" "Memory use output to cpu (-xt c), and cpu use to memory (-xt m)."
+       if [[ $B_ALLOW_WEATHER == 'true' ]];then
+               print_lines_basic "2" "-w -W" "Wind speed and time zone (-w only)."
+       fi
+       print_lines_basic "1" "-xx" "Show extra, extra data (only works with verbose or line output, not short form):"
+       print_lines_basic "2" "-A" "Chip vendor:product ID for each audio device."
+       print_lines_basic "2" "-D" "Disk serial number."
+       print_lines_basic "2" "-G" "Chip vendor:product ID for each video card."
+       print_lines_basic "2" "-I" "Other detected installed gcc versions (if present). System default runlevel. Adds parent program (or tty) for shell info if not in IRC (like Konsole or Gterm). Adds Init/RC (if found) version number."
+       print_lines_basic "2" "-M" "Chassis information, bios rom size (dmidecode only), if data for either is available."
+       print_lines_basic "2" "-N" "Chip vendor:product ID for each nic."
+       print_lines_basic "2" "-R" "md-raid: Superblock (if present); algorythm, U data. Adds system info line (kernel support,read ahead, raid events). If present, adds unused device line. Resync line, shows progress bar."
+       print_lines_basic "2" "-S" "Display manager (dm) in desktop output, if in X (like kdm, gdm3, lightdm)."
+       if [[ $B_ALLOW_WEATHER == 'true' ]];then
+               print_lines_basic "2" "-w -W" "Humidity, barometric pressure."
+       fi
+       print_lines_basic "2" "-@ 11-14" "Automatically uploads debugger data tar.gz file to ftp.techpatterns.com. EG: $SCRIPT_NAME^-xx@14"
+       print_lines_basic "1" "-xxx" "Show extra, extra, extra data (only works with verbose or line output, not short form):"
+       print_lines_basic "2" "-S" "Panel/shell information in desktop output, if in X (like gnome-shell, cinnamon, mate-panel)."
+       if [[ $B_ALLOW_WEATHER == 'true' ]];then
+               print_lines_basic "2" "-w -W" "Location (uses -z/irc filter), weather observation time, wind chill, heat index, dew point (shows extra lines for data where relevant)."
+       fi
+       print_lines_basic "1" "-z" "Security filters for IP/Mac addresses, location, user home directory name. Default on for irc clients."
+       print_lines_basic "1" "-Z" "Absolute override for output filters. Useful for debugging networking issues in irc for example."
        print_screen_output " "
        print_screen_output "Additional Options:"
-       print_screen_output "-h --help      This help menu."
-       print_screen_output "-H             This help menu, plus developer options. Do not use dev options in normal operation!"
-       print_screen_output "--recommends   Checks $SCRIPT_NAME application dependencies + recommends, and directories, then shows"
-       print_screen_output "               what package(s) you need to install to add support for that feature."
+       print_lines_basic "4" "-h --help" "This help menu."
+       print_lines_basic "4" "-H" "This help menu, plus developer options. Do not use dev options in normal operation!"
+       print_lines_basic "4" "--recommends" "Checks $SCRIPT_NAME application dependencies + recommends, and directories, then shows what package(s) you need to install to add support for that feature. "
        if [[ $B_ALLOW_UPDATE == 'true' ]];then
-               print_screen_output "-U             Auto-update script. Note: if you installed as root, you"
-               print_screen_output "               must be root to update, otherwise user is fine."
+               print_lines_basic "4" "-U" "Auto-update script. Will also install/update man page. Note: if you installed as root, you must be root to update, otherwise user is fine. Man page installs require root user mode."
        fi
-       print_screen_output "-V --version   $SCRIPT_NAME version information. Prints information then exits."
+       print_lines_basic "4" "-V --version" "$SCRIPT_NAME version information. Prints information then exits."
        print_screen_output " "
        print_screen_output "Debugging Options:"
-       print_screen_output "-%  Overrides defective or corrupted data."
-       print_screen_output "-@  Triggers debugger output. Requires debugging level 1-14 (8-10 - logging of data)."
-       print_screen_output "    Less than 8 just triggers $SCRIPT_NAME debugger output on screen."
-       print_screen_output "    1-7  - On screen debugger output"
-       print_screen_output "    8    - Basic logging"
-       print_screen_output "    9    - Full file/sys info logging"
-       print_screen_output "    10   - Color logging."
-       print_screen_output "    The following create a tar.gz file of system data, plus collecting the inxi output to file:"
-       print_screen_output "    To automatically upload debugger data tar.gz file to ftp.techpatterns.com: inxi -xx@ <11-14>"
-       print_screen_output "    For alternate ftp upload locations: Example: inxi -! ftp.yourserver.com/incoming -xx@ 14"
-       print_screen_output "    11 - With data file of xiin read of /sys."
-       print_screen_output "    12 - With xorg conf and log data, xrandr, xprop, xdpyinfo, glxinfo etc."
-       print_screen_output "    13 - With data from dev, disks, partitions, etc., plus xiin data file."
-       print_screen_output "    14 - Everything, full data collection."
+       print_lines_basic "1" "-%" "Overrides defective or corrupted data."
+       print_lines_basic "1" "-@" "Triggers debugger output. Requires debugging level 1-14 (8-10 - logging of data). Less than 8 just triggers $SCRIPT_NAME debugger output on screen."
+       print_lines_basic "2" "1-7" "On screen debugger output"
+       print_lines_basic "2" "8" "Basic logging"
+       print_lines_basic "2" "9" "Full file/sys info logging"
+       print_lines_basic "2" "10" "Color logging."
+       print_lines_basic "1" "" "The following create a tar.gz file of system data, plus collecting the inxi output to file. To automatically upload debugger data tar.gz file to ftp.techpatterns.com: inxi^-xx@^<11-14>"
+       print_lines_basic "1" "" "For alternate ftp upload locations: Example: inxi^-!^ftp.yourserver.com/incoming^-xx@^14"
+       print_lines_basic "2" "11" "With data file of xiin read of /sys."
+       print_lines_basic "2" "12" "With xorg conf and log data, xrandr, xprop, xdpyinfo, glxinfo etc."
+       print_lines_basic "2" "13" "With data from dev, disks, ${partition_string}s, etc., plus xiin data file."
+       print_lines_basic "2" "14" "Everything, full data collection."
+       print_screen_output " "
+       print_screen_output "Advanced Options:"
+       print_lines_basic "1" "-! 31" "Turns off hostname in output. Useful if showing output from servers etc."
+       print_lines_basic "1" "-! 32" "Turns on hostname in output. Overrides global B_SHOW_HOST='false'"
+       
        if [[ $1 == 'full' ]];then
                print_screen_output " "
                print_screen_output "Developer and Testing Options (Advanced):"
-               print_screen_output "-! 1 - Sets testing flag B_TESTING_1='true' to trigger testing condition 1."
-               print_screen_output "-! 2 - Sets testing flag B_TESTING_2='true' to trigger testing condition 2."
-               print_screen_output "-! 3 - Sets flags B_TESTING_1='true' and B_TESTING_2='true'."
-               print_screen_output "-! 10 - Triggers an update from the primary dev download server instead of svn."
-               print_screen_output "-! 11 - Triggers an update from svn branch one - if present, of course."
-               print_screen_output "-! 12 - Triggers an update from svn branch two - if present, of course."
-               print_screen_output "-! 13 - Triggers an update from svn branch three - if present, of course."
-               print_screen_output "-! 14 - Triggers an update from svn branch four - if present, of course."
-               print_screen_output "-! <http://......> - Triggers an update from whatever server you list."
-               print_screen_output "-! <ftp.......> - Changes debugging data ftp upload location to whatever you enter here."
-               print_screen_output "   Only used together with -xx@ 11-14, and must be used in front of that."
-               print_screen_output "   Example: inxi -! ftp.yourserver.com/incoming -xx@ 14"
-               print_screen_output " "
+               print_lines_basic "1" "-! 1" "Sets testing flag B_TESTING_1='true' to trigger testing condition 1."
+               print_lines_basic "1" "-! 2" "Sets testing flag B_TESTING_2='true' to trigger testing condition 2."
+               print_lines_basic "1" "-! 3" "Sets flags B_TESTING_1='true' and B_TESTING_2='true'."
+               if [[ $B_ALLOW_UPDATE == 'true' ]];then
+                       print_lines_basic "1" "-! 10" "Triggers an update from the primary dev download server instead of svn."
+                       print_lines_basic "1" "-! 11" "Triggers an update from svn branch one - if present, of course."
+                       print_lines_basic "1" "-! 12" "Triggers an update from svn branch two - if present, of course."
+                       print_lines_basic "1" "-! 13" "Triggers an update from svn branch three - if present, of course."
+                       print_lines_basic "1" "-! 14" "Triggers an update from svn branch four - if present, of course."
+                       print_lines_basic "1" "-! 15" "Triggers an update from svn branch BSD - if present, of course."
+                       print_lines_basic "1" "-! 16" "Triggers an update from svn branch GNUBSD - if present, of course."
+                       print_lines_basic "1" "-! <http://......>" "Triggers an update from whatever server you list."
+               fi
+               print_lines_basic "1" "-! <ftp.......>" "Changes debugging data ftp upload location to whatever you enter here. Only used together with -xx@^11-14, and must be used in front of that. "
+               print_lines_basic "1" "" "Example: inxi^-!^ftp.yourserver.com/incoming^-xx@^14"
        fi
        print_screen_output " "
 }
 
+# uses $TERM_COLUMNS to set width using $COLS_MAX as max width
+# IMPORTANT: minimize use of subshells here or the output is too slow
+# args: $1 - 0 1 2 3 4 for indentation level; $2 -line starter, like -m; $3 - content of block.
+print_lines_basic()
+{
+       local line_width=$COLS_MAX
+       local print_string='' indent_inner='' indent_full='' indent_x='' 
+       local indent_working='' indent_working_full=''
+       local line_starter='' line_1_starter='' line_x_starter='' 
+       # note: to create a padded string below
+       local fake_string=' ' temp_count='' line_count='' spacer=''
+       local indent_main=6 indent_x='' b_indent_x='true' 
+       
+       case $1 in
+               # for no options, start at left edge
+               0)      indent_full=0
+                       line_1_starter=''
+                       line_x_starter=''
+                       b_indent_x='false'
+                       ;;
+               1)      indent_full=$indent_main
+                       temp_count=${#2}
+                       if [[ $temp_count -le $indent_full ]];then
+                               indent_working=$indent_full
+                       else
+                               indent_working=$temp_count #$(( $temp_count + 1 ))
+                       fi
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_working\}$/& /;ta" <<< $2 )"
+                       ;;
+               # first left pad 2 and 3, then right pad them
+               2)      indent_full=$(( $indent_main + 6 ))
+                       indent_inner=3
+                       temp_count=${#2}
+                       if [[ $temp_count -le $indent_inner ]];then
+                               indent_working=$indent_inner
+                               #indent_working_full=$indent_full
+                       else
+                               indent_working=$(( $temp_count + 1 ))
+                               #indent_working_full=$(( $indent_full - $indent_inner - 1 ))
+                       fi
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_working\}$/& /;ta" <<< $2 )"
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_full\}$/ &/;ta" <<< "$line_1_starter" )"
+                       ;;
+               3)      indent_full=$(( $indent_main + 8 ))
+                       indent_inner=3
+                       temp_count=${#2}
+                       if [[ $temp_count -le $indent_inner ]];then
+                               indent_working=$indent_inner
+                       else
+                               indent_working=$(( $temp_count + 1 ))
+                       fi
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_working\}$/& /;ta" <<< $2 )"
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_full\}$/ &/;ta" <<< "$line_1_starter" )"
+                       ;;
+               # for long options
+               4)      indent_full=$(( $indent_main + 8 ))
+                       temp_count=${#2}
+                       if [[ $temp_count -lt $indent_full ]];then
+                               indent_working=$indent_full
+                       else
+                               indent_working=$temp_count #$(( $temp_count + 1 ))
+                       fi
+                       line_1_starter="$( sed -e :a -e "s/^.\{1,$indent_working\}$/& /;ta" <<< $2 )"
+                       ;;
+       esac
+       
+       if [[ $b_indent_x == 'true' ]];then
+               indent_x=$(( $indent_full + 1 ))
+               line_x_starter="$(printf "%${indent_x}s" '')"
+       fi
+       
+       line_count=$(( $line_width - $indent_full ))
+       
+       # bash loop is slow, only run this if required
+       if [[ ${#3} -gt $line_count ]];then
+               for word in $3
+               do
+                       temp_string="$print_string$spacer$word"
+                       spacer=' '
+                       if [[ ${#temp_string} -lt $line_count ]];then
+                               print_string=$temp_string # lose any white space start/end
+                               # echo -n $(( $line_width - $indent_full ))
+                       else
+                               if [[ -n $line_1_starter ]];then
+                                       line_starter="$line_1_starter"
+                                       line_1_starter=''
+                               else
+                                       line_starter="$line_x_starter"
+                               fi
+                               # clean up forced connections, ie, stuff we don't want wrapping
+                               print_string=${print_string//\^/ }
+                               print_screen_output "$line_starter$print_string"
+                               print_string="$word$spacer" # needed to handle second word on new line
+                               temp_string=''
+                               spacer=''
+                       fi
+               done
+       else
+               # echo no loop
+               print_string=$3
+       fi
+       # print anything left over
+       if [[ -n $print_string ]];then
+               if [[ -n $line_1_starter ]];then
+                       line_starter="$line_1_starter"
+                       line_1_starter=''
+               else
+                       line_starter="$line_x_starter"
+               fi
+               print_string=${print_string//\^/ }
+               print_screen_output "$line_starter$print_string"
+       fi
+}
+# print_lines_basic '1' '-m' 'let us teest this string and lots more and stuff and more stuff and x is wy and z is x and fred is dead and gus is alive an yes we have to go now'
+# print_lines_basic '2' '7' 'and its substring this string and lots more and stuff and more stuff and x is wy and z is x and fred is dead and gus is alive an yes we have to go now'
+# print_lines_basic '2' '12' 'and its sss substring'
+# print_lines_basic '3' '12' 'and its sss substring this string and lots more and stuff and more stuff and x is wy and z is x and fred is dead and gus is alive an yes we have to go now'
+# exit
+
 ## print out version information for -V/--version
 print_version_info()
 {
-       local last_modified=$( grep -im 1 'date:' $SCRIPT_PATH/$SCRIPT_NAME | gawk '{print $3,$4,$5}' )
-
-       print_screen_output "$SCRIPT_NAME - the universal, portable, system info script for console and irc."
-       print_screen_output "Version: $SCRIPT_VERSION_NUMBER-$SCRIPT_PATCH_NUMBER"
-       print_screen_output "Script Last Modified: $last_modified"
-       print_screen_output "Script Location: $SCRIPT_PATH"
-       print_screen_output " "
-       print_screen_output "Tested in Irssi, Xchat, Konversation, BitchX, KSirc, ircII,"
-       print_screen_output "Gaim/Pidgin, Weechat, KVIrc, Quassel, Kopete, and others."
-       print_screen_output " "
-       print_screen_output "This script is a fork of Infobash 3.02, which is:"
-       print_screen_output "Copyright (C) 2005-2007  Michiel de Boer a.k.a. locsmif"
-       print_screen_output "Subsequent changes and modifications (after Infobash 3.02) are:"
-       print_screen_output "Copyright (C) 2008-$(date +%y) Scott Rogers, Harald Hope, aka trash80 & h2"
-       print_screen_output " "
-       print_screen_output "This program is free software; you can redistribute it and/or modify"
-       print_screen_output "it under the terms of the GNU General Public License as published by"
-       print_screen_output "the Free Software Foundation; either version 3 of the License, or"
-       print_screen_output "(at your option) any later version."
+       # if not in PATH could be either . or directory name, no slash starting
+       local script_path=$SCRIPT_PATH script_symbolic_start=''
+       if [[ $script_path == '.' ]];then
+               script_path=$( pwd )
+       elif [[ -z $( grep '^/' <<< "$script_path" ) ]];then
+               script_path="$( pwd )/$script_path"
+       fi
+       # handle if it's a symbolic link, rare, but can happen with script directories in irc clients
+       # which would only matter if user starts inxi with -! 30 override in irc client
+       if [[ -L $script_path/$SCRIPT_NAME ]];then
+               script_symbolic_start=$script_path/$SCRIPT_NAME
+               script_path=$( readlink $script_path/$SCRIPT_NAME )
+               script_path=$( dirname $script_path )
+       fi
+       local last_modified=$( parse_version_data 'date' ) 
+       local year_modified=$( gawk '{print $NF}' <<< "$last_modified" )
+       
+       print_screen_output "$SCRIPT_NAME $SCRIPT_VERSION_NUMBER-$SCRIPT_PATCH_NUMBER ($last_modified)"
+       if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
+               print_screen_output "Program Location: $script_path"
+               if [[ -n $script_symbolic_start ]];then
+                       print_screen_output "Started via symbolic link: $script_symbolic_start"
+               fi
+               print_lines_basic "0" "" "Website:^http://inxi.goooglecode.com"
+               print_lines_basic "0" "" "IRC:^irc.oftc.net channel:^#smxi"
+               print_lines_basic "0" "" "Forums:^http://techpatterns.com/forums/forum-33.html"
+               print_screen_output " "
+               print_lines_basic "0" "" "$SCRIPT_NAME - the universal, portable, system information tool for console and irc."
+               print_screen_output " "
+               print_lines_basic "0" "" "This program started life as a fork of Infobash 3.02: Copyright (C) 2005-2007  Michiel de Boer a.k.a. locsmif."
+               print_lines_basic "0" "" "Subsequent changes and modifications (after Infobash 3.02): Copyright (C) 2008-$year_modified Scott Rogers, Harald Hope, aka trash80 & h2"
+               print_screen_output " "
+               print_lines_basic "0" "" "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 3 of the License, or (at your option) any later version. (http://www.gnu.org/licenses/gpl.html)"
+       fi
 }
 
 ########################################################################
@@ -2272,257 +2823,41 @@ print_version_info()
 get_start_client()
 {
        eval $LOGFS
-       local irc_client_path='' irc_client_path_lower='' non_native_konvi='' i=''
-       local b_non_native_app='false' pppid='' app_working_name=''
-       local b_qt4_konvi='false'
+       local Irc_Client_Path='' irc_client_path_lower='' non_native_konvi='' i=''
+       local B_Non_Native_App='false' pppid='' App_Working_Name=''
+       local b_qt4_konvi='false' ps_parent=''
 
        if [[ $B_RUNNING_IN_SHELL == 'true' ]];then
                IRC_CLIENT='Shell'
                unset IRC_CLIENT_VERSION
+       # elif [[ -n $PPID ]];then
        elif [[ -n $PPID && -f /proc/$PPID/exe ]];then
                if [[ $B_OVERRIDE_FILTER != 'true' ]];then
                        B_OUTPUT_FILTER='true'
                fi
-               irc_client_path=$( readlink /proc/$PPID/exe )
-               irc_client_path_lower=$( tr '[:upper:]' '[:lower:]' <<< $irc_client_path )
-               app_working_name=$( basename $irc_client_path_lower )
+               Irc_Client_Path=$( readlink /proc/$PPID/exe )
+               # Irc_Client_Path=$( ps -p $PPID | gawk '!/[[:space:]]*PID/ {print $5}'  )
+               # echo $( ps -p $PPID )
+               irc_client_path_lower=$( tr '[:upper:]' '[:lower:]' <<< $Irc_Client_Path )
+               App_Working_Name=$( basename $irc_client_path_lower )
                # handles the xchat/sh/bash/dash cases, and the konversation/perl cases, where clients
                # report themselves as perl or unknown shell. IE:  when konversation starts inxi
                # from inside itself, as a script, the parent is konversation/xchat, not perl/bash etc
                # note: perl can report as: perl5.10.0, so it needs wildcard handling
-               case $app_working_name in
+               case $App_Working_Name in
+                       # bsd will never use this section
                        bash|dash|sh|python*|perl*)     # We want to know who wrapped it into the shell or perl.
-                               pppid="$( ps -p $PPID -o ppid --no-headers | sed 's/ //g' )"
+                               pppid="$( ps -p $PPID -o ppid --no-headers | sed 's/[[:space:]]//g' )"
                                if [[ -n $pppid && -f /proc/$pppid/exe ]];then
-                                       irc_client_path="$( readlink /proc/$pppid/exe )"
-                                       irc_client_path_lower="$( tr '[:upper:]' '[:lower:]' <<< $irc_client_path )"
-                                       app_working_name=$( basename $irc_client_path_lower )
-                                       b_non_native_app='true'
-                               fi
-                               ;;
-               esac
-               # replacing loose detection with tight detection, bugs will be handled with app names
-               # as they appear.
-               case $app_working_name in
-                       # check for shell first
-                       bash|dash|sh)
-                               unset IRC_CLIENT_VERSION
-                               IRC_CLIENT="Shell wrapper"
-                               ;;
-                       # now start on irc clients, alphabetically
-                       bitchx)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk '
-                               /Version/ {
-                                       a=tolower($2)
-                                       gsub(/[()]|bitchx-/,"",a)
-                                       print a
-                                       exit
-                               }
-                               $2 == "version" {
-                                       a=tolower($3)
-                                       sub(/bitchx-/,"",a)
-                                       print a
-                                       exit
-                               }' )"
-                               B_CONSOLE_IRC='true'
-                               IRC_CLIENT="BitchX"
-                               ;;
-                       finch)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               B_CONSOLE_IRC='true'
-                               IRC_CLIENT="Finch"
-                               ;;
-                       gaim)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               IRC_CLIENT="Gaim"
-                               ;;
-                       ircii)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $3
-                               }' )"
-                               B_CONSOLE_IRC='true'
-                               IRC_CLIENT="ircII"
-                               ;;
-                       irssi-text|irssi)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               B_CONSOLE_IRC='true'
-                               IRC_CLIENT="Irssi"
-                               ;;
-                       konversation) ## konvi < 1.2 (qt4)
-                               # this is necessary to avoid the dcop errors from starting inxi as a /cmd started script
-                               if [[ $b_non_native_app == 'true' ]];then  ## true negative is confusing
-                                       KONVI=2
-                               else # if native app
-                                       KONVI=1
-                               fi
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk '
-                               /Konversation:/ {
-                                       for ( i=2; i<=NF; i++ ) {
-                                               if (i == NF) {
-                                                       print $i
-                                               }
-                                               else {
-                                                       printf $i" "
-                                               }
-                                       }
-                                       exit
-                               }' )"
-
-                               T=($IRC_CLIENT_VERSION)
-                               if [[ ${T[0]} == *+* ]];then
-                                       # < Sho_> locsmif: The version numbers of SVN versions look like this:
-                                       #         "<version number of last release>+ #<build number", i.e. "1.0+ #3177" ...
-                                       #         for releases we remove the + and build number, i.e. "1.0" or soon "1.0.1"
-                                       IRC_CLIENT_VERSION=" CVS $IRC_CLIENT_VERSION"
-                                       T2="${T[0]/+/}"
-                               else
-                                       IRC_CLIENT_VERSION=" ${T[0]}"
-                                       T2="${T[0]}"
-                               fi
-                               # Remove any dots except the first, and make sure there are no trailing zeroes,
-                               T2=$( echo "$T2" | gawk '{
-                                       sub(/\./, " ")
-                                       gsub(/\./, "")
-                                       sub(/ /, ".")
-                                       printf("%g\n", $0)
-                               }' )
-                               # Since Konversation 1.0, the DCOP interface has changed a bit: dcop "$DCPORT" Konversation ..etc
-                               # becomes : dcop "$DCPORT" default ... or dcop "$DCPORT" irc ..etc. So we check for versions smaller
-                               # than 1 and change the DCOP parameter/object accordingly.
-                               if [[ ${T2} -lt 1 ]];then
-                                       DCOPOBJ="Konversation"
+                                       Irc_Client_Path="$( readlink /proc/$pppid/exe )"
+                                       irc_client_path_lower="$( tr '[:upper:]' '[:lower:]' <<< $Irc_Client_Path )"
+                                       App_Working_Name=$( basename $irc_client_path_lower )
+                                       B_Non_Native_App='true'
                                fi
-                               IRC_CLIENT="Konversation"
-                               ;;
-                       kopete)
-                               IRC_CLIENT_VERSION=" $( kopete -v | gawk '
-                               /Kopete:/ {
-                                       print $2
-                                       exit
-                               }' )"
-                               IRC_CLIENT="Kopete"
-                               ;;
-                       kvirc)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v 2>&1 | gawk '{
-                                       for ( i=2; i<=NF; i++) {
-                                               if ( i == NF ) {
-                                                       print $i
-                                               }
-                                               else {
-                                                       printf $i" "
-                                               }
-                                       }
-                                       exit
-                                }' )"
-                               IRC_CLIENT="KVIrc"
-                               ;;
-                       pidgin)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               IRC_CLIENT="Pidgin"
-                               ;;
-                       quassel*)
-                               # sample: quassel -v
-                               # Qt: 4.5.0
-                               # KDE: 4.2.65 (KDE 4.2.65 (KDE 4.3 >= 20090226))
-                               # Quassel IRC: v0.4.0 [+60] (git-22effe5)
-                               # note: early < 0.4.1 quassels do not have -v
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v 2>/dev/null | gawk -F ': ' '
-                               BEGIN {
-                                       IGNORECASE=1
-                                       clientVersion=""
-                               }
-                               /Quassel IRC/ {
-                                       clientVersion = $2
-                               }
-                               END {
-                                       # this handles pre 0.4.1 cases with no -v
-                                       if ( clientVersion == "" ) {
-                                               clientVersion = "(pre v0.4.1)"
-                                       }
-                                       print clientVersion
-                               }' )"
-                               # now handle primary, client, and core. quasselcore doesn't actually
-                               # handle scripts with exec, but it's here just to be complete
-                               case $app_working_name in
-                                       quassel)
-                                               IRC_CLIENT="Quassel [M]"
-                                               ;;
-                                       quasselclient)
-                                               IRC_CLIENT="Quassel"
-                                               ;;
-                                       quasselcore)
-                                               IRC_CLIENT="Quassel (core)"
-                                               ;;
-                               esac
-                               ;;
-                       weechat-curses)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v ) "
-                               B_CONSOLE_IRC='true'
-                               IRC_CLIENT="Weechat"
-                               ;;
-                       xchat-gnome)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               IRC_CLIENT="X-Chat-Gnome"
-                               ;;
-                       xchat)
-                               IRC_CLIENT_VERSION=" $( $irc_client_path -v | gawk 'NR == 1 {
-                                       print $2
-                               }' )"
-                               IRC_CLIENT="X-Chat"
-                               ;;
-                       # then do some perl type searches, do this last since it's a wildcard search
-                       perl*|ksirc|dsirc)
-                               unset IRC_CLIENT_VERSION
-                               # KSirc is one of the possibilities now. KSirc is a wrapper around dsirc, a perl client
-                               get_cmdline $PPID
-                               for (( i=0; i <= $CMDL_MAX; i++ ))
-                               do
-                                       case ${A_CMDL[i]} in
-                                               *dsirc*)
-                                               IRC_CLIENT="KSirc"
-                                               # Dynamic runpath detection is too complex with KSirc, because KSirc is started from
-                                               # kdeinit. /proc/<pid of the grandparent of this process>/exe is a link to /usr/bin/kdeinit
-                                               # with one parameter which contains parameters separated by spaces(??), first param being KSirc.
-                                               # Then, KSirc runs dsirc as the perl irc script and wraps around it. When /exec is executed,
-                                               # dsirc is the program that runs inxi, therefore that is the parent process that we see.
-                                               # You can imagine how hosed I am if I try to make inxi find out dynamically with which path
-                                               # KSirc was run by browsing up the process tree in /proc. That alone is straightjacket material.
-                                               # (KSirc sucks anyway ;)
-                                               IRC_CLIENT_VERSION=" $( ksirc -v | gawk '
-                                               /KSirc:/ {
-                                                       print $2
-                                                       exit
-                                               }' )"
-                                               break
-                                               ;;
-                                       esac
-                               done
-                               B_CONSOLE_IRC='true'
-                               set_perl_python_konvi "$app_working_name"
-                               ;;
-                       python*)
-                               # B_CONSOLE_IRC='true' # are there even any python type console irc clients? check.
-                               set_perl_python_konvi "$app_working_name"
-                               ;;
-                       # then unset, set unknown data
-                       *)      
-                               IRC_CLIENT="Unknown : ${irc_client_path##*/}"
-                               unset IRC_CLIENT_VERSION
                                ;;
                esac
-               if [[ $SHOW_IRC -lt 2 ]];then
-                       unset IRC_CLIENT_VERSION
-               fi
+               # sets version number if it can find it
+               get_irc_client_version
        else
                ## lets look to see if qt4_konvi is the parent.  There is no direct way to tell, so lets infer it.
                ## because $PPID does not work with qt4_konvi, the above case does not work
@@ -2546,20 +2881,295 @@ get_start_client()
                                        exit
                                }' )"
                else
-                       IRC_CLIENT="PPID=\"$PPID\" - empty?"
-                       unset IRC_CLIENT_VERSION
+                       # this should handle certain cases where it's ssh or some other startup tool
+                       # that falls through all the other tests
+                       if [[ $BSD_TYPE != 'bsd' ]];then
+                               App_Working_Name=$(ps -p $PPID --no-headers 2>/dev/null | gawk '{print $NF}' )
+                       else
+                               # without --no-headers we need the second line
+                               App_Working_Name=$(ps -p $PPID 2>/dev/null | gawk '/^[0-9]+/ {print $5}' )
+                       fi
+                       
+                       if [[ -n $App_Working_Name ]];then
+                               Irc_Client_Path=$App_Working_Name
+                               B_Non_Native_App='false'
+                               get_irc_client_version
+                               if [[ -z $IRC_CLIENT ]];then
+                                       IRC_CLIENT=$App_Working_Name
+                               fi
+                       else
+                               IRC_CLIENT="PPID=\"$PPID\" - empty?"
+                               unset IRC_CLIENT_VERSION
+                       fi
                fi
        fi
 
        log_function_data "IRC_CLIENT: $IRC_CLIENT :: IRC_CLIENT_VERSION: $IRC_CLIENT_VERSION :: PPID: $PPID"
        eval $LOGFE
 }
-# args: $1 - app_working_name
+# note: all variables set in caller so no need to pass
+get_irc_client_version()
+{
+       local file_data=''
+       # replacing loose detection with tight detection, bugs will be handled with app names
+       # as they appear.
+       case $App_Working_Name in
+               # check for shell first
+               bash|dash|sh)
+                       unset IRC_CLIENT_VERSION
+                       IRC_CLIENT="Shell wrapper"
+                       ;;
+               # now start on irc clients, alphabetically
+               bitchx)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk '
+                       /Version/ {
+                               a=tolower($2)
+                               gsub(/[()]|bitchx-/,"",a)
+                               print a
+                               exit
+                       }
+                       $2 == "version" {
+                               a=tolower($3)
+                               sub(/bitchx-/,"",a)
+                               print a
+                               exit
+                       }' )"
+                       B_CONSOLE_IRC='true'
+                       IRC_CLIENT="BitchX"
+                       ;;
+               finch)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       B_CONSOLE_IRC='true'
+                       IRC_CLIENT="Finch"
+                       ;;
+               gaim)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       IRC_CLIENT="Gaim"
+                       ;;
+               hexchat)
+                       # the hexchat author decided to make --version/-v return a gtk dialogue box, lol...
+                       # so we need to read the actual config file for hexchat. Note that older hexchats
+                       # used xchat config file, so test first for default, then legacy. Because it's possible
+                       # for this file to be use edited, doing some extra checks here.
+                       if [[ -f ~/.config/hexchat/hexchat.conf ]];then
+                               file_data="$( cat ~/.config/hexchat/hexchat.conf )"
+                       elif [[ -f  ~/.config/hexchat/xchat.conf ]];then
+                               file_data="$( cat ~/.config/hexchat/xchat.conf )"
+                       fi
+                       if [[ -n $file_data ]];then
+                               IRC_CLIENT_VERSION=$( gawk '
+                               BEGIN {
+                                       IGNORECASE=1
+                                       FS="="
+                               }
+                               /^[[:space:]]*version/ {
+                                       # get rid of the space if present
+                                       gsub(/[[:space:]]*/, "", $2 )
+                                       print $2
+                                       exit # usually this is the first line, no point in continuing
+                               }' <<< "$file_data" )
+                               
+                               IRC_CLIENT_VERSION=" $IRC_CLIENT_VERSION"
+                       else
+                               IRC_CLIENT_VERSION=' N/A'
+                       fi
+                       IRC_CLIENT="HexChat"
+                       ;;
+               ircii)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $3
+                       }' )"
+                       B_CONSOLE_IRC='true'
+                       IRC_CLIENT="ircII"
+                       ;;
+               irssi-text|irssi)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       B_CONSOLE_IRC='true'
+                       IRC_CLIENT="Irssi"
+                       ;;
+               konversation) ## konvi < 1.2 (qt4)
+                       # this is necessary to avoid the dcop errors from starting inxi as a /cmd started script
+                       if [[ $B_Non_Native_App == 'true' ]];then  ## true negative is confusing
+                               KONVI=2
+                       else # if native app
+                               KONVI=1
+                       fi
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk '
+                       /Konversation:/ {
+                               for ( i=2; i<=NF; i++ ) {
+                                       if (i == NF) {
+                                               print $i
+                                       }
+                                       else {
+                                               printf $i" "
+                                       }
+                               }
+                               exit
+                       }' )"
+
+                       T=($IRC_CLIENT_VERSION)
+                       if [[ ${T[0]} == *+* ]];then
+                               # < Sho_> locsmif: The version numbers of SVN versions look like this:
+                               #         "<version number of last release>+ #<build number", i.e. "1.0+ #3177" ...
+                               #         for releases we remove the + and build number, i.e. "1.0" or soon "1.0.1"
+                               IRC_CLIENT_VERSION=" CVS $IRC_CLIENT_VERSION"
+                               T2="${T[0]/+/}"
+                       else
+                               IRC_CLIENT_VERSION=" ${T[0]}"
+                               T2="${T[0]}"
+                       fi
+                       # Remove any dots except the first, and make sure there are no trailing zeroes,
+                       T2=$( echo "$T2" | gawk '{
+                               sub(/\./, " ")
+                               gsub(/\./, "")
+                               sub(/ /, ".")
+                               printf("%g\n", $0)
+                       }' )
+                       # Since Konversation 1.0, the DCOP interface has changed a bit: dcop "$DCPORT" Konversation ..etc
+                       # becomes : dcop "$DCPORT" default ... or dcop "$DCPORT" irc ..etc. So we check for versions smaller
+                       # than 1 and change the DCOP parameter/object accordingly.
+                       if [[ ${T2} -lt 1 ]];then
+                               DCOPOBJ="Konversation"
+                       fi
+                       IRC_CLIENT="Konversation"
+                       ;;
+               kopete)
+                       IRC_CLIENT_VERSION=" $( kopete -v | gawk '
+                       /Kopete:/ {
+                               print $2
+                               exit
+                       }' )"
+                       IRC_CLIENT="Kopete"
+                       ;;
+               kvirc)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v 2>&1 | gawk '{
+                               for ( i=2; i<=NF; i++) {
+                                       if ( i == NF ) {
+                                               print $i
+                                       }
+                                       else {
+                                               printf $i" "
+                                       }
+                               }
+                               exit
+                               }' )"
+                       IRC_CLIENT="KVIrc"
+                       ;;
+               pidgin)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       IRC_CLIENT="Pidgin"
+                       ;;
+               quassel*)
+                       # sample: quassel -v
+                       # Qt: 4.5.0
+                       # KDE: 4.2.65 (KDE 4.2.65 (KDE 4.3 >= 20090226))
+                       # Quassel IRC: v0.4.0 [+60] (git-22effe5)
+                       # note: early < 0.4.1 quassels do not have -v
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v 2>/dev/null | gawk -F ': ' '
+                       BEGIN {
+                               IGNORECASE=1
+                               clientVersion=""
+                       }
+                       /Quassel IRC/ {
+                               clientVersion = $2
+                       }
+                       END {
+                               # this handles pre 0.4.1 cases with no -v
+                               if ( clientVersion == "" ) {
+                                       clientVersion = "(pre v0.4.1)"
+                               }
+                               print clientVersion
+                       }' )"
+                       # now handle primary, client, and core. quasselcore doesn't actually
+                       # handle scripts with exec, but it's here just to be complete
+                       case $App_Working_Name in
+                               quassel)
+                                       IRC_CLIENT="Quassel [M]"
+                                       ;;
+                               quasselclient)
+                                       IRC_CLIENT="Quassel"
+                                       ;;
+                               quasselcore)
+                                       IRC_CLIENT="Quassel (core)"
+                                       ;;
+                       esac
+                       ;;
+               weechat-curses)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v ) "
+                       B_CONSOLE_IRC='true'
+                       IRC_CLIENT="Weechat"
+                       ;;
+               xchat-gnome)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       IRC_CLIENT="X-Chat-Gnome"
+                       ;;
+               xchat)
+                       IRC_CLIENT_VERSION=" $( $Irc_Client_Path -v | gawk 'NR == 1 {
+                               print $2
+                       }' )"
+                       IRC_CLIENT="X-Chat"
+                       ;;
+               # then do some perl type searches, do this last since it's a wildcard search
+               perl*|ksirc|dsirc)
+                       unset IRC_CLIENT_VERSION
+                       # KSirc is one of the possibilities now. KSirc is a wrapper around dsirc, a perl client
+                       get_cmdline $PPID
+                       for (( i=0; i <= $CMDL_MAX; i++ ))
+                       do
+                               case ${A_CMDL[i]} in
+                                       *dsirc*)
+                                       IRC_CLIENT="KSirc"
+                                       # Dynamic runpath detection is too complex with KSirc, because KSirc is started from
+                                       # kdeinit. /proc/<pid of the grandparent of this process>/exe is a link to /usr/bin/kdeinit
+                                       # with one parameter which contains parameters separated by spaces(??), first param being KSirc.
+                                       # Then, KSirc runs dsirc as the perl irc script and wraps around it. When /exec is executed,
+                                       # dsirc is the program that runs inxi, therefore that is the parent process that we see.
+                                       # You can imagine how hosed I am if I try to make inxi find out dynamically with which path
+                                       # KSirc was run by browsing up the process tree in /proc. That alone is straightjacket material.
+                                       # (KSirc sucks anyway ;)
+                                       IRC_CLIENT_VERSION=" $( ksirc -v | gawk '
+                                       /KSirc:/ {
+                                               print $2
+                                               exit
+                                       }' )"
+                                       break
+                                       ;;
+                               esac
+                       done
+                       B_CONSOLE_IRC='true'
+                       set_perl_python_konvi "$App_Working_Name"
+                       ;;
+               python*)
+                       # B_CONSOLE_IRC='true' # are there even any python type console irc clients? check.
+                       set_perl_python_konvi "$App_Working_Name"
+                       ;;
+               # then unset, set unknown data
+               *)      
+                       IRC_CLIENT="Unknown : ${Irc_Client_Path##*/}"
+                       unset IRC_CLIENT_VERSION
+                       ;;
+       esac
+       if [[ $SHOW_IRC -lt 2 ]];then
+               unset IRC_CLIENT_VERSION
+       fi
+}
+
+# args: $1 - App_Working_Name
 set_perl_python_konvi()
 {
        if [[ -z $IRC_CLIENT_VERSION ]];then
                # this is a hack to try to show konversation if inxi is running but started via /cmd
-               if [[ -n $( ps aux | grep -i 'konversation' | grep -v 'grep' ) && $B_RUNNING_IN_X == 'true' ]];then
+               if [[ -n $( grep -i 'konversation' <<< "$Ps_aux_Data" | grep -v 'grep' ) && $B_RUNNING_IN_DISPLAY == 'true' ]];then
                        IRC_CLIENT='Konversation'
                        IRC_CLIENT_VERSION=" $( konversation --version 2>/dev/null | gawk '/^Konversation/ {print $2}' )"
                        B_CONSOLE_IRC='false'
@@ -2581,10 +3191,9 @@ is_this_qt4_konvi()
        if [[ $B_QDBUS == 'true' ]];then
                konvi_dbus_exist=$( qdbus 2>/dev/null | grep "org.kde.konversation" )
        fi
-        
-       if [[ -n $konvi_dbus_exist && -e /usr/share/kde4/apps/konversation ]]; then
-               konvi_pid=$( ps -A | grep -i 'konversation' )
-               konvi_pid=$( echo $konvi_pid | gawk '{ print $1 }' ) 
+       # sabayon uses /usr/share/apps/konversation as path
+       if [[ -n $konvi_dbus_exist ]] && [[ -e /usr/share/kde4/apps/konversation || -e  /usr/share/apps/konversation ]]; then
+               konvi_pid=$( ps -A | gawk 'BEGIN{IGNORECASE=1} /konversation/ { print $1 }' ) 
                konvi_home_dir=$( readlink /proc/$konvi_pid/exe )
                konvi=$( echo $konvi_home_dir | sed "s/\// /g" )
                konvi=($konvi)
@@ -2647,13 +3256,13 @@ get_cmdline()
 get_audio_data()
 {
        eval $LOGFS
-       local i='' alsa_data='' alsa_driver='' device_count='' temp_array=''
+       local i='' alsa_data='' audio_driver='' device_count='' temp_array=''
 
        IFS=$'\n'
        # this first step handles the drivers for cases where the second step fails to find one
-       device_count=$( echo "$Lspci_Data" | grep -iEc '(multimedia audio controller|audio device)' )
+       device_count=$( echo "$Lspci_v_Data" | grep -iEc '(multimedia audio controller|audio device)' )
        if [[ $device_count -eq 1 ]] && [[ $B_ASOUND_DEVICE_FILE == 'true' ]];then
-               alsa_driver=$( gawk -F ']: ' '
+               audio_driver=$( gawk -F ']: ' '
                BEGIN {
                        IGNORECASE=1
                }
@@ -2671,10 +3280,10 @@ get_audio_data()
 
        # this is to safeguard against line breaks from results > 1, which if inserted into following
        # array will create a false array entry. This is a hack, not a permanent solution.
-       alsa_driver=$( echo $alsa_driver )
+       audio_driver=$( echo $audio_driver )
        # now we'll build the main audio data, card name, driver, and port. If no driver is found,
        # and if the first method above is not null, and one card is found, it will use that instead.
-       A_AUDIO_DATA=( $( echo "$Lspci_Data" | gawk -F ': ' -v alsaDriver="$alsa_driver" '
+       A_AUDIO_DATA=( $( echo "$Lspci_v_Data" | gawk -F ': ' -v audioDriver="$audio_driver" '
        BEGIN {
                IGNORECASE=1
        }
@@ -2725,8 +3334,8 @@ get_audio_data()
                                if (drivers[i] != "") {
                                        useDrivers=drivers[i]
                                }
-                               else if ( alsaDriver != "" ) {
-                                       useDrivers=alsaDriver
+                               else if ( audioDriver != "" ) {
+                                       useDrivers=audioDriver
                                }
                        }
                        if (ports[i] != "") {
@@ -2809,8 +3418,9 @@ get_audio_usb_data()
                                                        string = string separator $i
                                                        separator = " "
                                                }
-                                               if ( $6 != "" ){
-                                                       print string ",USB Audio,,," $6
+                                               if ( $2 != "" ){
+                                                       sub(/:/,"", $4)
+                                                       print string ",USB Audio,,," $2 "-" $4 "," $6
                                                }
                                        }' <<< "$usb_data" )
                                fi
@@ -2859,8 +3469,7 @@ get_audio_alsa_data()
                                }
                                version=$NF
                                print alsa "," version
-                       }' $FILE_ASOUND_VERSION 
-               ) )
+                       }' $FILE_ASOUND_VERSION ) )
                IFS="$ORIGINAL_IFS"
                log_function_data 'cat' "$FILE_ASOUND_VERSION"
        fi
@@ -2869,81 +3478,115 @@ get_audio_alsa_data()
        eval $LOGFE
 }
 
-get_console_irc_tty()
-{
-       eval $LOGFS
-       local tty_number=''
-       if [[ -n ${IRC_CLIENT} ]];then
-               tty_number=$( ps aux | gawk '
-                       BEGIN {
-                               IGNORECASE=1
-                       }
-                       /'${IRC_CLIENT}'/ {
-                               gsub(/[^0-9]/, "", $7)
-                               print $7
-                       }' )
-       fi
-       log_function_data "tty_number: $tty_number"
-       echo $tty_number
-       eval $LOGFE
-}
-
 ## create A_CPU_CORE_DATA, currently with two values: integer core count; core string text
 ## return value cpu core count string, this helps resolve the multi redundant lines of old style output
 get_cpu_core_count()
 {
        eval $LOGFS
+       local cpu_physical_count='' cpu_core_count='' cpu_type='' cpu_alpha_count=''
        if [[ $B_CPUINFO_FILE == 'true' ]]; then
                # load the A_CPU_TYPE_PCNT_CCNT core data array
                get_cpu_ht_multicore_smp_data
                ## Because of the upcoming release of cpus with core counts over 6, a count of cores is given after Deca (10)
                # count the number of processors given
-               local cpu_physical_count=${A_CPU_TYPE_PCNT_CCNT[1]}
-               local cpu_core_count=${A_CPU_TYPE_PCNT_CCNT[2]}
-               local cpu_type=${A_CPU_TYPE_PCNT_CCNT[0]}
+               cpu_physical_count=${A_CPU_TYPE_PCNT_CCNT[1]}
+               cpu_core_count=${A_CPU_TYPE_PCNT_CCNT[2]}
+               cpu_type=${A_CPU_TYPE_PCNT_CCNT[0]}
 
                # match the numberic value to an alpha value
-               case $cpu_core_count in
-                       1) cpu_alpha_count='Single';;
-                       2) cpu_alpha_count='Dual';;
-                       3) cpu_alpha_count='Triple';;
-                       4) cpu_alpha_count='Quad';;
-                       5) cpu_alpha_count='Penta';;
-                       6) cpu_alpha_count='Hexa';;
-                       7) cpu_alpha_count='Hepta';;
-                       8) cpu_alpha_count='Octa';;
-                       9) cpu_alpha_count='Ennea';;
-                       10) cpu_alpha_count='Deca';;
-                       *) cpu_alpha_count='Multi';;
-               esac
+               cpu_alpha_count=$( get_cpu_core_count_alpha "$cpu_core_count" )
+               
                # create array, core count integer; core count string
                # A_CPU_CORE_DATA=( "$cpu_core_count" "$cpu_alpha_count Core$cpu_type" )
                A_CPU_CORE_DATA=( "$cpu_physical_count" "$cpu_alpha_count" "$cpu_type" "$cpu_core_count" )
+       elif [[ -n $BSD_TYPE ]];then
+               local gawk_fs=': '
+       
+               if [[ $BSD_VERSION == 'openbsd' ]];then
+                       gawk_fs='='
+               fi
+               cpu_core_count=$( gawk -F "$gawk_fs" '
+               # note: on openbsd can also be hw.ncpufound so exit after first
+               /^hw.ncpu/ {
+                       print $NF
+                       exit
+               }' <<< "$Sysctl_a_Data" )
+               if [[ -n $( grep -E '^[0-9]+$' <<< "$cpu_core_count" ) ]];then
+                       cpu_alpha_count=$( get_cpu_core_count_alpha "$cpu_core_count" )
+                       if [[ $cpu_core_count -gt 1 ]];then
+                               cpu_type='SMP'
+                       fi
+               fi
+               cpu_physical_count=1
+               A_CPU_CORE_DATA=( "$cpu_physical_count" "$cpu_alpha_count" "$cpu_type" "$cpu_core_count" )
        fi
        temp_array=${A_CPU_CORE_DATA[@]}
        log_function_data "A_CPU_CORE_DATA: $temp_array"
        eval $LOGFE
 }
 
+# args: $1 - integer core count
+get_cpu_core_count_alpha()
+{
+       eval $LOGFS
+       local cpu_alpha_count=''
+       
+       case $1 in
+               1) cpu_alpha_count='Single';;
+               2) cpu_alpha_count='Dual';;
+               3) cpu_alpha_count='Triple';;
+               4) cpu_alpha_count='Quad';;
+               5) cpu_alpha_count='Penta';;
+               6) cpu_alpha_count='Hexa';;
+               7) cpu_alpha_count='Hepta';;
+               8) cpu_alpha_count='Octa';;
+               9) cpu_alpha_count='Ennea';;
+               10) cpu_alpha_count='Deca';;
+               *) cpu_alpha_count='Multi';;
+       esac
+       
+       echo $cpu_alpha_count
+       
+       eval $LOGFE
+}
+
 ## main cpu data collector
 get_cpu_data()
 {
        eval $LOGFS
        local i='' j='' cpu_array_nu='' a_cpu_working='' multi_cpu='' bits='' temp_array=''
+       local bsd_cpu_flags=''
 
        if [[ $B_CPUINFO_FILE == 'true' ]];then
                # stop script for a bit to let cpu slow down before parsing cpu /proc file
                sleep $CPU_SLEEP
                IFS=$'\n'
-               A_CPU_DATA=( $( gawk -F': ' '
+               A_CPU_DATA=( $( 
+               gawk -F': ' '
                BEGIN {
                        IGNORECASE=1
+                       # need to prime nr for arm cpus, which do not have processor number output in some cases
+                       nr = 0
+                       count = 0
+                       bArm = "false"
                }
                # TAKE STRONGER NOTE: \t+ does NOT always work, MUST be [ \t]+
                # TAKE NOTE: \t+ will work for $FILE_CPUINFO, but SOME ARBITRARY FILE used for TESTING might contain SPACES!
                # Therefore PATCH to use [ \t]+ when TESTING!
                /^processor[ \t]+:/ {
-                       nr = $NF
+                       gsub(/,/, " ", $NF)
+                       gsub(/^ +| +$/, "", $NF)
+                       if ( $NF ~ "^[0-9]+$" ) {
+                               nr = $NF
+                       }
+                       else {
+                               if ( $NF ~ "^ARM" ) {
+                                       bArm = "true"
+                               }
+                               count += 1
+                               nr = count - 1
+                               cpu[nr, "model"] = $NF
+                       }
                }
 
                /^model name|^cpu\t+:/ {
@@ -2953,6 +3596,9 @@ get_cpu_data()
                        gsub(/^ +| +$/, "", $NF)
                        gsub(/ [ \t]+/, " ", $NF)
                        cpu[nr, "model"] = $NF
+                       if ( $NF ~ "^ARM" ) {
+                               bArm = "true"
+                       }
                }
 
                /^cpu MHz|^clock\t+:/ {
@@ -2977,8 +3623,12 @@ get_cpu_data()
                        cpu[nr, "cache"] = $NF
                }
 
-               /^flags/ {
+               /^flags|^features/ {
                        cpu[nr, "flags"] = $NF
+                       # not all ARM cpus show ARM in model name
+                       if ( $1 ~ /^features/ ) {
+                               bArm = "true"
+                       }
                }
 
                /^bogomips/ {
@@ -2993,36 +3643,130 @@ get_cpu_data()
                END {
                        #if (!nr) { print ",,,"; exit } # <- should this be necessary or should bash handle that
                        for ( i = 0; i <= nr; i++ ) {
-                               print cpu[i, "model"] "," cpu[i, "speed"] "," cpu[i, "cache"] "," cpu[i, "flags"] "," cpu[i, "bogomips"] ","  cpu[nr, "vendor"]
+                               # note: assuming bogomips for arm at 1 x clock
+                               # http://en.wikipedia.org/wiki/BogoMips ARM could change so watch this
+                               # maybe add:  && bArm == "true" but I think most of the bogomips roughly equal cpu speed if not amd/intel
+                               if ( cpu[i, "bogomips"] != "" && cpu[i, "speed"] == "" ) {
+                                       cpu[i, "speed"] = cpu[i, "bogomips"]
+                               }
+                               print cpu[i, "model"] "," cpu[i, "speed"] "," cpu[i, "cache"] "," cpu[i, "flags"] "," cpu[i, "bogomips"] ","  cpu[nr, "vendor"] "," bArm
                        }
+                       # this is / was used in inxi short output only, but when it is N/A, need to use the previous array
+                       # value, from above, the actual speed that is, for short output, key 0.
                        if (!min) {
-                               print "not found"
+                               print "N/A"
                                exit
                        }
-                       if (min != max) {
-                               printf("Min:%s%s Max:%s%s\n", min, "Mhz", max, "Mhz")
-                       }
                        else {
-                               printf("%s %s\n", max, "Mhz")
+                               if (min != max) {
+                                       printf("Min:%s%s Max:%s%s\n", min, "Mhz", max, "Mhz")
+                               }
+                               else {
+                                       printf("%s %s\n", max, "Mhz")
+                               }
                        }
-               }' $FILE_CPUINFO ) )
+               }
+               ' $FILE_CPUINFO ) )
+               IFS="$ORIGINAL_IFS"
                log_function_data 'cat' "$FILE_CPUINFO"
+       elif [[ -n $BSD_TYPE ]];then
+               get_cpu_data_bsd
        fi
-       IFS="$ORIGINAL_IFS"
+       
        temp_array=${A_CPU_DATA[@]}
        log_function_data "A_CPU_DATA: $temp_array"
-       
+#      echo ta: ${temp_array[@]}
        eval $LOGFE
 #      echo getMainCpu: ${[@]}
 }
 
+get_cpu_data_bsd()
+{
+       eval $LOGFS
+
+       local bsd_cpu_flags=$( get_cpu_flags_bsd )
+       local gawk_fs=': '
+       
+       if [[ $BSD_VERSION == 'openbsd' ]];then
+               gawk_fs='='
+       fi
+               
+       IFS=$'\n'
+       A_CPU_DATA=( $( 
+       gawk -F "$gawk_fs" -v cpuFlags="$bsd_cpu_flags" '
+       BEGIN {
+               IGNORECASE=1
+               cpuModel=""
+               cpuClock=""
+               cpuCache=""
+               cpuBogomips=""
+               cpuVendor=""
+       }
+       /^hw.model/ {
+               gsub(/'"$BAN_LIST_NORMAL"'/, "", $NF )
+               gsub(/'"$BAN_LIST_CPU"'/, "", $NF )
+               sub(//,"",$NF)
+               sub(/[a-z]+-core/, "", $NF )
+               gsub(/^ +| +$|\"/, "", $NF)
+               gsub(/ [ \t]+/, " ", $NF)
+               cpuModel=$NF
+               if ( cpuClock != "" ) {
+                       exit
+               }
+       }
+       /^hw.(clock|cpuspeed)/ {
+               cpuClock=$NF
+               if ( cpuModel != "" ) {
+                       exit
+               }
+       }
+       END {
+               print cpuModel "," cpuClock "," cpuCache "," cpuFlags "," cpuBogomips ","  cpuVendor
+               print "N/A"
+       }' <<< "$Sysctl_a_Data" ) )
+       IFS="$ORIGINAL_IFS"
+       
+       eval $LOGFE
+}
+
+get_cpu_flags_bsd()
+{
+       eval $LOGFS
+       
+       local cpu_flags=$( gawk -F '=' '
+       BEGIN {
+               IGNORECASE=1
+               cpuFlags=""
+       }
+       /^CPU:/ {
+               while ( getline && !/memory/  ) {
+                       if ( $1 ~ /Features/ ) {
+                               # clean up odd stuff like <b23>
+                               gsub(/<[a-z0-9]+>/,"", $2)
+                               # all the flags are contained within < ... > on freebsd at least
+                               gsub(/.*<|>.*/,"", $2)
+                               gsub(/,/," ", $2)
+                               cpuFlags = cpuFlags " " $2
+                       }
+               }
+               cpuFlags=tolower(cpuFlags)
+               print cpuFlags
+               exit
+       }' <<< "$Dmesg_Boot_Data" )
+       
+       echo $cpu_flags
+       log_function_data "$cpu_flags"
+       eval $LOGFE
+}
+
 ## this is for counting processors and finding HT types
 get_cpu_ht_multicore_smp_data()
 {
        eval $LOGFS
        # in /proc/cpuinfo
        local temp_array=''
-
+       
+       # note: known bug with xeon intel, they show a_core_id/physical_id as 0 for ht 4 core
        if [[ $B_CPUINFO_FILE == 'true' ]]; then
                A_CPU_TYPE_PCNT_CCNT=( $(
                gawk '
@@ -3031,30 +3775,74 @@ get_cpu_ht_multicore_smp_data()
                        IGNORECASE = 1
                        num_of_cores = 0
                        num_of_processors = 0
-                       num_of_cpus = 0
+                       num_of_physical_cpus = 0
                        cpu_core_count = 0
-                       core_id[0]
-                       processor_id[0]
-                       cpu_id[0]
-                       type = "-"
-                       iter = 0
+                       siblings = 0
+                       # these 3 arrays cannot be declared because that sets the first element
+                       # but leaving this here so that we avoid doing that in the future
+                       # a_core_id = ""
+                       # a_processor_id = ""
+                       # a_physical_id = ""
+                       cpu_type = "-"
+                       # note: we need separate iterators because some cpuinfo data has only
+                       # processor, no core id or phys id
+                       proc_iter = 0
+                       core_iter = "" # set from actual NF data
+                       phys_iter = "" # set from actual NF data
+                       # needed to handle arm cpu, no processor number cases
+                       arm_count = 0
+                       nr = 0
+                       bArm = "false"
+                       bXeon = "false"
+               }
+               # hack to handle xeons which can have buggy /proc/cpuinfo files
+               /^model name/ && ( $0 ~ /Xeon/ ) {
+                       bXeon = "true"
+               }
+               # only do this once since sibling count does not change. 
+               /^siblings/ && ( bXeon == "true" ) && ( siblings == 0 ) {
+                       gsub(/[^0-9]/,"",$NF)
+                       if ( $NF != "" ) {
+                               siblings = $NF
+                       }
                }
                # array of logical processors, both HT and physical
+               
                /^processor/ {
-                       processor_id[iter] = $NF
+                       gsub(/,/, " ", $NF)
+                       gsub(/^ +| +$/, "", $NF)
+                       if ( $NF ~ "^[0-9]+$" ) {
+                               a_processor_id[proc_iter] = $NF
+                               proc_iter++
+                       }
+                       else {
+                               # note, for dual core, this can be off by one because the first
+                               # line says: Processor : Arm.. but subsequent say: processor : 0 and so on as usual
+                               if ( $NF ~ "^ARM" ) {
+                                       bArm = "true"
+                               }
+                               arm_count += 1
+                               nr = arm_count - 1
+                               # note: do not iterate because new ARM syntax puts cpu in processsor : 0 syntax
+                               a_processor_id[proc_iter] = nr
+                       }
                }
-               # array of physical cpus ids
+               
+               # array of physical cpu ids, note, this will be unset for vm cpus in many cases
+               # because they have no physical cpu, so we cannot assume this will be here.
                /^physical/ {
-                       cpu_id[iter] = $NF
+                       phys_iter = $NF
+                       a_physical_id[phys_iter] = $NF
                }
-               # array of core ids
+               # array of core ids, again, here we may have HT, so we need to create an array of the
+               # actual core ids. As With physical, we cannot assume this will be here in a vm
                /^core id/ {
-                       core_id[iter] = $NF
-                       iter++
+                       core_iter = $NF
+                       a_core_id[core_iter] = $NF
                }
                # this will be used to fix an intel glitch if needed, cause, intel
-               # sometimes reports core id as the same number for each core, 0
-               # so if cpu cores shows greater value than number of cores, use this
+               # sometimes reports core id as the same number for each core, 
+               # so if cpu cores shows greater value than number of cores, use this
                /^cpu cores/ {
                        cpu_core_count = $NF
                }
@@ -3063,72 +3851,76 @@ get_cpu_ht_multicore_smp_data()
                        ##      only unique numbers required
                        ##      this is to get an accurate count
                        ##      we are only concerned with array length
-                       
                        i = 0
                        ## count unique processors ##
                        # note, this fails for intel cpus at times
-                       for ( i in processor_id ) {
-                               procHolder[processor_id[i]] = 1
-                       }
-                       for ( i in procHolder ) {
+                       for ( i in a_processor_id ) {
                                num_of_processors++
                        }
-                       
                        i = 0
                        ## count unique physical cpus ##
-                       for ( i in cpu_id ) {
-                               cpuHolder[cpu_id[i]] = 1
-                       }
-                       for ( i in cpuHolder ) {                                
-                               num_of_cpus++
+                       for ( i in a_physical_id ) {
+                               num_of_physical_cpus++
                        }
                        
-                       i = 0           
+                       i = 0
                        ## count unique cores ##
-                       for ( i in core_id ) {
-                               coreHolder[core_id[i]] = 1
-                       }
-                       for ( i in coreHolder ) {                               
+                       for ( i in a_core_id ) {
                                num_of_cores++
                        }
+                       # xeon may show wrong core / physical id count, if it does, fix it. A xeon
+                       # may show a repeated core id : 0 which gives a fake num_of_cores=1
+                       if ( bXeon == "true" && num_of_cores == 1 && siblings > 1 ) {
+                               num_of_cores = siblings/2
+                       }
                        # final check, override the num of cores value if it clearly is wrong
                        # and use the raw core count and synthesize the total instead of real count
-                       if ( ( num_of_cores == 1 ) && ( cpu_core_count * num_of_cpus > 1 ) ) {
-                               num_of_cores = cpu_core_count * num_of_cpus
+                       if ( ( num_of_cores == 0 ) && ( cpu_core_count * num_of_physical_cpus > 1 ) ) {
+                               num_of_cores = cpu_core_count * num_of_physical_cpus
                        }
-                       
+                       # last check, seeing some intel cpus and vms with intel cpus that do not show any
+                       # core id data at all, or siblings.
+                       if ( num_of_cores == 0 && num_of_processors > 0 ) {
+                               num_of_cores = num_of_processors
+                       }
+                       # ARM/vm cpu fix, if no physical or core found, use count of 1 instead
+                       if ( num_of_physical_cpus == 0 ) {
+                               num_of_physical_cpus = 1
+                       }
+#                      print "NoCpu: " num_of_physical_cpus
+#                      print "NoCores: " num_of_cores
+#                      print "NoProc:" num_of_processors
+#                      print "CpuCoreCount:" cpu_core_count
                        ####################################################################
                        #                               algorithm
                        # if > 1 processor && processor id (physical id) == core id then Hyperthreaded (HT)
                        # if > 1 processor && processor id (physical id) != core id then Multi-Core Processors (MCP)
                        # if > 1 processor && processor ids (physical id) > 1 then Multiple Processors (SMP)
                        # if = 1 processor then single core/processor Uni-Processor (UP)
-                       if ( num_of_processors > 1 )
-                       {
+                       if ( num_of_processors > 1 || ( bXeon == "true" && siblings > 0 ) ) {
                                # non-multicore HT
-                               if ( num_of_processors == (num_of_cores * 2))
-                               {
-                                       type = type "HT-"
+                               if ( num_of_processors == (num_of_cores * 2) ) {
+                                       cpu_type = cpu_type "HT-"
+                               }
+                               else if ( bXeon == "true" && siblings > 1 ) {
+                                       cpu_type = cpu_type "HT-"
                                }
                                # non-HT multi-core or HT multi-core
-                               if (( num_of_processors == num_of_cores) ||
-                                       ( num_of_cpus < num_of_cores))
-                               {
-                                       type = type "MCP-"
+                               if (( num_of_processors == num_of_cores) || ( num_of_physical_cpus < num_of_cores)) {
+                                       cpu_type = cpu_type "MCP-"
                                }
                                # >1 cpu sockets active
-                               if ( num_of_cpus > 1 )
-                               {
-                                       type = type "SMP-"
+                               if ( num_of_physical_cpus > 1 ) {
+                                       cpu_type = cpu_type "SMP-"
                                }
-                       } else {
-                               type = type "UP-"
+                       } 
+                       else {
+                               cpu_type = cpu_type "UP-"
                        }                       
                        
-                       print type " " num_of_cpus " " num_of_cores
+                       print cpu_type " " num_of_physical_cpus " " num_of_cores 
                }
-               ' $FILE_CPUINFO 
-               ) )
+               ' $FILE_CPUINFO ) )
        fi
        temp_array=${A_CPU_TYPE_PCNT_CCNT[@]}
        log_function_data "A_CPU_TYPE_PCNT_CCNT: $temp_array"
@@ -3137,48 +3929,24 @@ get_cpu_ht_multicore_smp_data()
 
 # Detect desktop environment in use, initial rough logic from: compiz-check
 # http://forlong.blogage.de/entries/pages/Compiz-Check
+# NOTE $XDG_CURRENT_DESKTOP envvar is not reliable, but it shows certain desktops better.
+# most desktops are not using it as of 2014-01-13 (KDE, UNITY, LXDE. Not Gnome)
 get_desktop_environment()
 {
        eval $LOGFS
        
        # set the default, this function only runs in X, if null, don't print data out
-       local desktop_environment='' xprop_root='' ps_aux='' 
+       local desktop_environment='' xprop_root=''
        local version='' version_data='' toolkit=''
-       
-       # note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out
-       # https://bugzilla.gnome.org/show_bug.cgi?id=542880
-       if [[ -n $GNOME_DESKTOP_SESSION_ID ]]; then
-               version=$( get_de_app_version 'gnome-about' 'gnome' '3' )
-               if [[ $B_EXTRA_DATA == 'true' ]];then
-                       # this is a hack, and has to be changed with every toolkit version change
-                       toolkit=$( pkg-config --modversion gtk+-3.0 2>/dev/null )
-                       if [[ -z $toolkit ]];then
-                               toolkit=$( pkg-config --modversion gtk+-2.0 2>/dev/null )
-                       fi
-                       if [[ -n $toolkit ]];then
-                               version="$version (Gtk $toolkit)"
-                       fi
-               fi
-               desktop_environment="Gnome"
-       # assume 5 will id the same, why not, no need to update in future
-       elif [[ $KDE_SESSION_VERSION == '5' ]]; then
-               version_data=$( kded5 --version 2>/dev/null )
-               version=$( grep -si '^KDE Development Platform:' <<< "$version_data" | gawk '{print $4}' )
-               if [[ -z $version ]];then
-                       version='5'
-               fi
-               if [[ $B_EXTRA_DATA == 'true' ]];then
-                       toolkit=$( grep -si '^Qt:' <<< "$version_data" | gawk '{print $2}' )
-                       if [[ -n $toolkit ]];then
-                               version="$version (Qt $toolkit)"
-                       fi
-               fi
-               desktop_environment="KDE"
-       elif [[ $KDE_SESSION_VERSION == '4' ]]; then
-               version_data=$( kded4 --version 2>/dev/null )
+
+       # works on 4, assume 5 will id the same, why not, no need to update in future
+       # KDE_SESSION_VERSION is the integer version of the desktop
+       if [[ $XDG_CURRENT_DESKTOP == 'KDE' || -n $KDE_SESSION_VERSION ]]; then
+               # note the command is actually like, kded4 --version, so we construct it
+               version_data=$( kded$KDE_SESSION_VERSION --version 2>/dev/null )
                version=$( grep -si '^KDE Development Platform:' <<< "$version_data" | gawk '{print $4}' )
                if [[ -z $version ]];then
-                       version='4'
+                       version=$KDE_SESSION_VERSION
                fi
                if [[ $B_EXTRA_DATA == 'true' ]];then
                        toolkit=$( grep -si '^Qt:' <<< "$version_data" | gawk '{print $2}' )
@@ -3203,94 +3971,205 @@ get_desktop_environment()
                        fi
                fi
                desktop_environment="KDE"
-       # now that the primary ones have been handled, next is to find the ones with unique
-       # xprop detections possible
-       else
-               ps_aux="$( ps aux )"
+       elif [[ $XDG_CURRENT_DESKTOP == 'Unity' ]];then
+               version=$( get_de_app_version 'unity' '^unity' '2' )
+               # not certain cinn will always have version, so keep output right if not
+               if [[ -n $version ]];then
+                       version="$version "
+               fi
+               if [[ $B_EXTRA_DATA == 'true' ]];then
+                       toolkit=$( get_de_gtk_data )
+                       if [[ -n $toolkit ]];then
+                               version="${version}(Gtk ${toolkit})"
+                       fi
+               fi
+               desktop_environment="Unity"
+       fi
+       # did we find it? If not, start the xprop tests
+       if [[ -z $desktop_environment ]];then
                if [[ -n $( type -p xprop ) ]];then
                        xprop_root="$( xprop -root 2>/dev/null )"
-                       # String: "This is xfdesktop version 4.2.12"
-                       if [[ -n $( grep -Eis '\"xfce4\"' <<< "$xprop_root" ) ]];then
-                               version=$( get_de_app_version 'xfdesktop' 'xfdesktop[[:space:]]version' '5' )
-                               if [[ -z $version ]];then
-                                       version='4'
+               fi
+               # note that cinnamon split from gnome, and and can now be id'ed via xprop,
+               # but it will still trigger the next gnome true case, so this needs to go before gnome test
+               # eventually this needs to be better organized so all the xprop tests are in the same
+               # section, but this is good enough for now.
+               if [[ -n $xprop_root && -n $( grep -is '^_MUFFIN' <<< "$xprop_root" ) ]];then
+                       version=$( get_de_app_version 'cinnamon' '^cinnamon' '2' )
+                       # not certain cinn will always have version, so keep output right if not
+                       if [[ -n $version ]];then
+                               version="$version "
+                       fi
+                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                               toolkit=$( get_de_gtk_data )
+                               if [[ -n $toolkit ]];then
+                                       version="${version}(Gtk ${toolkit})"
                                fi
-                               if [[ $B_EXTRA_DATA == 'true' ]];then
-                                       toolkit=$( get_de_app_version 'xfdesktop' 'Built[[:space:]]with[[:space:]]GTK' '4' )
-                                       if [[ -n $toolkit ]];then
-                                               version="$version (Gtk $toolkit)"
-                                       fi
+                       fi
+                       desktop_environment="Cinnamon"
+               elif [[ -n $xprop_root && -n $( grep -is '^_MARCO' <<< "$xprop_root" ) ]];then
+                       version=$( get_de_app_version 'mate-about' '^MATE[[:space:]]DESKTOP' 'NF' )
+                       # not certain cinn/mate will always have version, so keep output right if not
+                       if [[ -n $version ]];then
+                               version="$version "
+                       fi
+                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                               toolkit=$( get_de_gtk_data )
+                               if [[ -n $toolkit ]];then
+                                       version="${version}(Gtk ${toolkit})"
                                fi
-                               desktop_environment="Xfce"
-                       # when 5 is released, the string may need updating
-                       elif [[ -n $( grep -is '\"xfce5\"' <<< "$xprop_root" ) ]];then
-                               version=$( get_de_app_version 'xfdesktop' 'xfdesktop[[:space:]]version' '5' )
-                               if [[ -z $version ]];then
-                                       version='5'
+                       fi
+                       desktop_environment="MATE"
+               # note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out
+               # https://bugzilla.gnome.org/show_bug.cgi?id=542880
+               elif [[ -n $GNOME_DESKTOP_SESSION_ID ]]; then
+                       if [[ -n $( type -p gnome-shell ) ]];then
+                               version=$( get_de_app_version 'gnome-shell' 'gnome' '3' )
+                       elif [[ -n $( type -p gnome-about ) ]];then
+                               version=$( get_de_app_version 'gnome-about' 'gnome' '3' )
+                       fi
+                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                               toolkit=$( get_de_gtk_data )
+                               if [[ -n $toolkit ]];then
+                                       version="$version (Gtk $toolkit)"
                                fi
-                               if [[ $B_EXTRA_DATA == 'true' ]];then
-                                       toolkit=$( get_de_app_version 'xfdesktop' 'Built[[:space:]]with[[:space:]]GTK' '4' )
-                                       if [[ -n $toolkit ]];then
-                                               version="$version (Gtk $toolkit)"
+                       fi
+                       desktop_environment="Gnome"
+               fi
+               if [[ -z $desktop_environment ]];then
+               # now that the primary ones have been handled, next is to find the ones with unique
+               # xprop detections possible
+                       if [[ -n $xprop_root ]];then
+                               # String: "This is xfdesktop version 4.2.12"
+                               # alternate: xfce4-about --version > xfce4-about 4.10.0 (Xfce 4.10)
+                               if [[ -n $( grep -Eis '\"xfce4\"' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'xfdesktop' 'xfdesktop[[:space:]]version' '5' )
+                                       # arch linux reports null, so use alternate if null
+                                       if [[ -z $version ]];then
+                                               version=$( get_de_app_version 'xfce4-panel' '^xfce4-panel' '2' )
+                                               if [[ -z $version ]];then
+                                                       version='4'
+                                               fi
                                        fi
-                               fi
-                               desktop_environment="Xfce"
-                       elif [[ -n $( grep -is 'BLACKBOX_PID' <<< "$xprop_root" ) ]];then
-                               if [[ -n $( grep -is 'fluxbox' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                                       version=$( get_de_app_version 'fluxbox' '^fluxbox' '2' )
-                                       desktop_environment='Fluxbox'
-                               else
-                                       desktop_environment='Blackbox'
-                               fi
-                       elif [[ -n $( grep -is 'OPENBOX_PID' <<< "$xprop_root" ) ]];then
-                               version=$( get_de_app_version 'openbox' '^openbox' '2' )
-                               if [[ -n $( grep -is 'lxde' <<< "$ps_aux" | grep -v 'grep' ) ]];then
+                                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                                               toolkit=$( get_de_app_version 'xfdesktop' 'Built[[:space:]]with[[:space:]]GTK' '4' )
+                                               if [[ -n $toolkit ]];then
+                                                       version="$version (Gtk $toolkit)"
+                                               fi
+                                       fi
+                                       desktop_environment="Xfce"
+                               # when 5 is released, the string may need updating
+                               elif [[ -n $( grep -is '\"xfce5\"' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'xfdesktop' 'xfdesktop[[:space:]]version' '5' )
+                                       # arch linux reports null, so use alternate if null
+                                       if [[ -z $version ]];then
+                                               version=$( get_de_app_version 'xfce5-panel' '^xfce5-panel' '2' )
+                                               if [[ -z $version ]];then
+                                                       version='5'
+                                               fi
+                                       fi
+                                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                                               toolkit=$( get_de_app_version 'xfdesktop' 'Built[[:space:]]with[[:space:]]GTK' '4' )
+                                               if [[ -n $toolkit ]];then
+                                                       version="$version (Gtk $toolkit)"
+                                               fi
+                                       fi
+                                       desktop_environment="Xfce"
+                               elif [[ -n $( grep -is 'BLACKBOX_PID' <<< "$xprop_root" ) ]];then
+                                       if [[ -n $( grep -is 'fluxbox' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                               version=$( get_de_app_version 'fluxbox' '^fluxbox' '2' )
+                                               desktop_environment='Fluxbox'
+                                       else
+                                               desktop_environment='Blackbox'
+                                       fi
+                               elif [[ -n $( grep -is 'OPENBOX_PID' <<< "$xprop_root" ) ]];then
+                                       # note: openbox-lxde --version may be present, but returns openbox data
+                                       version=$( get_de_app_version 'openbox' '^openbox' '2' )
+                                       if [[ $XDG_CURRENT_DESKTOP == 'LXDE' || \
+                                                       -n $( grep -is 'lxde' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                               if [[ -n $version ]];then
+                                                       version="(Openbox $version)"
+                                               fi
+                                               desktop_environment='LXDE'
+                                       elif [[ -n $( grep -is 'razor-desktop' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                               if [[ -n $version ]];then
+                                                       version="(Openbox $version)"
+                                               fi
+                                               desktop_environment='Razor-QT'
+                                       else
+                                               desktop_environment='Openbox'
+                                       fi
+                               elif [[ -n $( grep -is 'ICEWM' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'icewm' '^icewm' '2' )
+                                       desktop_environment='IceWM'
+                               elif [[ -n $( grep -is 'ENLIGHTENMENT' <<< "$xprop_root" ) ]];then
+                                       # no -v or --version but version is in xprop -root
+                                       # ENLIGHTENMENT_VERSION(STRING) = "Enlightenment 0.16.999.49898"
+                                       version=$( grep -is 'ENLIGHTENMENT_VERSION' <<< "$xprop_root" | cut -d '"' -f 2 | gawk '{print $2}' )
+                                       desktop_environment='Enlightenment'
+                               elif [[ -n $( grep -is '^I3_' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'i3' '^i3' '3' )
+                                       desktop_environment='i3'
+                               elif [[ -n $( grep -is 'WINDOWMAKER' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'wmaker' '^Window[[:space:]]*Maker' 'NF' )
                                        if [[ -n $version ]];then
-                                               version="(Openbox $version)"
+                                               version="$version "
                                        fi
-                                       desktop_environment='LXDE'
-                               else
-                                       desktop_environment='Openbox'
+                                       desktop_environment="WindowMaker"
+                               elif [[ -n $( grep -is '^_WM2' <<< "$xprop_root" ) ]];then
+                                       # note; there isn't actually a wm2 version available but error handling should cover it and return null
+                                       # maybe one day they will add it?
+                                       version=$( get_de_app_version 'wm2' '^wm2' 'NF' )
+                                       # not certain will always have version, so keep output right if not
+                                       if [[ -n $version ]];then
+                                               version="$version "
+                                       fi
+                                       desktop_environment="WM2"
+                               elif [[ -n $( grep -is 'herbstluftwm' <<< "$xprop_root" ) ]];then
+                                       version=$( get_de_app_version 'herbstluftwm' '^herbstluftwm' 'NF' )
+                                       if [[ -n $version ]];then
+                                               version="$version "
+                                       fi
+                                       desktop_environment="herbstluftwm"
+                               fi
+                       fi
+                       # a few manual hacks for things that don't id with xprop, these are just good guesses
+                       # note that gawk is going to exit after first occurance of search string, so no need for extra
+                       if [[ -z $desktop_environment ]];then
+                               if [[ -n $( grep -is 'fvwm-crystal'  <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'fvwm' '^fvwm' '2' )
+                                       desktop_environment='FVWM-Crystal'
+                               elif [[ -n $( grep -is 'fvwm'  <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'fvwm' '^fvwm' '2' )
+                                       desktop_environment='FVWM'
+                               elif [[ -n $( grep -is 'pekwm'  <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'pekwm' '^pekwm' '3' )
+                                       desktop_environment='pekwm'
+                               elif [[ -n $( grep -is 'awesome' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'awesome' '^awesome' '2' )
+                                       desktop_environment='Awesome'
+                               elif [[ -n $( grep -is 'scrotwm' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'scrotwm' '^welcome.*scrotwm' '4' )
+                                       desktop_environment='Scrotwm' # no --version for this one
+                               elif [[ -n $( grep -is 'spectrwm' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'spectrwm' '^spectrwm.*welcome.*spectrwm' '5' )
+                                       desktop_environment='Spectrwm' # no --version for this one
+                               elif [[ -n $( grep -Eis '([[:space:]]|/)twm' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       desktop_environment='Twm' # no --version for this one
+                               elif [[ -n $( grep -Eis '([[:space:]]|/)dwm' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'dwm' '^dwm' '1' )
+                                       desktop_environment='dwm'
+                               elif [[ -n $( grep -is 'wmii2' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'wmii2' '^wmii2' '1' )
+                                       desktop_environment='wmii2'
+                               # note: in debian at least, wmii is actuall wmii3
+                               elif [[ -n $( grep -is 'wmii' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'wmii' '^wmii' '1' )
+                                       desktop_environment='wmii'
+                               elif [[ -n $( grep -Eis '([[:space:]]|/)jwm' <<< "$Ps_aux_Data" | grep -v 'grep' ) ]];then
+                                       version=$( get_de_app_version 'jwm' '^jwm' '2' )
+                                       desktop_environment='JWM'
                                fi
-                       elif [[ -n $( grep -is 'ICEWM' <<< "$xprop_root" ) ]];then
-                               version=$( get_de_app_version 'icewm' '^icewm' '2' )
-                               desktop_environment='IceWM'
-                       elif [[ -n $( grep -is 'ENLIGHTENMENT' <<< "$xprop_root" ) ]];then
-                               # no -v or --version but version is in xprop -root
-                               # ENLIGHTENMENT_VERSION(STRING) = "Enlightenment 0.16.999.49898"
-                               version=$( grep -is 'ENLIGHTENMENT_VERSION' <<< "$xprop_root" | cut -d '"' -f 2 | gawk '{print $2}' )
-                               desktop_environment='Enlightenment'
-                       fi
-               fi
-               # a few manual hacks for things that don't id with xprop, these are just good guesses
-               # note that gawk is going to exit after first occurance of search string, so no need for extra
-               if [[ -z $desktop_environment ]];then
-                       if [[ -n $( grep -is 'fvwm-crystal'  <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'fvwm' '^fvwm' '2' )
-                               desktop_environment='FVWM-Crystal'
-                       elif [[ -n $( grep -is 'fvwm'  <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'fvwm' '^fvwm' '2' )
-                               desktop_environment='FVWM'
-                       elif [[ -n $( grep -is 'pekwm'  <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'pekwm' '^pekwm' '3' )
-                               desktop_environment='pekwm'
-                       elif [[ -n $( grep -is 'awesome' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'awesome' '^awesome' '2' )
-                               desktop_environment='Awesome'
-                       elif [[ -n $( grep -is 'scrotwm' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'scrotwm' '^welcome.*scrotwm' '4' )
-                               desktop_environment='Scrotwm' # no --version for this one
-                       elif [[ -n $( grep -Eis '([[:space:]]|/)twm' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               desktop_environment='Twm' # no --version for this one
-                       elif [[ -n $( grep -Eis '([[:space:]]|/)dwm' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'dwm' '^dwm' '1' )
-                               desktop_environment='dwm'
-                       elif [[ -n $( grep -is 'wmii' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'wmii' '^wmii' '1' )
-                               desktop_environment='wmii'
-                       elif [[ -n $( grep -Eis '([[:space:]]|/)jwm' <<< "$ps_aux" | grep -v 'grep' ) ]];then
-                               version=$( get_de_app_version 'jwm' '^jwm' '2' )
-                               desktop_environment='JWM'
                        fi
                fi
        fi
@@ -3302,21 +4181,35 @@ get_desktop_environment()
 }
 
 # note: gawk doesn't support white spaces in search string, gave errors, so use [[:space:]] instead
-# args: $1 - desktop command for --version; $2 - search string; $3 - gawk print number
+# args: $1 - desktop/app command for --version; $2 - search string; $3 - gawk print number
 get_de_app_version()
 {
        local version_data='' version='' get_version='--version' 
        
+       # mate-about -v = MATE Desktop Environment 1.4.0
        case $1 in
-               dwm|jwm|wmii)
+               dwm|jwm|mate-about|wmii|wmii2)
                        get_version='-v'
                        ;;
+               epoch)
+                       get_version='version'
+                       ;;
        esac
-       # note, some wm send version info to stderr instead of stdout
+       
        case $1 in
-               dwm|scrotwm)
+               # note, some wm/apps send version info to stderr instead of stdout
+               dwm|ksh|scrotwm|spectrwm)
                        version_data="$( $1 $get_version 2>&1 )"
                        ;;
+               csh)
+                       version_data="$( tcsh $get_version 2>/dev/null )"
+                       ;;
+               # quick debian/buntu hack until I find a universal way to get version for these
+               dash)
+                       if [[ -n $( type -p dpkg ) ]];then
+                               version_data="$( dpkg -l $1 2>/dev/null )"
+                       fi
+                       ;;
                *)
                        version_data="$( $1 $get_version 2>/dev/null )"
                        ;;
@@ -3329,8 +4222,8 @@ get_de_app_version()
                }
                /'$2'/ {
                        # sample: dwm-5.8.2, ©.. etc, why no space? who knows. Also get rid of v in number string
-                       # xfce, and other, output has , in it, so dump all commas
-                       gsub(/(,|dwm-|wmii-|v|V)/, "",$'$3') 
+                       # xfce, and other, output has , in it, so dump all commas and parentheses
+                       gsub(/(,|dwm-|wmii2-|wmii-|v|V|\(|\))/, "",$'$3') 
                        print $'$3'
                        exit # quit after first match prints
                }' <<< "$version_data" )
@@ -3338,19 +4231,134 @@ get_de_app_version()
        echo $version
 }
 
+get_desktop_extra_data()
+{
+       eval $LOGFS
+       local de_data=$( ps -A | gawk '
+       BEGIN {
+               IGNORECASE=1
+               desktops=""
+               separator=""
+       }
+       /(gnome-shell|gnome-panel|kicker|lxpanel|mate-panel|plasma-desktop|xfce4-panel)$/ {
+               # only one entry per type, can be multiple
+               if ( desktops !~ $NF ) {
+                       desktops = desktops separator $NF
+                       separator = ","
+               }
+       }
+       END {
+               print desktops
+       }
+       ' )
+       echo $de_data
+       
+       eval $LOGFE
+}
+
+get_de_gtk_data()
+{
+       eval $LOGFS
+       
+       local toolkit=''
+       
+       # this is a hack, and has to be changed with every toolkit version change, and only dev systems
+       # have this installed, but it's a cross distro command so let's test it first
+       if [[ -n $( type -p pkg-config ) ]];then
+               toolkit=$( pkg-config --modversion gtk+-4.0 2>/dev/null )
+               # note: opensuse gets null output here, we need the command to get version and output sample
+               if [[ -z $toolkit ]];then
+                       toolkit=$( pkg-config --modversion gtk+-3.0 2>/dev/null )
+               fi
+               if [[ -z $toolkit ]];then
+                       toolkit=$( pkg-config --modversion gtk+-2.0 2>/dev/null )
+               fi
+       fi
+       # now let's go to more specific version tests, this will never cover everything and that's fine.
+       if [[ -z $toolkit ]];then
+               # we'll try some known package managers next. dpkg will handle a lot of distros 
+               # this is the most likely order as of: 2014-01-13. Not going to try to support all package managers
+               # too much work, just the very biggest ones.
+               if [[ -n $( type -p dpkg ) ]];then
+                       toolkit=$( dpkg -s libgtk-3-0 2>/dev/null | gawk -F ':' '/^Version/ {print $2}' )
+                       if [[ -z $toolkit ]];then
+                               toolkit=$( dpkg -s libgtk2.0-0 2>/dev/null | gawk -F ':' '/^Version/ {print $2}' )
+                       fi
+                       # just guessing on gkt 4 package name
+                       if [[ -z $toolkit ]];then
+                               toolkit=$( dpkg -s libgtk-4-0 2>/dev/null | gawk -F ':' '/^Version/ {print $2}' )
+                       fi
+               elif [[ -n $( type -p pacman ) ]];then
+                       toolkit=$(  pacman -Qi gtk3 2>/dev/null | gawk -F ':' '/^Version/ {print $2}' )
+                       if [[ -z $toolkit ]];then
+                               toolkit=$( pacman -Qi gtk2 2>/dev/null | gawk -F ':' '/^Version/ {print $2}' )
+                       fi
+               fi
+       fi
+       echo $toolkit
+       
+       eval $LOGFE
+}
+
+# see which dm has started if any
+get_display_manager()
+{
+       eval $LOGFS
+       # ldm - LTSP display manager
+       local dm_id_list='entranced.pid entrance/entranced.pid gdm.pid gdm3.pid kdm.pid ldm.pid lightdm.pid lxdm.pid mdm.pid nodm.pid slim.lock tint2.pid wdm.pid xdm.pid' 
+       local dm_id='' dm='' separator=''
+       # note we don't need to filter grep if we do it this way
+       local x_is_running=$( grep '/usr.*/X' <<< "$Ps_aux_Data" | grep -iv '/Xprt' )
+
+       for dm_id in $dm_id_list
+       do
+               if [[ -e /var/run/$dm_id || -e /run/$dm_id ]];then
+                       # just on the off chance that two dms are running, good info to have in that case, if possible
+                       dm=$dm$separator$( basename $dm_id | cut -d '.' -f 1 )
+                       separator=','
+               fi
+       done
+       # might add this in, but the rate of new dm's makes it more likely it's an unknown dm, so
+       # we'll keep output to N/A
+       if [[ -n $x_is_running && -z $dm ]];then
+               if [[ -n $( grep 'startx$' <<< "$Ps_aux_Data" ) ]];then
+                       dm='(startx)'
+               fi
+       fi
+       echo $dm
+
+       log_function_data "display manager: $dm"
+
+       eval $LOGFE
+}
+
 # for more on distro id, please reference this python thread: http://bugs.python.org/issue1322
 ## return distro name/id if found
 get_distro_data()
 {
        eval $LOGFS
-       local i='' j='' distro='' distro_file='' a_distro_glob=''
+       local i='' j='' distro='' distro_file='' a_distro_glob='' temp_array=''
+       
+       # may need modification if archbsd / debian can be id'ed with /etc files
+       if [[ -n $BSD_TYPE ]];then
+               distro=$( uname -sr )
+               echo "$distro"
+               log_function_data "distro: $distro"
+               eval $LOGFE
+               return 0
+       fi
 
        # get the wild carded array of release/version /etc files if present
        shopt -s nullglob
        cd /etc
+       # note: always exceptions, so wild card after release/version: /etc/lsb-release-crunchbang
+       # wait to handle since crunchbang file is one of the few in the world that uses this method
        a_distro_glob=(*[-_]{release,version})
        cd "$OLDPWD"
        shopt -u nullglob
+       
+       temp_array=${a_distro_glob[@]}
+       log_function_data "A_GLX_DATA: $temp_array"
 
        if [[ ${#a_distro_glob[@]} -eq 1 ]];then
                distro_file="${a_distro_glob}"
@@ -3365,11 +4373,13 @@ get_distro_data()
                                # Now lets see if the distro file is in the known-good working-lsb-list
                                # if so, use lsb-release, if not, then just use the found file
                                # this is for only those distro's with self named release/version files
-                               # because Mint does not use such, it must be done as below
+                               # because Mint does not use such, it must be done as below 
                                ## this if statement requires the spaces and * as it is, else it won't work
                                ##
                                if [[ " $DISTROS_LSB_GOOD " == *" ${i} "* ]] && [[ $B_LSB_FILE == 'true' ]];then
                                        distro_file='lsb-release'
+                               elif [[ " $DISTROS_OS_RELEASE_GOOD " == *" ${i} "* ]] && [[ $B_OS_RELEASE_FILE == 'true' ]];then
+                                       distro_file='os-release'
                                else
                                        distro_file="${i}"
                                fi
@@ -3384,19 +4394,29 @@ get_distro_data()
        # this handles case where only one release/version file was found, and it's lsb-release. This would
        # never apply for ubuntu or debian, which will filter down to the following conditions. In general
        # if there's a specific distro release file available, that's to be preferred, but this is a good backup.
-       elif [[ -n $distro_file && -f $FILE_LSB_RELEASE && " $DISTROS_LSB_GOOD" == *" $distro_file "* ]];then
-               distro=$( get_distro_lsb_data )
+       elif [[ -n $distro_file && $B_LSB_FILE == 'true' && " $DISTROS_LSB_GOOD" == *" $distro_file "* ]];then
+               distro=$( get_distro_lsb_os_release_data 'lsb-file' )
        elif [[ $distro_file == 'lsb-release' ]];then
-               distro=$( get_distro_lsb_data )
+               distro=$( get_distro_lsb_os_release_data 'lsb-file' )
+       elif [[ $distro_file == 'os-release' ]];then
+               distro=$( get_distro_lsb_os_release_data 'os-release-file' )
        # then if the distro id file was found and it's not in the exluded primary distro file list, read it
        elif [[ -n $distro_file && -s /etc/$distro_file && " $DISTROS_EXCLUDE_LIST " != *" $distro_file "* ]];then
-               distro=$( remove_erroneous_chars "/etc/$distro_file" )
+               # new opensuse uses os-release, but older ones may have a similar syntax, so just use the first line
+               if [[ $distro_file == 'SuSE-release' ]];then
+                       # leaving off extra data since all new suse have it, in os-release, this file has line breaks, like os-release
+                       # but in case we  want it, it's: CODENAME = Mantis  | VERSION = 12.2 
+                       # for now, just take first occurance, which should be the first line, which does not use a variable type format
+                       distro=$( grep -i -m 1 'suse' /etc/$distro_file )
+               else
+                       distro=$( remove_erroneous_chars "/etc/$distro_file" )
+               fi
        # otherwise try  the default debian/ubuntu /etc/issue file
        elif [[ -f /etc/issue ]];then
                # lsb gives more manageable and accurate output than issue, but mint should use issue for now
                # some bashism, boolean must be in parenthesis to work correctly, ie [[ $(boolean) ]] not [[ $boolean ]]
                if [[ $B_LSB_FILE == 'true' ]] && [[ -z $( grep -i 'mint' /etc/issue ) ]];then
-                       distro=$( get_distro_lsb_data )
+                       distro=$( get_distro_lsb_os_release_data 'lsb-file' )
                else
                        distro=$( gawk '
                        BEGIN {
@@ -3409,10 +4429,17 @@ get_distro_data()
                                gsub(/ [ \t]+/, " ")
                                print
                        }' /etc/issue )
+                       
+                       # this handles an arch bug where /etc/arch-release is empty and /etc/issue is corrupted
+                       # only older arch installs that have not been updated should have this fallback required, new ones use
+                       # os-release
+                       if [[ -n $( grep -i 'arch linux' <<< $distro ) ]];then
+                               distro='Arch Linux'
+                       fi
                fi
        fi
-
-       if [[ ${#distro} -gt 80 ]] &&  [[ $B_HANDLE_CORRUPT_DATA != 'true' ]];then
+       
+       if [[ ${#distro} -gt 80 ]] && [[ $B_HANDLE_CORRUPT_DATA != 'true' ]];then
                distro="${RED}/etc/${distro_file} corrupted, use -% to override${NORMAL}"
        fi
        ## note: would like to actually understand the method even if it's not used
@@ -3420,118 +4447,297 @@ get_distro_data()
        ## test for /etc/lsb-release as a backup in case of failure, in cases where > one version/release file
        ## were found but the above resulted in null distro value
        if [[ -z $distro ]] && [[ $B_LSB_FILE == 'true' ]];then
-               distro=$( get_distro_lsb_data )
+               distro=$( get_distro_lsb_os_release_data 'lsb-file' )
+       fi
+       if [[ -z $distro ]] && [[ $B_OS_RELEASE_FILE == 'true' ]];then
+               distro=$( get_distro_lsb_os_release_data 'os-release-file' )
        fi
        # now some final null tries
        if [[ -z $distro ]];then
                # if the file was null but present, which can happen in some cases, then use the file name itself to 
                # set the distro value. Why say unknown if we have a pretty good idea, after all?
                if [[ -n $distro_file ]] && [[ " $DISTROS_DERIVED $DISTROS_PRIMARY " == *" $distro_file "* ]];then
-                       distro=$( sed -E -e 's/[-_]//' -e 's/(release|version)//' <<< $distro_file | sed -E 's/^([a-z])/\u\1/' )
+                       distro=$( sed $SED_RX -e 's/[-_]//' -e 's/(release|version)//' <<< $distro_file | sed $SED_RX 's/^([a-z])/\u\1/' )
                fi
                ## finally, if all else has failed, give up
                if [[ -z $distro ]];then
                        distro='unknown'
                fi
        fi
-
-       # this handles an arch bug where /etc/arch-release is empty and /etc/issue is corrupted
-       if [[ -n $( grep -i 'arch linux' <<< $distro ) ]];then
-               distro='Arch Linux'
-       fi
-
+       # final step cleanup of unwanted information
+       # opensuse has the x86 etc type string in names, not needed as redundant since -S already shows that
+       distro=$( gawk '
+       BEGIN {
+               IGNORECASE=1
+       }
+       {
+               sub(/ *\(*(x86_64|i486|i586|i686|686|586|486)\)*/, "", $0)
+               print $0
+       }' <<< $distro )
        echo "$distro"
        log_function_data "distro: $distro"
        eval $LOGFE
 }
 
-# args: $1 - optional, app, uses the app test, not being used now
-get_distro_lsb_data()
+# args: $1 - lsb-file/lsb-app/os-release-file
+get_distro_lsb_os_release_data()
 {
        eval $LOGFS
        local distro=''
-
-       if [[ $B_LSB_FILE == 'true' ]] && [[ $1 != 'app' ]];then
-               distro=$( gawk -F '=' '
-               BEGIN {
-                       IGNORECASE=1
-               }
-               # note: adding the spacing directly to variable to make sure distro output is null if not found
-               /^DISTRIB_ID/ {
-                       gsub(/^ +| +$/, "", $NF)
-                       # this is needed because grep for "arch" is too loose to be safe
-                       if ( $NF == "arch" ) {
-                               distroId = "Arch Linux"
-                       }
-                       else if ( $NF != "n/a" ) {
-                               distroId = $NF " "
-                       }
-               }
-               /^DISTRIB_RELEASE/ {
-                       gsub(/^ +| +$/, "", $NF)
-                       if ( $NF != "n/a" ) {
-                               distroRelease = $NF " "
-                       }
-               }
-               /^DISTRIB_CODENAME/ {
-                       gsub(/^ +| +$/, "", $NF)
-                       if ( $NF != "n/a" ) {
-                               distroCodename = $NF " "
-                       }
-               }
-               # sometimes some distros cannot do their lsb-release files correctly, so here is
-               # one last chance to get it right.
-               /^DISTRIB_DESCRIPTION/ {
-                       gsub(/^ +| +$/, "", $0)
-                       if ( $NF != "n/a" ) {
-                               # slice out the part inside "", like: DISTRIB_DESCRIPTION="Arch Linux"
-                               gsub(/DISTRIB_DESCRIPTION=|"/,"",$0)
-                               distroDescription = $0
-                       }
-               }
-               END {
-                       fullString=""
-                       if ( distroId == "" && distroRelease == "" && distroCodename == "" && distroDescription != "" ){
-                               fullString = distroDescription
-                       }
-                       else {
-                               fullString = distroId distroRelease distroCodename
-                       }
-                       print fullString
-               }
-               ' $FILE_LSB_RELEASE )
-               log_function_data 'cat' "$FILE_LSB_RELEASE"
-       fi
-       # this is HORRIBLY slow, but I don't know why, it runs fast in shell
-#      if [[  -n $( type -p lsb_release ) && $1 == 'app' ]];then
-#              distro=$( echo "$( lsb_release -irc )" | gawk '
-#              { IGNORECASE=1 }
-#              /^Distributor ID/ {
-#                      gsub(/^ +| +$/, "", $NF)
-#                      distroId = $NF
-#              }
-#              /^Release/ {
-#                      gsub(/^ +| +$/, "", $NF)
-#                      distroRelease = $NF
-#              }
-#              /^Codename/ {
-#                      gsub(/^ +| +$/, "", $NF)
-#                      distroCodename = $NF
-#              }
-#              END {
-#                      print distroId " " distroRelease " (" distroCodename ")"
-#              }' )
-#      fi
-
+       
+       case $1 in
+               lsb-file)
+                       if [[ $B_LSB_FILE == 'true' ]];then
+                               distro=$( gawk -F '=' '
+                               BEGIN {
+                                       IGNORECASE=1
+                               }
+                               # clean out unwanted characters
+                               { 
+                                       gsub(/\\|\"|[:\47]/,"", $0 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $1 )
+                               }
+                               # note: adding the spacing directly to variable to make sure distro output is null if not found
+                               /^DISTRIB_ID/ {
+                                       # this is needed because grep for "arch" is too loose to be safe
+                                       if ( $2 == "arch" ) {
+                                               distroId = "Arch Linux"
+                                       }
+                                       else if ( $2 != "n/a" ) {
+                                               distroId = $2 " "
+                                       }
+                               }
+                               /^DISTRIB_RELEASE/ {
+                                       if ( $2 != "n/a" ) {
+                                               distroRelease = $2 " "
+                                       }
+                               }
+                               /^DISTRIB_CODENAME/ {
+                                       if ( $2 != "n/a" ) {
+                                               distroCodename = $2 " "
+                                       }
+                               }
+                               # sometimes some distros cannot do their lsb-release files correctly, so here is
+                               # one last chance to get it right.
+                               /^DISTRIB_DESCRIPTION/ {
+                                       if ( $2 != "n/a" ) {
+                                               distroDescription = $2
+                                       }
+                               }
+                               END {
+                                       fullString=""
+                                       if ( distroId == "" && distroRelease == "" && distroCodename == "" && distroDescription != "" ){
+                                               fullString = distroDescription
+                                       }
+                                       else {
+                                               fullString = distroId distroRelease distroCodename
+                                       }
+                                       print fullString
+                               }
+                               ' $FILE_LSB_RELEASE )
+                               log_function_data 'cat' "$FILE_LSB_RELEASE"
+                       fi
+                       ;;
+               lsb-app)
+                       # this is HORRIBLY slow, not using
+                       if [[  -n $( type -p lsb_release ) ]];then
+                               distro=$( echo "$( lsb_release -irc )" | gawk -F ':' '
+                               BEGIN { 
+                                       IGNORECASE=1 
+                               }
+                               # clean out unwanted characters
+                               { 
+                                       gsub(/\\|\"|[:\47]/,"", $0 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $1 )
+                               }
+                               /^Distributor ID/ {
+                                       distroId = $2
+                               }
+                               /^Release/ {
+                                       distroRelease = $2
+                               }
+                               /^Codename/ {
+                                       distroCodename = $2
+                               }
+                               END {
+                                       print distroId " " distroRelease " (" distroCodename ")"
+                               }' )
+                       fi
+                       ;;
+               os-release-file)
+                       if [[ $B_OS_RELEASE_FILE == 'true' ]];then
+                               distro=$( gawk -F '=' '
+                               BEGIN {
+                                       IGNORECASE=1
+                                       prettyName=""
+                                       regularName=""
+                                       versionName=""
+                                       versionId=""
+                                       distroName=""
+                               }
+                               # clean out unwanted characters
+                               { 
+                                       gsub(/\\|\"|[:\47]/,"", $0 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $2 )
+                                       gsub(/^[[:space:]]+|[[:space:]]+$/, "", $1 )
+                               }
+                               # note: adding the spacing directly to variable to make sure distro output is null if not found
+                               /^PRETTY_NAME/ {
+                                       if ( $2 != "n/a" ) {
+                                               prettyName = $2
+                                       }
+                               }
+                               /^NAME/ {
+                                       if ( $2 != "n/a" ) {
+                                               regularName = $2
+                                       }
+                               }
+                               /^VERSION/ {
+                                       if ( $2 != "n/a" && $1 == "VERSION" ) {
+                                               versionName = $2
+                                       }
+                                       else if ( $2 != "n/a" && $1 == "VERSION_ID" ) {
+                                               versionId = $2
+                                       }
+                               }
+                               END {
+                                       if ( prettyName != "" ) {
+                                               distroName = prettyName
+                                       }
+                                       else if ( regularName != "" ) {
+                                               distroName = regularName
+                                               if ( versionName != "" ) {
+                                                       distroName = distroName " " versionName
+                                               }
+                                               else if ( versionId != "" ) {
+                                                       distroName = distroName " " versionId
+                                               }
+                                               
+                                       }
+                                       print distroName
+                               }
+                               ' $FILE_OS_RELEASE )
+                               log_function_data 'cat' "$FILE_OS_RELEASE"
+                       fi
+                       ;;
+       esac
        echo $distro
        log_function_data "distro: $distro"
        eval $LOGFE
 }
 
+get_dmidecode_data()
+{
+       eval $LOGFS
+       
+       local dmidecodePath=''
+
+       if [[ $B_DMIDECODE_SET != 'true' ]];then
+               dmidecodePath=$( type -p dmidecode 2>/dev/null )
+               if [[ -n $dmidecodePath ]];then
+                       # note stripping out these lines: Handle 0x0016, DMI type 17, 27 bytes
+                       # but NOT deleting them, in case the dmidecode data is missing empty lines which will be
+                       # used to separate results. Then we remove the doubled empty lines to keep it clean and
+                       # strip out all the stuff we don't want to see in the results.
+                       DMIDECODE_DATA="$( $dmidecodePath 2>/dev/null \
+                       | gawk -F ':' '
+                       BEGIN {
+                               IGNORECASE=1
+                               cutExtraTab="false"
+                               twoData=""
+                               oneData=""
+                       }
+                       {
+                               # no idea why, but freebsd gawk does not do this right
+                               oneData=$1
+                               twoData=$2
+                               if ( twoData != "" ) {
+                                       twoHolder="true"
+                               }
+                               else {
+                                       twoHolder="false"
+                               }
+                               if ( $0 ~ /^\tDMI type/ ) {
+                                       sub(/^\tDMI type.*/, "", $0)
+                                       cutExtraTab="true"
+                               }
+                               gsub(/'"$BAN_LIST_NORMAL"'/, "", twoData)
+                               gsub(/,/, " ", $0)
+                               # clean out Handle line
+                               sub(/^Handle.*/,"", $0)
+                               sub(/^[[:space:]]*Inactive.*/,"",$0)
+                               # yes, there is a typo in a user data set, unknow
+                               # Base Board Version|Base Board Serial Number
+                               # Chassis Manufacturer|Chassis Version|Chassis Serial Number
+                               # System manufacturer|System Product Name|System Version
+                               # To Be Filled By O.E.M.
+                               # strip out starting white space so that the following stuff will clear properly
+                               sub(/^[[:space:]]+/, "", twoData)
+                               sub(/^Base Board .*|^Chassis .*|.*O\.E\.M\..*|.*OEM.*|^Not .*|^System .*|.*unknow.*|.*N\/A.*|none|^To be filled.*/, "", twoData) 
+                               gsub(/bios|acpi/, "", twoData)
+                               sub(/http:\/\/www.abit.com.tw\//, "Abit", twoData)
+                               
+                               # for double indented values replace with ~ so later can test for it, we are trusting that
+                               # indentation will be tabbed in this case
+                               # special case, dmidecode 2.2 has an extra tab and a DMI type line
+                               if ( cutExtraTab == "true" ) {
+                                       sub(/^\t\t\t+/, "~", oneData)
+                               }
+                               else {
+                                       sub(/^\t\t+/, "~", oneData)
+                               }
+                               
+                               gsub(/^[[:space:]]+|[[:space:]]+$/, "", twoData)
+                               gsub(/^[[:space:]]+|[[:space:]]+$/, "", oneData)
+                               gsub(/ [ \t]+/, " ", twoData)
+                               # reconstructing the line for processing so gawk can use -F : again
+                               if ( oneData != "" && twoHolder == "true" ) {
+                                       print oneData ":" twoData
+                               }
+                               else {
+                                       print $0
+                               }
+                       }' \
+                       | sed '/^$/{
+N
+/^\n$/D
+}' \
+                       )"
+               fi
+               B_DMIDECODE_SET='true'
+               log_function_data "DMIDECODE_DATA: $DMIDECODE_DATA"
+       fi
+
+       eval $LOGFE
+}
+# get_dmidecode_data;echo "$DMIDECODE_DATA";exit
+
+# BSD only
+get_dmesg_boot_data()
+{
+       eval $LOGFS
+       
+       local dmsg_boot_data=''
+       
+       if [[ $B_DMESG_BOOT_FILE == 'true' ]];then
+               # replace all indented items with ~ so we can id them easily while processing
+               dmsg_boot_data="$( cat $FILE_DMESG_BOOT | sed $SED_RX 's/"//g' )"
+       fi
+       echo "$dmsg_boot_data"
+       # log_function_data "$dmsg_boot_data"
+       eval $LOGFE
+}
+
 get_gcc_kernel_version()
 {
        # note that we use gawk to get the last part because beta, alpha, git versions can be non-numeric
-       local gccVersion=$( grep -Eio 'gcc[[:space:]]*version[[:space:]]*([^ \t]*)' /proc/version 2>/dev/null | gawk '{print $3}' )
+       local gccVersion=''
+       
+       if [[ -e /proc/version ]];then
+               gccVersion=$( grep -Eio 'gcc[[:space:]]*version[[:space:]]*([^ \t]*)' /proc/version 2>/dev/null | gawk '{print $3}' )
+       fi
        echo $gccVersion
 }
 
@@ -3540,17 +4746,16 @@ get_gcc_system_version()
        eval $LOGFS
        local separator='' gcc_installed='' gcc_list='' gcc_others='' temp_array=''
        local gcc_version=$( 
-       gcc --version 2>/dev/null | sed -E 's/\([^\)]*\)//g' | gawk '
+       gcc --version 2>/dev/null | sed $SED_RX 's/\([^\)]*\)//g' | gawk '
        BEGIN {
                IGNORECASE=1
        }
        /^gcc/ {
                print $2
                exit
-       }'
-       )
+       }'      )
 
-       # can't use xargs -l basename because not all systems support thats
+       # can't use xargs -L basename because not all systems support thats
        if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
                gcc_others=$( ls /usr/bin/gcc-* 2>/dev/null )
                if [[ -n $gcc_others ]];then
@@ -3607,8 +4812,7 @@ get_gpu_temp_data()
                        }
                        END {
                                print gpuTemp
-                       }'
-                       )
+                       }'      )
                        screen_nu=$( cut -d ':' -f 2 <<< $screen_nu )
                        gpu_temp="$gpu_temp$screen_nu:$gpu_temp_looper "
                done
@@ -3628,8 +4832,7 @@ get_gpu_temp_data()
                }
                END {
                        print gpuTemp
-               }'
-               )
+               }'      )
        # this handles some newer cases of free driver temp readouts, will require modifications as
        # more user data appears.
        elif [[ -n $Sensors_Data ]];then
@@ -3652,8 +4855,7 @@ get_gpu_temp_data()
                }
                END {
                        print gpuTemp
-               }' <<< "$Sensors_Data"
-               )
+               }' <<< "$Sensors_Data" )
        fi
        
        if [[ -n $gpu_temp ]];then
@@ -3686,7 +4888,7 @@ get_graphics_card_data()
        local i='' temp_array=''
 
        IFS=$'\n'
-       A_GFX_CARD_DATA=( $( gawk -F': ' '
+       A_GRAPHICS_CARD_DATA=( $( gawk -F': ' '
        BEGIN {
                IGNORECASE=1
                busId=""
@@ -3698,17 +4900,17 @@ get_graphics_card_data()
                gsub(/ [ \t]+/, " ", $NF)
                busId=gensub(/^([0-9a-f:\.]+) (.+)$/,"\\1","",$1)
                print $NF "," busId
-       }' <<< "$Lspci_Data" ) )
+       }' <<< "$Lspci_v_Data" ) )
        IFS="$ORIGINAL_IFS"
-#      for (( i=0; i < ${#A_GFX_CARD_DATA[@]}; i++ ))
+#      for (( i=0; i < ${#A_GRAPHICS_CARD_DATA[@]}; i++ ))
 #      do
-#              A_GFX_CARD_DATA[i]=$( sanitize_characters BAN_LIST_NORMAL "${A_GFX_CARD_DATA[i]}" )
+#              A_GRAPHICS_CARD_DATA[i]=$( sanitize_characters BAN_LIST_NORMAL "${A_GRAPHICS_CARD_DATA[i]}" )
 #      done
 
        # GFXMEM is UNUSED at the moment, because it shows AGP aperture size, which is not necessarily equal to GFX memory..
-       # GFXMEM="size=[$(echo "$Lspci_Data" | gawk '/VGA/{while (!/^$/) {getline;if (/size=[0-9][0-9]*M/) {size2=gensub(/.*\[size=([0-9]+)M\].*/,"\\1","g",$0);if (size<size2){size=size2}}}}END{print size2}')M]"
-       temp_array=${A_GFX_CARD_DATA[@]}
-       log_function_data "A_GFX_CARD_DATA: $temp_array"
+       # GFXMEM="size=[$(echo "$Lspci_v_Data" | gawk '/VGA/{while (!/^$/) {getline;if (/size=[0-9][0-9]*M/) {size2=gensub(/.*\[size=([0-9]+)M\].*/,"\\1","g",$0);if (size<size2){size=size2}}}}END{print size2}')M]"
+       temp_array=${A_GRAPHICS_CARD_DATA[@]}
+       log_function_data "A_GRAPHICS_CARD_DATA: $temp_array"
        eval $LOGFE
 }
 
@@ -3717,7 +4919,7 @@ get_graphics_driver()
        eval $LOGFS
        
        # list is from sgfxi plus non-free drivers
-       local driver_list='apm|ark|ati|chips|cirrus|cyrix|fbdev|fglrx|glint|i128|i740|intel|i810|imstt|mach64|mga|neomagic|nsc|nv|nvidia|openchrome|nouveau|radeon|radeonhd|rendition|s3|s3virge|savage|siliconmotion|sis|sisusb|tdfx|tga|trident|tseng|unichrome|vboxvideo|vesa|vga|via|voodoo|vmware|v4l'
+       local driver_list='apm|ark|ati|chips|cirrus|cyrix|fbdev|fglrx|glint|i128|i740|intel|i810|imstt|mach64|mga|neomagic|nsc|nvidia|nv|openchrome|nouveau|radeon|radeonhd|rendition|s3virge|s3|savage|siliconmotion|sisusb|sis|tdfx|tga|trident|tseng|unichrome|vboxvideo|vesa|vga|via|voodoo|vmware|v4l'
        local driver='' driver_string='' xorg_log_data='' status='' temp_array=''
 
        if [[ $B_XORG_LOG == 'true' ]];then
@@ -3725,7 +4927,10 @@ get_graphics_driver()
                gawk '
                BEGIN {
                        driver=""
+                       bLoaded="false"
+                       IGNORECASE=1
                }
+               # note that in file names, driver is always lower case
                /[[:space:]]Loading.*('"$driver_list"')_drv.so$/ {
                        driver=gensub(/.*[[:space:]]Loading.*('"$driver_list"')_drv.so/, "\\1", 1, $0 )
                        # we get all the actually loaded drivers first, we will use this to compare the
@@ -3749,12 +4954,22 @@ get_graphics_driver()
                                aDrivers[driver]="failed"
                        }
                }
+               # verify that the driver actually started the desktop, even with false failed messages which can occur
+               # this is the driver that is actually driving the display
+               /.*\([0-9]+\):[[:space:]]Depth.*framebuffer/ {
+                       driver=gensub(/.*('"$driver_list"')\([0-9]+\):[[:space:]]Depth.*framebuffer.*/, "\\1", 1, $0 )
+                       # we need to make sure that the driver has already been truly loaded, not just discussed, also
+                       # set driver to lower case because sometimes it will show as RADEON or NVIDIA in the actual x start
+                       driver=tolower(driver)
+                       if ( driver != $0 && driver in aDrivers ) {
+                               aDrivers[driver]="loaded"
+                       }
+               }
                END {
                        for ( driver in aDrivers ) {
                                print driver "," aDrivers[driver]
                        }
-               }' < $FILE_XORG_LOG
-               ) )
+               }' < $FILE_XORG_LOG ) )
        fi
        temp_array=${A_GRAPHIC_DRIVERS[@]}
        log_function_data "A_GRAPHIC_DRIVERS: $temp_array"
@@ -3767,7 +4982,7 @@ get_graphics_glx_data()
 {
        eval $LOGFS
        local temp_array=''
-       if [[ $B_SHOW_X_DATA == 'true' && $B_ROOT != 'true' ]];then
+       if [[ $B_SHOW_DISPLAY_DATA == 'true' && $B_ROOT != 'true' ]];then
                IFS=$'\n'
                A_GLX_DATA=( $( glxinfo | gawk -F ': ' '
                # note: function declarations go before BEGIN? It appears so, confirm.
@@ -3835,9 +5050,9 @@ get_graphics_glx_data()
 get_graphics_res_data()
 {
        eval $LOGFS
-       local screen_resolution='' xdpy_data='' screens_count=0
+       local screen_resolution='' xdpy_data='' screens_count=0 tty_session=''
 
-       if [[ $B_SHOW_X_DATA == 'true' && $B_ROOT != 'true' ]];then
+       if [[ $B_SHOW_DISPLAY_DATA == 'true' && $B_ROOT != 'true' ]];then
                # Added the two ?'s , because the resolution is now reported without spaces around the 'x', as in
                # 1400x1050 instead of 1400 x 1050. Change as of X.org version 1.3.0
                xdpy_data="$( xdpyinfo )"
@@ -3877,29 +5092,49 @@ get_graphics_res_data()
                        }' <<< "$xdpy_data" )
                fi
        else
-               screen_resolution=$( stty -F $( readlink /proc/$PPID/fd/0 ) size | gawk '{
-                       print $2"x"$1
-               }' )
+               if [[ $B_PROC_DIR == 'true' && -z $BSD_TYPE ]];then
+                       screen_resolution=$( stty -F $( readlink /proc/$PPID/fd/0 ) size | gawk '{
+                               print $2"x"$1
+                       }' )
+               # note: this works fine for all systems but keeping the above for now since
+               # the above is probably more accurate for linux systems.
+               else
+                       if [[ $B_CONSOLE_IRC != 'true' ]];then
+                               screen_resolution=$( stty -a | gawk -F ';' '
+                                       /^speed/ {
+                                               gsub(/[[:space:]]*(rows|columns)[[:space:]]*/,"",$0)
+                                               gsub(/[[:space:]]*/,"",$2)
+                                               gsub(/[[:space:]]*/,"",$3)
+                                               print $3"x"$2
+                                       }' )
+                       else
+                               if [[ -n $BSD_TYPE ]];then
+                                       tty_session=$( get_tty_console_irc )
+                                       # getting information for tty that owns the irc client
+                                       screen_resolution="$( stty -f /dev/pts/$tty_session size | gawk '{print $2"x"$1}' )"
+                               fi
+                       fi
+               fi
        fi
        echo "$screen_resolution"
        log_function_data "screen_resolution: $screen_resolution"
        eval $LOGFE
 }
 
-## create array of x vendor/version data
-get_graphics_x_data()
+## create array of display server vendor/version data
+get_graphics_display_server_data()
 {
        eval $LOGFS
-       local x_vendor='' x_version='' temp_array='' xdpy_info='' a_x_working=''
+       local vendor='' version='' temp_array='' xdpy_info='' a_display_vendor_working=''
 
-       if [[ $B_SHOW_X_DATA == 'true' && $B_ROOT != 'true' ]];then
+       if [[ $B_SHOW_DISPLAY_DATA == 'true' && $B_ROOT != 'true' ]];then
                # X vendor and version detection.
                # new method added since radeon and X.org and the disappearance of <X server name> version : ...etc
                # Later on, the normal textual version string returned, e.g. like: X.Org version: 6.8.2
-               # A failover mechanism is in place. (if $x_version is empty, the release number is parsed instead)
+               # A failover mechanism is in place. (if $version is empty, the release number is parsed instead)
                # xdpy_info="$( xdpyinfo )"
                IFS=","
-               a_x_working=( $( xdpyinfo | gawk -F': +' '
+               a_display_vendor_working=( $( xdpyinfo | gawk -F': +' '
                BEGIN {
                        IGNORECASE=1
                        vendorString=""
@@ -3924,44 +5159,44 @@ get_graphics_x_data()
                END {
                        print vendorString "," version "," vendorRelease
                }' ) )
-               x_vendor=${a_x_working[0]}
-               x_version=${a_x_working[1]}
+               vendor=${a_display_vendor_working[0]}
+               version=${a_display_vendor_working[1]}
 
                # this gives better output than the failure last case, which would only show:
                # for example: X.org: 1.9 instead of: X.org: 1.9.0
-               if [[ -z $x_version ]];then
-                       x_version=$( get_graphics_x_version )
+               if [[ -z $version ]];then
+                       version=$( get_graphics_display_server_version )
                fi
-               if [[ -z $x_version ]];then
-                       x_version=${a_x_working[2]}
+               if [[ -z $version ]];then
+                       version=${a_display_vendor_working[2]}
                fi
                
                # some distros, like fedora, report themselves as the xorg vendor, so quick check
                # here to make sure the vendor string includes Xorg in string
-               if [[ -z $( grep -E '(X|xorg|x\.org)' <<< $x_vendor ) ]];then
-                       x_vendor="$x_vendor X.org"
+               if [[ -z $( grep -E '(X|xorg|x\.org)' <<< $vendor ) ]];then
+                       vendor="$vendor X.org"
                fi
                IFS="$ORIGINAL_IFS"
-               A_X_DATA[0]="$x_vendor"
-               A_X_DATA[1]="$x_version"
+               A_DISPLAY_SERVER_DATA[0]="$vendor"
+               A_DISPLAY_SERVER_DATA[1]="$version"
        else
-               x_version=$( get_graphics_x_version )
-               if [[ -n $x_version ]];then
-                       x_vendor='X.org'
-                       A_X_DATA[0]="$x_vendor"
-                       A_X_DATA[1]="$x_version"
+               version=$( get_graphics_display_server_version )
+               if [[ -n $version ]];then
+                       vendor='X.org'
+                       A_DISPLAY_SERVER_DATA[0]="$vendor"
+                       A_DISPLAY_SERVER_DATA[1]="$version"
                fi
        fi
-       temp_array=${A_X_DATA[@]}
-       log_function_data "A_X_DATA: $temp_array"
+       temp_array=${A_DISPLAY_SERVER_DATA[@]}
+       log_function_data "A_DISPLAY_SERVER_DATA: $temp_array"
        eval $LOGFE
 }
 
 # if other tests fail, try this one, this works for root, out of X also
-get_graphics_x_version()
+get_graphics_display_server_version()
 {
        eval $LOGFS
-       local x_version='' x_data=''
+       local version='' x_data=''
        # note that some users can have /usr/bin/Xorg but not /usr/bin/X
        if [[ -n $( type -p X ) ]];then
                # note: MUST be this syntax: X -version 2>&1
@@ -3973,7 +5208,7 @@ get_graphics_x_version()
                x_data="$( Xorg -version 2>&1)"
        fi
        if [[ -n $x_data ]];then
-               x_version=$( 
+               version=$( 
                gawk '
                BEGIN {
                        IGNORECASE=1
@@ -3985,11 +5220,10 @@ get_graphics_x_version()
                /^X Window System Version/ {
                        print $5
                        exit
-               }' <<< "$x_data"
-               )
+               }' <<< "$x_data" )
        fi
-       echo $x_version
-       log_function_data " x_version: $x_version"
+       echo $version
+       log_function_data " version: $version"
        eval $LOGFE
 }
 
@@ -3997,30 +5231,80 @@ get_graphics_x_version()
 get_hdd_data_basic()
 {
        eval $LOGFS
-       local hdd_used='' temp_array=''
-       local hdd_data="$( df -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 )"
-       log_function_data 'raw' "hdd_data:\n$hdd_data"
+       local hdd_used='' temp_array='' df_string=''
+       local hdd_data='' df_test=''
        
-       hdd_used=$( echo "$hdd_data" | gawk '
-       # also handles odd dm-1 type, from lvm
-       /^\/dev\/(mapper\/|[hsv]d[a-z][0-9]+|dm[-]?[0-9]+)/ {
+       if [[ -z $BSD_TYPE ]];then
+               df_string='df -P -T --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs 
+               --exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs
+               --exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs'
+       else
+               # default size is 512, so use -k for 1024
+               df_string='df -T -k'
+               # default size is 512, -H only for size in human readable format
+               # older bsds don't support -T, pain, so we'll use partial output there
+               df_test=$( df -H -T 2>/dev/null )
+               if [[ -n $df_test ]];then
+                       df_string='df -k -T'
+               else
+                       df_string='df -k'
+               fi
+       fi
+       hdd_data="$( eval $df_string )"
+       log_function_data 'raw' "hdd_data:\n$hdd_data"
+       hdd_used=$(     echo "$hdd_data" | gawk -v bsdType=$BSD_TYPE '
+       BEGIN {
+               # this is used for specific cases where bind, or incorrect multiple mounts to same partitions,
+               # is present. The value is searched for an earlier appearance of that partition and if it is 
+               # present, the data is not added into the partition used size.
+               partitionsSet=""
+               # this handles a case where the same dev item is mounted twice to different points
+               devSet=""
+               devWorking=""
+               mountWorking=""
+       }
+       # using $1, not $2, because older bsd df do not have -T, filesystem type
+       ( bsdType != "" ) && $1 ~ /^(aufs|devfs|devtmpfs|fdescfs|filesystem|iso9660|linprocfs|procfs|squashfs|sysfs|tmpfs|type|unionfs)$/ {
+               # note use next, not getline or it does not work right
+               next 
+       }
+       # also handles odd dm-1 type, from lvm, and mdraid, and some other bsd partition syntax
+       # note that linux 3.2.45-grsec-9th types kernels have this type of partition name: /dev/xvdc (no number, letter)
+       /^\/dev\/(mapper\/|[hsv]d[a-z][0-9]+|dm[-]?[0-9]+|ada[0-9]+p[0-9]+.*|md[0-9]+|[aw]d[0-9]+s.*|xvd[a-z])/ {
                # this handles the case where the first item is too long
                # and makes df wrap output to next line, so here we advance
                # it to the next line for that single case. Using df -P should
                # make this unneeded but leave it in just in case
-               if ( NF < 5 && $0 !~ /.*%/ ) {
+               if ( NF < 6 && $0 !~ /.*%/ ) {
+                       devSet = devSet "~" $1 "~"
                        getline
                }
                # if the first item caused a wrap, use one less than standard
                # testing for the field with % in it, ie: 34%, then go down from there
                # this also protects against cases where the mount point has a space in the
                # file name, thus breaking going down from $NF directly.
-               if ( $4 ~ /.*%/ ) {
-                       used += $2
+               # some bsds will also have only 6 items
+               if ( $5 ~ /.*%/ ) {
+                       devWorking="~" $1 "~"
+                       mountWorking="~" $6 "~"
+                       if ( partitionsSet !~ mountWorking && devSet !~ devWorking ) {
+                               used += $3
+                       }
+                       partitionsSet = partitionsSet mountWorking
+                       # make sure to only include bsd real lines here, ie, short df output
+                       if ( $1 ~ /^\/dev\// ) {
+                               devSet = devSet devWorking
+                       }
                }
                # otherwise use standard
-               else if ( $5 ~ /.*%/ ) {
-                       used += $3
+               else if ( $6 ~ /.*%/ ) {
+                       devWorking="~" $1 "~"
+                       mountWorking="~" $7 "~"
+                       if ( partitionsSet !~ mountWorking && devSet !~ devWorking ) {
+                               used += $4
+                       }
+                       partitionsSet = partitionsSet mountWorking
+                       devSet = devSet devWorking
                }
                # and if this is not detected, give up, we need user data to debug
                else {
@@ -4054,7 +5338,8 @@ get_hdd_data_basic()
                #       size += $3
                # }
                # special case from this data: 8     0  156290904 sda
-               $1 ~ /^(3|22|33|8)$/ && $NF ~ /[hsv]d[a-z]$/ && ( $2 % 16 == 0 || $2 % 16 == 8 ) {
+               # note: vm has 252/253/254 known starter, grsec has 202
+               $1 ~ /^(3|8|22|33|202|252|253|254)$/ && $NF ~ /[hsv]d[a-z]$/ && ( $2 % 16 == 0 || $2 % 16 == 8 ) {
                        size += $3
                }
 
@@ -4076,7 +5361,7 @@ get_hdd_data_basic()
                                print "NA,-" # print an empty array, this will be further handled in the print out function
                        }
                }' $FILE_PARTITIONS ) )
-               log_function_data 'cat' "$FILE_PARTITIONS"
+               log_function_data 'cat' "$FILE_PARTITIONS"
        fi
        IFS="$ORIGINAL_IFS"
        temp_array=${A_HDD_DATA[@]}
@@ -4157,7 +5442,8 @@ get_hard_drive_data_advanced()
        ## then we'll loop through that array looking for matches.
        if [[ -n $( grep -E 'sd[a-z]' <<< ${A_HDD_DATA[@]} ) ]];then
                # first pack the main ls variable so we don't have to keep using ls /dev...
-               ls_disk_by_id="$( ls -l /dev/disk/by-id )"
+               # not all systems have /dev/disk/by-id
+               ls_disk_by_id="$( ls -l /dev/disk/by-id 2>/dev/null )"
                for (( i=0; i < ${#A_HDD_DATA[@]} - 1; i++ ))
                do
                        if [[ -n $( grep -E '^sd[a-z]' <<< ${A_HDD_DATA[$i]} ) ]];then
@@ -4217,6 +5503,29 @@ get_hard_drive_data_advanced()
        eval $LOGFE
 }
 
+# args: $1 - which drive to get serial number of
+get_hdd_serial_number()
+{
+       eval $LOGFS
+       
+       local hdd_serial=''
+       
+       get_partition_dev_data 'id'
+       
+       # lrwxrwxrwx 1 root root  9 Apr 26 09:32 scsi-SATA_ST3160827AS_5MT2HMH6 -> ../../sdc
+       # exit on the first instance
+       hdd_serial=$( gawk '
+       /'$1'$/ {
+               serial=gensub( /^(.+)_([^_]+)$/, "\\2", 1, $9 )
+               print serial
+               exit
+       }' <<< "$DEV_DISK_ID" )
+       
+       echo $hdd_serial
+       log_function_data "hdd serial: $hdd_serial"
+       eval $LOGFE
+}
+
 # a few notes, normally hddtemp requires root, but you can set user rights in /etc/sudoers.
 # args: $1 - /dev/<disk> to be tested for
 get_hdd_temp_data()
@@ -4249,17 +5558,147 @@ get_hdd_temp_data()
        eval $LOGFE
 }
 
+get_init_data()
+{
+       eval $LOGFS
+       
+       local init_type='' init_version='' rc_type='' rc_version='' temp_array=''
+       local ls_run='' strings_init_version=''
+       local runlevel=$( get_runlevel_data )
+       local default_runlevel=$( get_runlevel_default )
+       
+       # this test is pretty solid, if pid 1 is owned by systemd, it is systemd
+       # otherwise that is 'init', which covers the rest of the init systems, I think anyway.
+       # more data may be needed for other init systems.
+       if [[ -e /proc/1/comm && -n $( grep -s 'systemd' /proc/1/comm ) ]];then
+               init_type='systemd'
+               if [[ -n $( type -p systemd ) ]];then
+                       init_version=$( get_de_app_version 'systemd' '^systemd' '2' )
+               fi
+               if [[ -z $init_version && -n $( type -p systemctl ) ]];then
+                       init_version=$( get_de_app_version 'systemctl' '^systemd' '2' )
+               fi
+       else
+               ls_run=$(ls /run)
+               # note: upstart-file-bridge.pid upstart-socket-bridge.pid upstart-udev-bridge.pid
+               if [[ -n $( /sbin/init --version 2>/dev/null | grep 'upstart' ) ]];then
+                       init_type='Upstart'
+                       # /sbin/init --version == init (upstart 1.12.1)
+                       init_version=$( get_de_app_version 'init' 'upstart' '3' )
+               elif [[ -n $( type -p epoch ) ]];then
+                       init_type='Epoch'
+                       # epoch version == Epoch Init System 1.0.1 "Sage"
+                       init_version=$( get_de_app_version 'epoch' '^Epoch' '4' )
+               # missing data: 
+               # http://smarden.org/runit/sv.8.html
+               elif [[ -e /sbin/runit-init || -e /etc/runit || -n $( type -p sv ) ]];then
+                       init_type='runit' # lower case
+                       # no data on version yet
+               elif [[ -f /etc/inittab ]];then
+                       init_type='SysVinit'
+                       if [[ -n $( type -p strings ) ]];then
+                               strings_init_version="$( strings /sbin/init | grep -E 'version[[:space:]]+[0-9]' )"
+                       fi
+                       if [[ -n $strings_init_version ]];then
+                               init_version=$( gawk '{print $2}' <<< "$strings_init_version" )
+                       fi
+               # freebsd at least
+               elif [[ -f /etc/ttys ]];then
+                       init_type='init (bsd)'
+               fi
+               
+               if [[ -n $( grep 'openrc' <<< "$ls_run" ) ]];then
+                       rc_type='OpenRC'
+                       # /sbin/openrc --version == openrc (OpenRC) 0.13
+                       if [[ -n $( type -p openrc ) ]];then
+                               rc_version=$( get_de_app_version 'openrc' '^openrc' '3' )
+                       # /sbin/rc --version == rc (OpenRC) 0.11.8 (Gentoo Linux)
+                       elif [[ -n $( type -p rc ) ]];then
+                               rc_version=$( get_de_app_version 'rc' '^rc' '3' )
+                       fi
+               ## assume sysvrc, but this data is too buggy and weird and inconsistent to have meaning
+               # leaving this off for now
+#              elif [[ -f /etc/inittab ]];then
+#                      rc_type='SysVrc'
+#                      # this is a guess that rc and init are same versions, may need updates / fixes
+#                      rc_version=$init_version
+               fi
+       fi
+       
+       IFS=$'\n'
+       
+       A_INIT_DATA=( 
+       "$init_type"
+       "$init_version"
+       "$rc_type"
+       "$rc_version"
+       "$runlevel"
+       "$default_runlevel" )
+       
+       IFS="$ORIGINAL_IFS"
+       
+       temp_array=${A_INIT_DATA[@]}
+       log_function_data "A_INIT_DATA: $temp_array"
+       
+       eval $LOGFE
+}
+
+get_kernel_version()
+{
+       eval $LOGFS
+       
+       local kernel_version='' ksplice_kernel_version=''
+       
+       kernel_version=$( uname -rm )
+       
+       if [[ -n $( type -p uptrack-uname ) && -n $kernel_version ]];then
+               ksplice_kernel_version=$( uptrack-uname -rm )
+               if [[ $kernel_version != $ksplice_kernel_version ]];then
+                       kernel_version="$ksplice_kernel_version (ksplice)"
+               fi
+       fi
+       log_function_data "kernel_version: $kernel_version - ksplice_kernel_version: $ksplice_kernel_version"
+       
+       echo $kernel_version
+       
+       eval $LOGFE
+}
+
+# args: $1 - v/n 
 get_lspci_data()
 {
        eval $LOGFS
-       local lspci_data="$( lspci -v | gawk '{
-               gsub(/\(prog-if[^)]*\)/,"")
-               sub(/^0000:/, "", $0) # seen case where the 0000: is prepended, rare, but happens
-               print
-       }' )"
+       local lspci_data=''
+
+       if [[ $B_LSPCI == 'true' ]];then
+               lspci_data="$( lspci -$1 | gawk '{
+                       gsub(/\(prog-if[^)]*\)/,"")
+                       sub(/^0000:/, "", $0) # seen case where the 0000: is prepended, rare, but happens
+                       print
+               }' )"
+       fi
        
        echo "$lspci_data"
-       log_function_data 'raw' "lspci_data:\n$lspci_data"
+       log_function_data 'raw' "lspci_data $1:\n$lspci_data"
+       eval $LOGFE
+}
+
+# args: $1 - busid
+get_lspci_chip_id()
+{
+       eval $LOGFS
+       
+       local chip_id=''
+       
+       chip_id=$( gawk '
+       /^'$1'/ {
+               if ( $3 != "" ) {
+                       print $3
+               }
+       }' <<< "$Lspci_n_Data" )
+       
+       echo $chip_id
+       
        eval $LOGFE
 }
 
@@ -4267,24 +5706,17 @@ get_machine_data()
 {
        eval $LOGFS
        local temp_array='' separator='' id_file='' file_data='' array_string=''
-       local id_dir='/sys/class/dmi/id/' dmi_name='' dmi_data='' 
+       local id_dir='/sys/class/dmi/id/' dmi_data='' 
        local machine_files="
        sys_vendor product_name product_version product_serial product_uuid 
        board_vendor board_name board_version board_serial 
        bios_vendor bios_version bios_date 
        "
-       local dmi_names="
-       system-manufacturer system-product-name system-version system-serial-number system-uuid 
-       baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number 
-       bios-vendor bios-version bios-release-date 
-       "
+
        if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
                machine_files="$machine_files
                chassis_vendor chassis_type chassis_version chassis_serial
                "
-               dmi_names="$dmi_names
-               chassis-manufacturer chassis-type chassis-version chassis-serial-number
-               "
        fi
        if [[ -d $id_dir ]];then
                for id_file in $machine_files
@@ -4309,45 +5741,117 @@ get_machine_data()
                                        gsub(/^ +| +$/, "", $0)
                                        gsub(/ [ \t]+/, " ", $0)
                                        print $0
-                               }' < $id_dir$id_file
-                               )
+                               }' < $id_dir$id_file )
                        fi
                        array_string="$array_string$separator$file_data"
                        separator=','
                done
        else
-               if [[ -n $( type -p dmidecode 2>/dev/null ) && -n $( dmidecode 2>/dev/null ) ]];then
+               get_dmidecode_data
+               if [[ -n $DMIDECODE_DATA ]];then
                        if [[ $B_ROOT == 'true' ]];then
                                # this handles very old systems, like Lenny 2.6.26, with dmidecode, but no data
-                               if [[ -z $( dmidecode 2>/dev/null | grep -i 'no smbios or dmi' ) ]];then
+                               if [[ -n $( grep -i 'no smbios ' <<< "$DMIDECODE_DATA" ) ]];then
                                        array_string='dmidecode-no-smbios-dmi-data'
+                               # please note: only dmidecode version 2.11 or newer supports consistently the -s flag
                                else
-                                       for dmi_name in $dmi_names
-                                       do
-                       #                       echo "$dmi_name" >&2
-                                               dmi_data=''
-                                               dmi_data=$( dmidecode -s $dmi_name | gawk '
-                                                       BEGIN {
-                                                               IGNORECASE=1
-                                                       }
-                                                       {
-                                                               gsub(/'"$BAN_LIST_NORMAL"'/, "", $0)
-                                                               gsub(/,/, " ", $0)
-                                                               # yes, there is a typo in a user data set, unknow
-                                                               # Base Board Version|Base Board Serial Number
-                                                               # Chassis Manufacturer|Chassis Version|Chassis Serial Number
-                                                               # System manufacturer|System Product Name|System Version
-                                                               # To Be Filled By O.E.M.
-                                                               sub(/^Base Board .*|^Chassis .*|.*O\.E\.M\..*|.*OEM.*|^Not .*|^System .*|.*unknow.*|.*N\/A.*|none|^To be filled.*/, "", $0) 
-                                                               gsub(/bios|acpi/, "", $0)
-                                                               sub(/http:\/\/www.abit.com.tw\//, "Abit", $0)
-                                                               gsub(/^ +| +$/, "", $0)
-                                                               gsub(/ [ \t]+/, " ", $0)
-                                                               print $0
-                                                       }' )
-                                               array_string="$array_string$separator$dmi_data"
-                                               separator=','
-                                       done
+                                       array_string=$( gawk -F ':' '
+                                       BEGIN {
+                                               IGNORECASE=1
+                                               baseboardManufacturer=""
+                                               baseboardProductName=""
+                                               baseboardSerialNumber=""
+                                               baseboardVersion=""
+                                               biosReleaseDate=""
+                                               biosRevision="" # only available from dmidecode
+                                               biosRomSize="" # only available from dmidecode
+                                               biosVendor=""
+                                               biosVersion=""
+                                               chassisManufacturer=""
+                                               chassisSerialNumber=""
+                                               chassisType=""
+                                               chassisVersion=""
+                                               systemManufacturer=""
+                                               systemProductName=""
+                                               systemVersion=""
+                                               systemSerialNumber=""
+                                               systemUuid=""
+                                               bItemFound="" # we will only output if at least one item was found
+                                               fullString=""
+                                               testString=""
+                                               bSys=""
+                                               bCha=""
+                                               bBio=""
+                                               bBas=""
+                                       }
+                                       /^Bios Information/ {
+                                               while ( getline && !/^$/ ) {
+                                                       if ( $1 ~ /^Release Date/ ) { biosReleaseDate=$2 }
+                                                       if ( $1 ~ /^BIOS Revision/ ) { biosRevision=$2 }
+                                                       if ( $1 ~ /^ROM Size/ ) { biosRomSize=$2 }
+                                                       if ( $1 ~ /^Vendor/ ) { biosVendor=$2 }
+                                                       if ( $1 ~ /^Version/ ) { biosVersion=$2 }
+                                               }
+                                               testString=biosReleaseDate biosRevision biosRomSize biosVendor biosVersion
+                                               if ( testString != ""  ) {
+                                                       bItemFound="true"
+                                               }
+                                               bBio="true"
+                                       }
+                                       /^Base Board Information/ {
+                                               while ( getline && !/^$/ ) {
+                                                       if ( $1 ~ /^Manufacturer/ ) { baseboardManufacturer=$2 }
+                                                       if ( $1 ~ /^Product Name/ ) { baseboardProductName=$2 }
+                                                       if ( $1 ~ /^Serial Number/ ) { baseboardSerialNumber=$2 }
+                                               }
+                                               testString=baseboardManufacturer baseboardProductName baseboardSerialNumber
+                                               if ( testString != ""  ) {
+                                                       bItemFound="true"
+                                               }
+                                               bBas="true"
+                                       }
+                                       /^Chassis Information/ {
+                                               while ( getline && !/^$/ ) {
+                                                       if ( $1 ~ /^Manufacturer/ ) { chassisManufacturer=$2 }
+                                                       if ( $1 ~ /^Serial Number/ ) { chassisSerialNumber=$2 }
+                                                       if ( $1 ~ /^Type/ ) { chassisType=$2 }
+                                                       if ( $1 ~ /^Version/ ) { chassisVersion=$2 }
+                                               }
+                                               testString=chassisManufacturer chassisSerialNumber chassisType chassisVersion
+                                               if ( testString != ""  ) {
+                                                       bItemFound="true"
+                                               }
+                                               bCha="true"
+                                       }
+                                       /^System Information/ {
+                                               while ( getline && !/^$/ ) {
+                                                       if ( $1 ~ /^Manufacturer/ ) { systemManufacturer=$2 }
+                                                       if ( $1 ~ /^Product Name/ ) { systemProductName=$2 }
+                                                       if ( $1 ~ /^Version/ ) { systemVersion=$2 }
+                                                       if ( $1 ~ /^Serial Number/ ) { systemSerialNumber=$2 }
+                                                       if ( $1 ~ /^UUID/ ) { systemUuid=$2 }
+                                               }
+                                               testString=systemManufacturer systemProductName systemVersion systemSerialNumber systemUuid
+                                               if ( testString != ""  ) {
+                                                       bItemFound="true"
+                                               }
+                                               bSys="true"
+                                       }
+                                       ( bSys == "true" && bCha="true" && bBio == "true" && bBas == "true" ) {
+                                               exit # stop the loop
+                                       }
+                                       END {
+                                               if ( bItemFound == "true" ) {
+                                                       fullString = systemManufacturer "," systemProductName "," systemVersion "," systemSerialNumber 
+                                                       fullString = fullString "," systemUuid "," baseboardManufacturer "," baseboardProductName 
+                                                       fullString = fullString "," baseboardVersion "," baseboardSerialNumber "," biosVendor
+                                                       fullString = fullString "," biosVersion "," biosReleaseDate "," chassisManufacturer
+                                                       fullString = fullString "," chassisType "," chassisVersion "," chassisSerialNumber 
+                                                       fullString = fullString ","  biosRevision "," biosRomSize
+                                                       
+                                                       print fullString
+                                               }
+                                       }' <<< "$DMIDECODE_DATA" )
                                fi
                        else
                                array_string='dmidecode-non-root-user'
@@ -4358,15 +5862,16 @@ get_machine_data()
        A_MACHINE_DATA=( $array_string )
        IFS="$ORIGINAL_IFS"
        temp_array=${A_MACHINE_DATA[@]}
+#      echo ${temp_array[@]}
        log_function_data "A_MACHINE_DATA: $temp_array"
        eval $LOGFE
 }
-
+# B_ROOT='true';get_machine_data;exit
 ## return memory used/installed
 get_memory_data()
 {
        eval $LOGFS
-       local memory=''
+       local memory='' memory_full='' 
        if [[ $B_MEMINFO_FILE == 'true' ]];then
                memory=$( gawk '
                /^MemTotal:/ {
@@ -4376,10 +5881,48 @@ get_memory_data()
                        notused+=$2
                }
                END {
-                       used = tot-notused
+                       used = tot - notused
                        printf("%.1f/%.1fMB\n", used/1024, tot/1024)
                }' $FILE_MEMINFO )
                log_function_data 'cat' "$FILE_MEMINFO"
+       elif [[ $B_SYSCTL == 'true' && -n $Sysctl_a_Data ]];then
+               local gawk_fs=': '
+       
+               if [[ $BSD_VERSION == 'openbsd' ]];then
+                       gawk_fs='='
+               fi
+               memory=$( grep -i 'mem' <<< "$Sysctl_a_Data" | gawk -F "$gawk_fs"  '
+               BEGIN {
+                       realMemory=""
+                       freeMemory=""
+               }
+               # freebsd seems to use bytes here
+               /^hw.physmem/ {
+                       gsub(/^[^0-9]+|[^0-9]+$/,"",$2)
+                       realMemory = $2/1024
+                       if ( freeMemory != "" ) {
+                               exit
+                       }
+               }
+               # But, it uses K here. Openbsd does not seem to have this item
+               # this can be either: Free Memory OR Free Memory Pages
+               $1 ~ /^Free Memory/ {
+                       gsub(/[^0-9]/,"",$NF)
+                       freeMemory = $NF
+                       if ( realMemory != "" ) {
+                               exit
+                       }
+               }
+               END {
+                       # hack: temp fix for openbsd: in case no free mem was detected but we have physmem
+                       if ( freeMemory == "" && realMemory != "" ) {
+                               printf("NA/%.1fMB\n", realMemory/1024)
+                       }
+                       else if ( freeMemory != "" && realMemory != "" ) {
+                               used = realMemory - freeMemory
+                               printf("%.1f/%.1fMB\n", used/1024, realMemory/1024)
+                       }
+               }' )
        fi
        echo "$memory"
        log_function_data "memory: $memory"
@@ -4425,15 +5968,15 @@ get_networking_data()
        
        IFS=$'\n'
        A_NETWORK_DATA=( $( 
-       echo "$Lspci_Data" | gawk '
+       echo "$Lspci_v_Data" | gawk '
        BEGIN {
                IGNORECASE=1
                counter=0 # required to handle cases of > 1 instance of the same chipset
        }
        /^[0-9a-f:\.]+ (ethernet|network) (controller|bridge)/ || /^[0-9a-f:\.]+ [^:]+: .*(ethernet|network).*$/ {
                nic=gensub(/^[0-9a-f:\.]+ [^:]+: (.+)$/,"\\1","g",$0)
-               gsub(/realtek semiconductor/, "Realtek", nic)
-               gsub(/davicom semiconductor/, "Davicom", nic)
+               #gsub(/realtek semiconductor/, "Realtek", nic)
+               #gsub(/davicom semiconductor/, "Davicom", nic)
                # The doublequotes are necessary because of the pipes in the variable.
                gsub(/'"$BAN_LIST_NORMAL"'/, "", nic)
                gsub(/,/, " ", nic)
@@ -4466,6 +6009,7 @@ get_networking_data()
                        usePorts=""
                        useModules=""
                        usePciBusId=""
+
                        if ( eth[i] > 1 ) {
                                a[j] = eth[i] "x " i
                        }
@@ -4492,8 +6036,7 @@ get_networking_data()
                        print a[j] "," useDrivers "," usePorts "," useModules, "," usePciBusId
                        j++
                }
-       }'
-       ) )
+       }' ) )
        IFS="$ORIGINAL_IFS"
        get_networking_usb_data
        if [[ $B_SHOW_ADVANCED_NETWORK == 'true' || $B_USB_NETWORKING == 'true' ]];then
@@ -4509,7 +6052,7 @@ get_network_advanced_data()
 {
        eval $LOGFS
        local a_network_adv_working='' if_path='' working_path='' working_uevent_path='' dir_path=''
-       local if_id='' speed='' duplex='' mac_id='' oper_state='' 
+       local if_id='' speed='' duplex='' mac_id='' oper_state=''  chip_id=''
        local usb_data='' usb_vendor='' usb_product='' product_path='' driver_test=''
        
        for (( i=0; i < ${#A_NETWORK_DATA[@]}; i++ ))
@@ -4524,6 +6067,7 @@ get_network_advanced_data()
                mac_id='' 
                oper_state=''
                usb_data=''
+               chip_id=''
                if [[ -z $( grep '^usb-' <<< ${a_network_adv_working[4]} ) ]];then
                        # note although this may exist technically don't use it, it's a virtual path
                        # and causes weird cat errors when there's a missing file as well as a virtual path
@@ -4546,8 +6090,8 @@ get_network_advanced_data()
                        fi
                        # working_path=$( ls /sys/devices/pci*/*/0000:${a_network_adv_working[4]}/net/*/uevent  )
                else
-                       # slice off the usb- part
-                       usb_data=$( cut -d '-' -f 2-4 <<< ${a_network_adv_working[4]} )
+                       # now we'll use the actual vendor:product string instead
+                       usb_data=${a_network_adv_working[10]}
                        usb_vendor=$( cut -d ':' -f 1 <<< $usb_data )
                        usb_product=$( cut -d ':' -f 2 <<< $usb_data )
                        # this grep returns the path plus the contents of the file, with a colon separator, so slice that off
@@ -4621,7 +6165,10 @@ get_network_advanced_data()
                        fi
                fi
                
-               A_NETWORK_DATA[i]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id
+               if [[ -n ${a_network_adv_working[10]} ]];then
+                       chip_id=${a_network_adv_working[10]}
+               fi
+               A_NETWORK_DATA[i]=${a_network_adv_working[0]}","${a_network_adv_working[1]}","${a_network_adv_working[2]}","${a_network_adv_working[3]}","${a_network_adv_working[4]}","$if_id","$oper_state","$speed","$duplex","$mac_id","$chip_id
                IFS="$ORIGINAL_IFS"
        done
 
@@ -4658,18 +6205,19 @@ get_networking_usb_data()
                                gsub( /,/, " ", $0 )
                                gsub(/'"$BAN_LIST_NORMAL"'/, "", $0)
                                gsub(/ [ \t]+/, " ", $0)
-                               sub(/realtek semiconductor/, "Realtek", $0)
-                               sub(/davicom semiconductor/, "Davicom", $0)
-                               sub(/Belkin Components/, "Belkin", $0)
+                               #sub(/realtek semiconductor/, "Realtek", $0)
+                               #sub(/davicom semiconductor/, "Davicom", $0)
+                               #sub(/Belkin Components/, "Belkin", $0)
+                               
                                for ( i=7; i<= NF; i++ ) {
                                        string = string separator $i
                                        separator = " "
                                }
-                               if ( $6 != "" ){
-                                       print string ",,,,usb-" $6
+                               if ( $2 != "" ){
+                                       sub(/:/, "", $4 )
+                                       print string ",,,,usb-" $2 "-" $4 ",,,,,," $6
                                }
-                       }' <<< "$lsusb_data" 
-                       ) )
+                       }' <<< "$lsusb_data" ) )
                        IFS="$ORIGINAL_IFS"
                        if [[ ${#a_usb[@]} -gt 0 ]];then
                                array_count=${#A_NETWORK_DATA[@]}
@@ -4693,14 +6241,23 @@ get_networking_wan_ip_data()
        eval $LOGFS
        local ip=''
 
-       # get ip using wget redirect to stdout. This is a clean, text only IP output url.
-       ip=$( wget -q -O - http://smxi.org/opt/ip.php | gawk -F 'is: ' '{
+       # get ip using wget redirect to stdout. This is a clean, text only IP output url,
+       # single line only, ending in the ip address. May have to modify this in the future
+       # to handle ipv4 and ipv6 addresses but should not be necessary.
+       # awk has bad regex handling so checking it with grep -E instead
+       # ip=$( echo  2001:0db8:85a3:0000:0000:8a2e:0370:7334 | gawk  --re-interval '
+       # ip=$( wget -q -O - $WAN_IP_URL | gawk  --re-interval '
+       ip=$( wget -t 1 -T $WGET_TIMEOUT -q -O - $WAN_IP_URL | gawk  --re-interval '
+       {
                #gsub("\n","",$2")
-               print $2
+               print $NF
        }' )
-
+       # validate the data
        if [[ -z $ip ]];then
                ip='None Detected!'
+       elif [[ -z $( grep -Es \
+       '^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4}:[[:alnum:]]{0,4})$' <<< $ip ) ]];then
+               ip='IP Source Corrupt!'
        fi
        echo "$ip"
        log_function_data "ip: $ip"
@@ -4723,7 +6280,11 @@ get_networking_local_ip_data()
        fi
        if [[ -n "$ip_tool_command" ]];then
                if [[ $ip_tool == 'ifconfig' ]];then
-                       ip_tool_data="$( $ip_tool_command )"
+                       ip_tool_data="$( $ip_tool_command | gawk '
+                       {
+                               line=gensub(/^([a-z]+[0-9][:]?[[:space:]].*)/, "\n\\1", $0)
+                               print line
+                       }' )"
                # note, ip addr does not have proper record separation, so creating new lines explicitly here at start
                # of each IF record item. Also getting rid of the unneeded numeric line starters, now it can be parsed 
                # like ifconfig more or less
@@ -4736,7 +6297,7 @@ get_networking_local_ip_data()
        elif [[ -n "$ip_tool_data" ]];then
                IFS=$'\n' # $ip_tool_command
                A_INTERFACES_DATA=( $( 
-               gawk -v ipTool=$ip_tool '
+               gawk -v ipTool=$ip_tool -v bsdType=$BSD_TYPE '
                BEGIN {
                        IGNORECASE=1
                        interface=""
@@ -4775,6 +6336,18 @@ get_networking_local_ip_data()
                                        if (/inet6 addr:/) {
                                                ifIpV6 = $3
                                        }
+                                       if ( bsdType == "bsd" ) {
+                                               if ( $1 == "inet" ) {
+                                                       ifIp = $2
+                                                       if ( $3 == "netmask" ) {
+                                                               ifMask = $4
+                                                       }
+                                               }
+                                               if ( $0 ~ /inet6.*%/ ) {
+                                                       sub(/%.*/,"",$2)
+                                                       ifIpV6 = $2
+                                               }
+                                       }
                                }
                                else if ( ipTool == "ip" ) {
                                        if ( $1 == "inet" ) {
@@ -4807,8 +6380,7 @@ get_networking_local_ip_data()
                                }
                                j++
                        }
-               }' <<< "$ip_tool_data"
-               ) )
+               }' <<< "$ip_tool_data" ) )
                IFS="$ORIGINAL_IFS"
        else
                A_INTERFACES_DATA=( "Interfaces program $ip_tool present but created no data. " )
@@ -4828,8 +6400,8 @@ get_optical_drive_data()
        local separator='' linked='' disk='' item_string='' proc_info_string='' 
        local dev_disks_links="$( ls /dev/dvd* /dev/cd* /dev/scd* 2>/dev/null  )"
        # get the actual disk dev location, first try default which is easier to run, need to preserve line breaks
-       local dev_disks_real="$( echo "$dev_disks_links" | xargs -l readlink 2>/dev/null | sort -u )"
-       # Some systems don't support xargs -l so we need to do it manually
+       local dev_disks_real="$( echo "$dev_disks_links" | xargs -L 1 readlink 2>/dev/null | sort -u )"
+       # Some systems don't support xargs -L so we need to do it manually
        if [[ -z $dev_disks_real ]];then
                for linked in $dev_disks_links
                do
@@ -4918,8 +6490,7 @@ get_optical_drive_data()
                                        gsub(/^[[:space:]]*|[[:space:]]*$/, "", $0)
                                        gsub(/ [[:space:]]+/, " ", $0)
                                        print $0
-                               }'      <<< $vendor
-                               )
+                               }'      <<< $vendor )
                        fi
                        # this needs to run no matter if there's proc data or not to create the array comma list
                        if [[ $B_SHOW_FULL_OPTICAL == 'true' ]];then
@@ -4976,12 +6547,11 @@ get_optical_drive_data()
                                END {
                                        print speed "," multisession "," mcn "," audio "," cdr "," cdrw "," dvd "," dvdr "," dvdram
                                }
-                               ' <<< "$proc_cdrom"
-                               )
+                               ' <<< "$proc_cdrom" )
                        fi
                        item_string="$item_string,$vendor,$model,$rev_number,$proc_info_string,$state"
                        echo $item_string
-               done
+               done \
                ) )
                IFS="$ORIGINAL_IFS"
        fi
@@ -4994,15 +6564,33 @@ get_partition_data()
 {
        eval $LOGFS
        
-       local a_partition_working='' dev_item='' temp_array=''
+       local a_partition_working='' dev_item='' temp_array='' dev_working_item='' 
+       local swap_data='' df_string='' main_partition_data='' df_test='' fs_type=''
+       local mount_data='' dev_bsd_item=''
        #local excluded_file_types='--exclude-type=aufs --exclude-type=tmpfs --exclude-type=iso9660'
        # df doesn't seem to work in script with variables like at the command line
        # added devfs linprocfs sysfs fdescfs which show on debian kfreebsd kernel output
-       local main_partition_data="$( df -h -T -P --exclude-type=aufs --exclude-type=squashfs --exclude-type=unionfs --exclude-type=devtmpfs --exclude-type=tmpfs --exclude-type=iso9660 --exclude-type=devfs --exclude-type=linprocfs --exclude-type=sysfs --exclude-type=fdescfs )"
-       local swap_data="$( swapon -s )"
-       # set dev disk label/uuid data globals
-       get_partition_uuid_label_data 'label'
-       get_partition_uuid_label_data 'uuid'
+       if [[ -z $BSD_TYPE ]];then
+               swap_data="$( swapon -s 2>/dev/null )"
+               df_string='df -h -T -P --exclude-type=aufs --exclude-type=devfs --exclude-type=devtmpfs 
+               --exclude-type=fdescfs --exclude-type=iso9660 --exclude-type=linprocfs --exclude-type=procfs
+               --exclude-type=squashfs --exclude-type=sysfs --exclude-type=tmpfs --exclude-type=unionfs'
+       else
+               swap_data="$( swapctl -l 2>/dev/null )"
+               # default size is 512, -H only for size in human readable format
+               # older bsds don't support -T, pain, so we'll use partial output there
+               df_test=$( df -H -T 2>/dev/null )
+               if [[ -n $df_test ]];then
+                       df_string='df -H -T'
+               else
+                       df_string='df -H'
+               fi
+       fi
+       main_partition_data="$( eval $df_string )"
+       # set dev disk label/mapper/uuid data globals
+       get_partition_dev_data 'label'
+       get_partition_dev_data 'mapper'
+       get_partition_dev_data 'uuid'
        
        log_function_data 'raw' "main_partition_data:\n$main_partition_data\n\nswap_data:\n$swap_data"
        
@@ -5018,31 +6606,54 @@ get_partition_data()
        # $NF = partition name; $(NF - 4) = partition size; $(NF - 3) = used, in gB; $(NF - 1) = percent used
        ## note: by subtracting from the last field number NF, we avoid a subtle issue with LVM df output, where if
        ## the first field is too long, it will occupy its own line, this way we are getting only the needed data
-       A_PARTITION_DATA=( $( echo "$main_partition_data" | gawk '
+       A_PARTITION_DATA=( $( echo "$main_partition_data" | gawk -v bsdType=$BSD_TYPE '
        BEGIN {
                IGNORECASE=1
+               fileSystem=""
        }
        # this has to be nulled for every iteration so it does not retain value from last iteration
        devBase=""
+       # skipping these file systems because bsds do not support df --exclude-type=<fstype>
+       # note that using $1 to handle older bsd df, which do not support -T. This will not be reliable but we will see
+       ( bsdType != "" ) {
+               # skip if non disk/partition, or if raid primary id, which will not have a / in it
+               if ( $1 ~ /^(aufs|devfs|devtmpfs|fdescfs|iso9660|linprocfs|procfs|squashfs|sysfs|tmpfs|type|unionfs)$/ || 
+               $1 ~ /^([^\/]+)$/ ) {
+                       # note use next, not getline or it does not work right
+                       next 
+               }
+       }
        # this is required because below we are subtracting from NF, so it has to be > 5
        # the real issue is long file system names that force the wrap of df output: //fileserver/main
        # but we still need to handle more dynamically long space containing file names, but later.
        # Using df -P should fix this, ie, no wrapping of line lines, but leaving this for now
        ( NF < 6 ) && ( $0 !~ /[0-9]+%/ ) {
                # set the dev location here for cases of wrapped output
-               if ( NF == 1 ){
+               if ( NF == 1 ) {
                        devBase=gensub( /^(\/dev\/)(.+)$/, "\\2", 1, $1 )
                }
                getline
        }
+       
        # next set devBase if it didn not get set above here
-       ( $1 ~ /^\/dev\// ) && ( devBase == "" ) {
+       ( devBase == "" ) && ( $1 ~ /^\/dev\/|:\/|\/\// ) {
                devBase=gensub( /^(\/dev\/)(.+)$/, "\\2", 1, $1 )
        }
+       # this handles zfs type devices/partitions, which do not start with / but contain /
+       ( bsdType != "" && devBase == "" && $1 ~ /^[^\/]+\/.+/ ) {
+               devBase=gensub( /^([^\/]+\/)([^\/]+)$/, "non-dev-\\1\\2", 1, $1 )
+       }
        # this handles yet another fredforfaen special case where a mounted drive
        # has the search string in its name
        $NF ~ /^\/$|^\/boot$|^\/var$|^\/home$|^\/tmp$|^\/usr$/ {
-               print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",main," $(NF - 5) "," devBase 
+               # note, older df in bsd do not have file system column
+               if ( NF == "7" && $(NF - 1) ~ /[0-9]+%/ ) {
+                       fileSystem=$(NF - 5)
+               }
+               else {
+                       fileSystem=""
+               }
+               print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",main," fileSystem "," devBase 
        }
        # skip all these, including the first, header line. Use the --exclude-type
        # to handle new filesystems types we do not want listed here
@@ -5051,38 +6662,73 @@ get_partition_data()
                # the test show the wrong data in each of the fields, if no x%, then do not use
                # using 3 cases, first default, standard, 2nd, 3rd, handles one and two spaces in name
                if ( $(NF - 1) ~ /[0-9]+%/ ) {
-                       print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",secondary," $(NF - 5) "," devBase 
+                       # note, older df in bsd do not have file system column
+                       if ( NF == "7" ) {
+                               fileSystem=$(NF - 5)
+                       }
+                       else {
+                               fileSystem=""
+                       }
+                       print $NF "," $(NF - 4) "," $(NF - 3) "," $(NF - 1) ",secondary," fileSystem "," devBase 
                }
                # these two cases construct the space containing name
                else if ( $(NF - 2) ~ /[0-9]+%/ ) {
-                       print $(NF - 1) " " $NF "," $(NF - 5) "," $(NF - 4) "," $(NF - 2) ",secondary," $(NF - 6) "," devBase
+                       # note, older df in bsd do not have file system column
+                       if ( NF == "8" && $(NF - 6) !~ /^[0-9]+/ ) {
+                               fileSystem=$(NF - 6)
+                       }
+                       else {
+                               fileSystem=""
+                       }
+                       print $(NF - 1) " " $NF "," $(NF - 5) "," $(NF - 4) "," $(NF - 2) ",secondary," fileSystem "," devBase
                }
                else if ( $(NF - 3) ~ /[0-9]+%/ ) {
-                       print $(NF - 2) " " $(NF - 1) " " $NF "," $(NF - 6) "," $(NF - 5) "," $(NF - 3) ",secondary," $(NF - 7) "," devBase 
+                       # note, older df in bsd do not have file system column
+                       if ( NF == "9" && $(NF - 7) !~ /^[0-9]+/ ) {
+                               fileSystem=$(NF - 7)
+                       }
+                       else {
+                               fileSystem=""
+                       }
+                       print $(NF - 2) " " $(NF - 1) " " $NF "," $(NF - 6) "," $(NF - 5) "," $(NF - 3) ",secondary," fileSystem "," devBase 
                }
-       }
-       ' )
+       }' )
        
        # now add the swap partition data, don't want to show swap files, just partitions,
        # though this can include /dev/ramzswap0. Note: you can also use /proc/swaps for this
        # data, it's the same exact output as swapon -s
-       $( echo "$swap_data" | gawk '
+       $( echo "$swap_data" | gawk -v bsdType=$BSD_TYPE '
        BEGIN {
                swapCounter = 1
+               usedHolder=""
+               sizeHolder=""
        }
        /^\/dev/ {
-               size = sprintf( "%.2f", $3*1024/1000**3 )
+               if ( bsdType == "" ) {
+                       usedHolder=$4
+                       sizeHolder=$3
+               }
+               else {
+                       usedHolder=$3
+                       sizeHolder=$2
+               }
+               size = sprintf( "%.2f", sizeHolder*1024/1000**3 )
                devBase = gensub( /^(\/dev\/)(.+)$/, "\\2", 1, $1 )
-               used = sprintf( "%.2f", $4*1024/1000**3 )
-               percentUsed = sprintf( "%.0f", ( $4/$3 )*100 )
+               used = sprintf( "%.2f", usedHolder*1024/1000**3 )
+               percentUsed = sprintf( "%.0f", ( usedHolder/sizeHolder )*100 )
                print "swap-" swapCounter "," size "GB," used "GB," percentUsed "%,main," "swap," devBase
                swapCounter = ++swapCounter
        }' ) )
        IFS="$ORIGINAL_IFS"
        
        temp_array=${A_PARTITION_DATA[@]}
+       # echo $temp_array
        log_function_data "1: A_PARTITION_DATA:\n$temp_array"
        
+       # we'll use this for older systems where no filesystem type is shown in df
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               mount_data="$( mount )"
+       fi
        # now we'll handle some fringe cases where irregular df -hT output shows /dev/disk/.. instead of 
        # /dev/h|sdxy type data for column 1, . A_PARTITION_DATA[6]
        # Here we just search for the uuid/label and then grab the end of the line to get the right dev item.
@@ -5091,33 +6737,54 @@ get_partition_data()
                IFS=","
                a_partition_working=( ${A_PARTITION_DATA[i]} )
                IFS="$ORIGINAL_IFS"
-               dev_item='' # reset each loop
+               
+               dev_item=${a_partition_working[6]} # reset each loop
+               fs_type=${a_partition_working[5]}
+               # older bsds have df minus -T so can't get fs type easily, try using mount instead
+               if [[ $BSD_TYPE == 'bsd' && -z $fs_type && -n $dev_item ]];then
+                       dev_bsd_item=$( sed -e 's/non-dev-//' -e 's|/|\\/|g' <<< "$dev_item" )
+                       fs_type=$( gawk -F '(' '
+                       /'$dev_bsd_item'/ {
+                               # slice out everything after / plus the first comma
+                               sub( /,.*/, "", $2 )
+                               print $2
+                               exit
+                       }' <<< "$mount_data" )
+               fi
                # note: for swap this will already be set
-               if [[ -n $( grep -E '(by-uuid|by-label)' <<< ${a_partition_working[6]} ) ]];then
+               if [[ -n $( grep -E '(by-uuid|by-label)' <<< $dev_item ) ]];then
+                       dev_working_item=$( basename $dev_item )
                        if [[ -n $DEV_DISK_UUID ]];then
                                dev_item=$( echo "$DEV_DISK_UUID" | gawk '
-                                       /'$( basename ${a_partition_working[6]} )'/ {
+                                       $0 ~ /[ /t]'$dev_working_item'[ /t]/ {
                                                item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
                                                print item
+                                               exit
                                        }' )
                        fi
                        # if we didn't find anything for uuid try label
                        if [[ -z $dev_item && -n $DEV_DISK_LABEL ]];then
                                dev_item=$( echo "$DEV_DISK_LABEL" | gawk '
-                                       /'$( basename ${a_partition_working[6]} )'/ {
+                                       $0 ~ /[ /t]'$dev_working_item'[ /t]/ {
                                                item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
                                                print item
+                                               exit
                                        }' )
                        fi
-                       if [[ -n $dev_item ]];then
-                               # assemble everything we could get for dev/h/dx, label, and uuid
-                               IFS=","
-                               A_PARTITION_DATA[i]=${a_partition_working[0]}","${a_partition_working[1]}","${a_partition_working[2]}","${a_partition_working[3]}","${a_partition_working[4]}","${a_partition_working[5]}","$dev_item
-                               IFS="$ORIGINAL_IFS"
-                       fi
+               elif [[ -n $( grep 'mapper/' <<< $dev_item ) ]];then
+                       # get the mapper actual dev item
+                       dev_item=$( get_dev_processed_item "$dev_item" )
+               fi
+               
+               if [[ -n $dev_item ]];then
+                       # assemble everything we could get for dev/h/dx, label, and uuid
+                       IFS=","
+                       A_PARTITION_DATA[i]=${a_partition_working[0]}","${a_partition_working[1]}","${a_partition_working[2]}","${a_partition_working[3]}","${a_partition_working[4]}","$fs_type","$dev_item
+                       IFS="$ORIGINAL_IFS"
                fi
        done
        temp_array=${A_PARTITION_DATA[@]}
+       # echo $temp_array
        log_function_data "2: A_PARTITION_DATA:\n$temp_array"
        if [[ $B_SHOW_LABELS == 'true' || $B_SHOW_UUIDS == 'true' ]];then
                get_partition_data_advanced
@@ -5132,9 +6799,10 @@ get_partition_data_advanced()
        local a_partition_working='' dev_partition_data=''
        local dev_item='' dev_label='' dev_uuid='' temp_array=''
        local mount_point=''
-       # set dev disk label/uuid data globals
-       get_partition_uuid_label_data 'label'
-       get_partition_uuid_label_data 'uuid'
+       # set dev disk label/mapper/uuid data globals
+       get_partition_dev_data 'label'
+       get_partition_dev_data 'mapper'
+       get_partition_dev_data 'uuid'
 
        if [[ $B_MOUNTS_FILE == 'true' ]];then
                for (( i=0; i < ${#A_PARTITION_DATA[@]}; i++ ))
@@ -5145,6 +6813,7 @@ get_partition_data_advanced()
                        
                        # note: for swap this will already be set
                        if [[ -z ${a_partition_working[6]} ]];then
+                               
                                mount_point=$( sed 's|/|\\/|g'  <<< ${a_partition_working[0]} )
                                #echo mount_point $mount_point
                                dev_partition_data=$( gawk '
@@ -5196,6 +6865,7 @@ get_partition_data_advanced()
                                                }
                                        }
                                        print partition "," label "," uuid
+                                       exit
                                }'      $FILE_MOUNTS )
 
                                # assemble everything we could get for dev/h/dx, label, and uuid
@@ -5207,11 +6877,14 @@ get_partition_data_advanced()
                        IFS=","
                        a_partition_working=( ${A_PARTITION_DATA[i]} )
                        IFS="$ORIGINAL_IFS"
-
-                       dev_item=${a_partition_working[6]}
+                       # get the mapper actual dev item first, in case it's mapped
+                       dev_item=$( get_dev_processed_item "${a_partition_working[6]}" )
+                       # make sure not to slice off rest if it's a network mounted file system
+                       if [[ -n $dev_item && -z $( grep -E '(^//|:/)' <<< $dev_item ) ]];then
+                               dev_item=$( basename $dev_item ) ## needed to avoid error in case name still has / in it
+                       fi
                        dev_label=${a_partition_working[7]}
                        dev_uuid=${a_partition_working[8]}
-                       
                        # then if dev data/uuid is incomplete, try to get missing piece
                        # it's more likely we'll get a uuid than a label. But this should get the
                        # dev item set no matter what, so then we can get the rest of any missing data
@@ -5219,33 +6892,38 @@ get_partition_data_advanced()
                        if [[ -z $dev_item ]];then
                                if [[ -n $DEV_DISK_UUID && -n $dev_uuid ]];then
                                        dev_item=$( echo "$DEV_DISK_UUID" | gawk '
-                                               /'$dev_uuid'/ {
+                                               $0 ~ /[ \t]'$dev_uuid'[ \t]/ {
                                                        item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
                                                        print item
+                                                       exit
                                                }' )
                                elif [[ -n $DEV_DISK_LABEL && -n $dev_label ]];then
                                        dev_item=$( echo "$DEV_DISK_LABEL" | gawk '
                                                # first we need to change space x20 in by-label back to a real space
                                                #gsub( /x20/, " ", $0 )
                                                # then we can see if the string is there
-                                               /'$dev_label'/ {
+                                               $0 ~ /[ \t]'$dev_label'[ \t]/ {
                                                        item=gensub( /..\/..\/(.+)/, "\\1", 1, $NF )
                                                        print item
+                                                       exit
                                                }' )
                                fi
                        fi
+                       
                        # this can trigger all kinds of weird errors if it is a non /dev path, like: remote:/machine/name
                        if [[ -n $dev_item && -z $( grep -E '(^//|:/)' <<< $dev_item ) ]];then
                                if [[ -n $DEV_DISK_UUID && -z $dev_uuid ]];then
                                        dev_uuid=$( echo "$DEV_DISK_UUID" | gawk  '
                                        /'$dev_item'$/ {
                                                print $(NF - 2)
+                                               exit
                                        }' )
                                fi
                                if [[ -n $DEV_DISK_LABEL && -z $dev_label ]];then
                                        dev_label=$( echo "$DEV_DISK_LABEL" | gawk '
                                        /'$dev_item'$/ {
                                                print $(NF - 2)
+                                               exit
                                        }' )
                                fi
                        fi
@@ -5256,19 +6934,77 @@ get_partition_data_advanced()
                        IFS="$ORIGINAL_IFS"
                done
                log_function_data 'cat' "$FILE_MOUNTS"
+       else
+               if [[ $BSD_TYPE == 'bsd' ]];then
+                       get_partition_data_advanced_bsd
+               fi
        fi
        temp_array=${A_PARTITION_DATA[@]}
+       # echo $temp_array
        log_function_data "3-advanced: A_PARTITION_DATA:\n$temp_array"
        eval $LOGFE
 }
 
-# args: $1 - uuid/label
-get_partition_uuid_label_data()
+get_partition_data_advanced_bsd()
+{
+       eval $LOGFS
+       local gpart_data="$( gpart list 2>/dev/null )"
+       local a_partition_working='' label_uuid='' dev_item=''
+       
+       if [[ -n $gpart_data ]];then
+               for (( i=0; i < ${#A_PARTITION_DATA[@]}; i++ ))
+               do
+                       IFS=","
+                       a_partition_working=( ${A_PARTITION_DATA[i]} )
+                       IFS="$ORIGINAL_IFS"
+                       # no need to use the rest of the name if it's not a straight /dev/item
+                       dev_item=$( basename ${a_partition_working[6]} )
+                       
+                       label_uuid=$( gawk -F ':' '
+                       BEGIN {
+                               IGNORECASE=1
+                               label=""
+                               uuid=""
+                       }
+                       /^[0-9]+\.[[:space:]]*Name.*'$dev_item'/ {
+                               while ( getline && $1 !~ /^[0-9]+\.[[:space:]]*Name/ ) {
+                                       if ( $1 ~ /rawuuid/ ) {
+                                               gsub(/^[[:space:]]+|[[:space:]]+$/,"",$2)
+                                               uuid=$2
+                                       }
+                                       if ( $1 ~ /label/ ) {
+                                               gsub(/^[[:space:]]+|[[:space:]]+$|none|\(null\)/,"",$2)
+                                               label=$2
+                                       }
+                               }
+                               print label","uuid
+                               exit
+                       }' <<< "$gpart_data" )
+
+                       # assemble everything we could get for dev/h/dx, label, and uuid
+                       IFS=","
+                       A_PARTITION_DATA[i]=${a_partition_working[0]}","${a_partition_working[1]}","${a_partition_working[2]}","${a_partition_working[3]}","${a_partition_working[4]}","${a_partition_working[5]}","${a_partition_working[6]}","$label_uuid
+                       IFS="$ORIGINAL_IFS"
+               done
+       fi
+       eval $LOGFE
+}
+
+# args: $1 - uuid/label/id/mapper
+get_partition_dev_data()
 {
        eval $LOGFS
        
        # only run these tests once per directory to avoid excessive queries to fs
        case $1 in
+               id)
+                       if [[ $B_ID_SET != 'true' ]];then
+                               if [[ -d /dev/disk/by-id ]];then
+                                       DEV_DISK_ID="$( ls -l /dev/disk/by-id )"
+                               fi
+                               B_ID_SET='true'
+                       fi
+                       ;;
                label)
                        if [[ $B_LABEL_SET != 'true' ]];then
                                if [[ -d /dev/disk/by-label ]];then
@@ -5277,6 +7013,14 @@ get_partition_uuid_label_data()
                                B_LABEL_SET='true'
                        fi
                        ;;
+               mapper)
+                       if [[ $B_MAPPER_SET != 'true' ]];then
+                               if [[ -d /dev/mapper ]];then
+                                       DEV_DISK_MAPPER="$( ls -l /dev/mapper )"
+                               fi
+                               B_MAPPER_SET='true'
+                       fi
+                       ;;
                uuid)
                        if [[ $B_UUID_SET != 'true' ]];then
                                if [[ -d /dev/disk/by-uuid ]];then
@@ -5285,43 +7029,262 @@ get_partition_uuid_label_data()
                                B_UUID_SET='true'
                        fi
                        ;;
+               
        esac
-       log_function_data 'raw' "DEV_DISK_LABEL:\n$DEV_DISK_LABEL\n\nDEV_DISK_UUID:\n$DEV_DISK_UUID"
+       log_function_data 'raw' "DEV_DISK_LABEL:\n$DEV_DISK_LABEL\n\nDEV_DISK_UUID:\n$DEV_DISK_UUID\n\nDEV_DISK_ID:\n$DEV_DISK_ID\n\nDEV_DISK_MAPPER:\n$DEV_DISK_MAPPER"
        # debugging section, uncomment to insert user data
 #      DEV_DISK_LABEL='
 #
 # '
 # DEV_DISK_UUID='
 #
+# '
+# DEV_DISK_MAPPER='
+#
 # '
        eval $LOGFE
 }
 
+# args: $1 - dev item, check for mapper, then get actual dev item if mapped
+# eg: lrwxrwxrwx 1 root root       7 Sep 26 15:10 truecrypt1 -> ../dm-2 
+get_dev_processed_item()
+{
+       eval $LOGFS
+       
+       local dev_item=$1 dev_return=''
+       
+       if [[ -n $DEV_DISK_MAPPER && -n $( grep -is 'mapper/' <<< $dev_item ) ]];then
+               dev_return=$( echo "$DEV_DISK_MAPPER" | gawk '
+               $( NF - 2 ) ~ /^'$( basename $dev_item )'$/ {
+                       item=gensub( /..\/(.+)/, "\\1", 1, $NF )
+                       print item
+               }' )
+       fi
+       if [[ -z $dev_return ]];then
+               dev_return=$dev_item
+       fi
+       
+       echo $dev_return
+
+       eval $LOGFE
+}
+
 get_patch_version_string()
 {
-       local script_patch_number=$( sed 's/^[0]\+//' <<< $SCRIPT_PATCH_NUMBER )
-       if [[ -n $script_patch_number ]];then
-               script_patch_number="-$script_patch_number"
+       local patch_version_number=$( sed 's/^[0]*//' <<< $SCRIPT_PATCH_NUMBER )
+       
+       if [[ -n $patch_version_number ]];then
+               patch_version_number="-$patch_version_number"
+               # for cases where it was for example: 00-bsd cleaned to --bsd trim out one -
+               if [[ -n $( grep '\--' <<< $patch_version_number ) ]];then
+                       patch_version_number=$( sed 's/--/-/' <<< $patch_version_number )
+               fi
        fi
-       echo $script_patch_number
+       echo $patch_version_number
+}
+
+get_pciconf_data()
+{
+       eval $LOGFS
+       
+       local pciconf_data='' temp_array=''
+       
+       if [[ $B_PCICONF == 'true' ]];then
+               pciconf_data="$( pciconf -lv 2>/dev/null )"
+               if [[ -n $pciconf_data ]];then
+                       pciconf_data=$( gawk '
+                       BEGIN {
+                               IGNORECASE=1
+                       }
+                       {
+                                       gsub(/'"$BAN_LIST_NORMAL"'/, "", $0)
+                                       gsub(/[[:space:]]+=[[:space:]]+/, "=",$0)
+                                       gsub(/^[[:space:]]+|'"'"'|\"|,/, "", $0)
+                                       gsub(/=0x/,"=",$0)
+                                       # line=gensub(/.*[[:space:]]+(class=[^[:space:]]*|card=[^[:space:]]*)|chip=[^[:space:]]*|rev=[^[:space:]]*|hdr=[^[:space:]]*).*/,"\n\\1","g",$0)
+                                       line=gensub(/(.*@.*)/,"\n\\1",$0)
+                                       print line
+                       }' <<< "$pciconf_data" )
+                       # create empty last line with this spacing trick
+                       pciconf_data="$pciconf_data
+
+EOF"
+                       # echo "$pciconf_data"
+                       # now insert into arrays
+                       IFS=$'\n'
+                       A_PCICONF_DATA=( $( gawk '
+                       BEGIN {
+                               fullLine=""
+                               driver=""
+                               vendor=""
+                               device=""
+                               class=""
+                               chipId=""
+                               pciId=""
+                               itemData=""
+                               IGNORECASE=1
+                       }
+                       /^.*@/ {
+                               pciId=""
+                               vendor=""
+                               class=""
+                               driver=""
+                               device=""
+                               chipId=""
+                               itemData=$1
+                               
+                               driver=gensub(/^([^@]+)@.*/, "\\1", itemData )
+                               pciId=gensub(/^.*@pci([0-9\.:]+).*/, "\\1", itemData )
+                               sub(/:$/, "", pciId)
+                               itemData=$4
+                               chipId=gensub(/.*chip=([0-9a-f][0-9a-f][0-9a-f][0-9a-f])([0-9a-f][0-9a-f][0-9a-f][0-9a-f]).*/, "\\2:\\1", itemData )
+                               if ( $2 == "class=020000" ) {
+                                       class="network"
+                               }
+                               else if ( $2 == "class=030000" ) {
+                                       class="display"
+                               }
+                               else if ( $2 == "class=040300" ) {
+                                       class="audio"
+                               }
+                               
+                               while ( getline && $1 !~ /^$/ ) {
+                                       if ( $1 ~ /^vendor/ ) {
+                                               sub(/^vendor=/, "", $1 )
+                                               vendor=$0
+                                       }
+                                       else if ( $1 ~ /^device/ ) {
+                                               sub(/^device=/, "", $1 )
+                                               device=$0
+                                       }
+                                       else if ( $1 ~ /^class=/ && class == "" ) {
+                                               sub(/^class=/, "", $1)
+                                               class=$0
+                                       }
+                               }
+                               if ( device == "" ) {
+                                       device=vendor
+                               }
+                               
+                               fullLine=class "," device "," vendor "," driver "," pciId "," chipId
+                               print fullLine
+                       
+                       }' <<< "$pciconf_data" ))
+                       IFS="$ORIGINAL_IFS"
+               fi
+       else
+               A_PCICONF_DATA='pciconf-not-installed'
+       fi
+       B_PCICONF_SET='true'
+       temp_array=${A_PCICONF_DATA[@]}
+       log_function_data "$temp_array"
+       log_function_data "$pciconf_data"
+       eval $LOGFE
+}
+
+# packs standard card arrays using the pciconf stuff
+# args: $1 - audio/network/display - matches first item in A_PCICONF_DATA arrays
+get_pciconf_card_data()
+{
+       eval $LOGFS
+       local a_temp='' array_string='' j=0 device_string=''
+       local ip_tool_command=$( type -p ifconfig )
+       local mac='' state='' speed='' duplex='' network_string=''
+       
+       for (( i=0;i<${#A_PCICONF_DATA[@]};i++ ))
+       do
+               IFS=','
+               a_temp=( ${A_PCICONF_DATA[i]} )
+               IFS="$ORIGINAL_IFS"
+               
+               if [[ ${a_temp[0]} == $1 ]];then
+                       # don't print the vendor if it's already in the device name
+                       if [[ -z $( grep -i "${a_temp[2]}" <<< "${a_temp[1]}" ) ]];then
+                               device_string="${a_temp[2]} ${a_temp[1]}"
+                       else
+                               device_string=${a_temp[1]}
+                       fi
+                       case $1 in
+                               audio)
+                                       array_string="$device_string,${a_temp[3]},,,${a_temp[4]},,${a_temp[5]}"
+                                       A_AUDIO_DATA[j]=$array_string
+                                       ;;
+                               display)
+                                       array_string="$device_string,${a_temp[4]},${a_temp[5]}"
+                                       A_GRAPHICS_CARD_DATA[j]=$array_string
+                                       ;;
+                               network)
+                                       if [[ -n $ip_tool_command && -n ${a_temp[3]} ]];then
+                                               network_string=$(       $ip_tool_command ${a_temp[3]} | gawk '
+                                               BEGIN {
+                                                       IGNORECASE=1
+                                                       mac=""
+                                                       state=""
+                                                       speed=""
+                                                       duplex=""
+                                               }
+                                               /^[[:space:]]*ether/ {
+                                                       mac = $2
+                                               }
+                                               /^[[:space:]]*media/ {
+                                                       if ( $0 ~ /<.*>/ ) {
+                                                               duplex=gensub(/.*<([^>]+)>.*/,"\\1",$0)
+                                                       }
+                                                       if ( $0 ~ /\(.*\)/ ) {
+                                                               speed=gensub(/.*\(([^<[:space:]]+).*\).*/,"\\1",$0)
+                                                       }
+                                               }
+                                               /^[[:space:]]*status/ {
+                                                       sub(/.*status[:]?[[:space:]]*/,"", $0)
+                                                       state=$0
+                                               }
+                                               END {
+                                                       print state "~" speed "~" mac "~" duplex
+                                               }')
+                                       fi
+                                       if [[ -n $network_string ]];then
+                                               mac=$( cut -d '~' -f 3 <<< $network_string )
+                                               state=$( cut -d '~' -f 1 <<< $network_string )
+                                               speed=$( cut -d '~' -f 2 <<< $network_string )
+                                               duplex=$( cut -d '~' -f 4 <<< $network_string )
+                                       fi
+                                       array_string="$device_string,${a_temp[3]},,,${a_temp[4]},${a_temp[3]},$state,$speed,$duplex,$mac,${a_temp[5]}"
+                                       A_NETWORK_DATA[j]=$array_string
+                                       ;;
+                       esac
+                       ((j++))
+               fi
+       done
+       
+       eval $LOGFE
 }
 
 # args: $1 - type cpu/mem 
-get_ps_data()
+get_ps_tcm_data()
 {
        eval $LOGFS
-       local array_length='' reorder_temp='' i=0 head_tail='' sort_type=''
+       local array_length='' reorder_temp='' i=0 head_tail='' sort_type='' ps_data=''
        
        # bummer, have to make it more complex here because of reverse sort
        # orders in output, pesky lack of support of +rss in old systems
        case $1 in
                mem)
-                       head_tail='head'
-                       sort_type='-rss'
+                       if [[ $BSD_TYPE != 'bsd' ]];then
+                               sort_type='ps aux --sort -rss'
+                               head_tail='head'
+                       else
+                               sort_type='ps aux -m'
+                               head_tail='head'
+                       fi
                        ;;
                cpu)
-                       head_tail='tail'
-                       sort_type='%cpu'
+                       if [[ $BSD_TYPE != 'bsd' ]];then
+                               sort_type='ps aux --sort %cpu'
+                               head_tail='tail'
+                       else
+                               sort_type='ps aux -r'
+                               head_tail='head'
+                       fi
                        ;;
        esac
        
@@ -5330,10 +7293,12 @@ get_ps_data()
                PS_THROTTLED=$PS_COUNT
                PS_COUNT=5
        fi
+       # use eval here to avoid glitches with -
+       ps_data="$( eval $sort_type )"
 
        IFS=$'\n'
        # note that inxi can use a lot of cpu, and can actually show up here as the script runs
-       A_PS_DATA=( $( ps aux --sort $sort_type | grep -Ev "($SCRIPT_NAME|%CPU|[[:space:]]ps[[:space:]])" | $head_tail -n $PS_COUNT | gawk '
+       A_PS_DATA=( $( echo "$ps_data" | grep -Ev "($SCRIPT_NAME|%CPU|[[:space:]]ps[[:space:]])" | $head_tail -n $PS_COUNT | gawk '
        BEGIN {
                IGNORECASE=1
                appName=""
@@ -5370,7 +7335,7 @@ get_ps_data()
        # make the array ordered highest to lowest so output looks the way we expect it to
        # this isn't necessary for -rss, and we can't make %cpu ordered the other way, so
        # need to reverse it here. -rss is used because on older systems +rss is not supported
-       if [[ $1 == 'cpu' ]];then
+       if [[ $1 == 'cpu' && $BSD_TYPE != 'bsd' ]];then
                array_length=${#A_PS_DATA[@]}; 
                while (( $i < $array_length/2 ))
                do 
@@ -5387,97 +7352,418 @@ get_ps_data()
        eval $LOGFE
 }
 
+# mdstat syntax information: http://www-01.ibm.com/support/docview.wss?uid=isg3T1011259
+# note that this does NOT use either Disk or Partition information for now, ie, there
+# is no connection between the data types, but the output should still be consistent
+get_raid_data()
+{
+       eval $LOGFS
+       
+       local mdstat=''
+               
+       if [[ $B_MDSTAT_FILE == 'true' ]];then
+               mdstat="$( cat $FILE_MDSTAT 2>/dev/null )"
+       fi
+       
+       if [[ -n $mdstat ]];then
+               # need to make sure there's always a newline in front of each record type, and
+               # also correct possible weird formats for the output from older kernels etc.
+               mdstat="$( sed -e 's/^md/\nmd/' -e 's/^unused[[:space:]]/\nunused /' \
+               -e 's/read_ahead/\nread_ahead/' -e 's/^resync=/\nresync=/' -e 's/^Event/\nEvent/' \
+               -e 's/^[[:space:]]*$//' -e 's/[[:space:]]read_ahead/\nread_ahead/' <<< "$mdstat" )"
+               # some fringe cases do not end as expected, so need to add newlines plus EOF to make sure while loop doesn't spin
+               mdstat=$( echo -e "$mdstat\n\nEOF" )
+
+               IFS=$'\n'
+               A_RAID_DATA=( $(
+               gawk '
+               BEGIN {
+                       IGNORECASE=1
+                       RS="\n"
+               }
+               
+               /^personalities/ {
+                       KernelRaidSupport = gensub(/personalities[[:space:]]*:[[:space:]]*(.*)/, "\\1", 1, $0)
+                       # clean off the brackets
+                       gsub(/[\[\]]/,"",KernelRaidSupport)
+                       print "KernelRaidSupport," KernelRaidSupport
+               }
+               /^read_ahead/ {
+                       ReadAhead=gensub(/read_ahead (.*)/, "\\1", 1 )
+                       print "ReadAhead," ReadAhead
+               }
+               /^Event:/ {
+                       print "raidEvent," $NF
+               }
+               # print logic will search for this value and use it to print out the unused devices data
+               /^unused devices/ {
+                       unusedDevices = gensub(/^unused devices:[[:space:]][<]?([^>]*)[>]?.*/, "\\1", 1, $0)
+                       print "UnusedDevices," unusedDevices
+               }
+               
+               /^md/ {
+                       # reset for each record loop through
+                       deviceState = ""
+                       bitmapValues = ""
+                       blocks = ""
+                       chunkSize = ""
+                       components = ""
+                       device = ""
+                       deviceReport = ""
+                       finishTime = ""
+                       recoverSpeed = ""
+                       recoveryProgressBar = ""
+                       recoveryPercent = ""
+                       raidLevel = ""
+                       sectorsRecovered = ""
+                       separator = ""
+                       superBlock = ""
+                       uData = ""
+                       
+                       while ( !/^[[:space:]]*$/  ) {
+                               gsub(/,/, " ", $0 )
+                               gsub(/[[:space:]]+/, " ", $0 )
+                               if ( $0 ~ /^md/ ) {
+                                       device = gensub(/(md.*)[[:space:]]?:/, "\\1", "1", $1 )
+                               }
+                               if ( $0 ~ /mirror|raid[0-9]+/ ) {
+                                       raidLevel = gensub(/(.*)raid([0-9]+)(.*)/, "\\2", "g", $0 )
+                               }
+                               if ( $0 ~ /(active \(auto-read-only\)|active|inactive)/ ) {
+                                       deviceState = gensub(/(.*) (active \(auto-read-only\)|active|inactive) (.*)/, "\\2", "1", $0 )
+                               }
+                               # gawk will not return all the components using gensub, only last one
+                               separator = ""
+                               for ( i=3; i<=NF; i++ ) {
+                                       if ( $i ~ /[hs]d[a-z][0-9]*(\[[0-9]+\])?(\([SF]\))?/ ) {
+                                               components = components separator $i
+                                               separator=" "
+                                       }
+                               }
+                               if ( $0 ~ /blocks/ ) {
+                                       blocks = gensub(/(.*[[:space:]]+)?([0-9]+)[[:space:]]blocks.*/, "\\2", "1", $0)
+                               }
+                               if ( $0 ~ /super[[:space:]][0-9\.]+/ ) {
+                                       superBlock = gensub(/.*[[:space:]]super[[:space:]]([0-9\.]+)[[:space:]].*/, "\\1", "1", $0)
+                               }
+                               if ( $0 ~ /algorithm[[:space:]][0-9\.]+/ ) {
+                                       algorithm = gensub(/.*[[:space:]]algorithm[[:space:]]([0-9\.]+)[[:space:]].*/, "\\1", "1", $0)
+                               }
+                               if ( $0 ~ /\[[0-9]+\/[0-9]+\]/ ) {
+                                       deviceReport = gensub(/.*[[:space:]]\[([0-9]+\/[0-9]+)\][[:space:]].*/, "\\1", "1", $0)
+                                       uData = gensub(/.*[[:space:]]\[([U_]+)\]/, "\\1", "1", $0)
+                               }
+                               # need to avoid this:  bitmap: 0/10 pages [0KB], 16384KB chunk
+                               # while currently all the normal chunks are marked with k, not kb, this can change in the future
+                               if ( $0 ~ /[0-9]+[k] chunk/ && $0 !~ /bitmap/ ) {
+                                       chunkSize = gensub(/(.*) ([0-9]+[k]) chunk.*/, "\\2", "1", $0)
+                               }
+                               if ( $0 ~ /^resync=/ ) {
+                                       sub(/resync=/,"")
+                                       print "resyncStatus," $0
+                               }
+                               if ( $0 ~ /\[[=]*>[\.]*\].*(resync|recovery)/ ) {
+                                       recoveryProgressBar = gensub(/.*(\[[=]*>[\.]*\]).*/, "\\1",1,$0)
+                               }
+                               if ( $0 ~ / (resync|recovery)[[:space:]]*=/ ) {
+                                       recoveryPercent = gensub(/.* (resync|recovery)[[:space:]]*=[[:space:]]*([0-9\.]+%).*/, "\\1~\\2", 1 )
+                                       if ( $0 ~ /[[:space:]]\([0-9]+\/[0-9]+\)/ ) {
+                                               sectorsRecovered = gensub(/.* \(([0-9]+\/[0-9]+)\).*/, "\\1", 1, $0 )
+                                       }
+                                       if ( $0 ~ /finish[[:space:]]*=/ ) {
+                                               finishTime = gensub(/.* finish[[:space:]]*=[[:space:]]*([[0-9\.]+)([a-z]+) .*/, "\\1 \\2", 1, $0 )
+                                       }
+                                       if ( $0 ~ /speed[[:space:]]*=/ ) {
+                                               recoverSpeed = gensub(/.* speed[[:space:]]*=[[:space:]]*([[0-9\.]+)([a-z]+\/[a-z]+)/, "\\1 \\2", 1, $0 )
+                                       }
+                               }
+                               if ( $0 ~ /bitmap/ ) {
+                                       bitmapValues = gensub(/(.*[[:space:]])?bitmap:(.*)/, "\\2", 1, $0 )
+                               }
+                               
+                               getline
+                       }
+                       raidString = device "," deviceState "," raidLevel "," components "," deviceReport "," uData 
+                       raidString = raidString "," blocks "," superBlock "," algorithm "," chunkSize "," bitmapValues
+                       raidString = raidString "," recoveryProgressBar "," recoveryPercent "," sectorsRecovered "," finishTime "," recoverSpeed
+                       
+                       print raidString
+               }
+               ' <<< "$mdstat" ) )
+               IFS="$ORIGINAL_IFS"
+       else
+               if [[ $BSD_TYPE == 'bsd' ]];then
+                       get_raid_data_bsd
+               fi
+       fi
+       B_RAID_SET='true'
+       temp_array=${A_RAID_DATA[@]}
+       log_function_data "A_RAID_DATA: $temp_array"
+#      echo -e "A_RAID_DATA:\n${temp_array}"
+       
+       eval $LOGFE
+}
+
+get_raid_data_bsd()
+{
+       eval $LOGFS
+       local zpool_path=$( type -p zpool 2>/dev/null )
+       local zpool_data=''
+       
+       if [[ -n $zpool_path ]];then
+               B_BSD_RAID='true'
+               # bsd sed does not support inserting a true \n so use this trick
+               zpool_data="$( $zpool_path list -v | sed $SED_RX 's/^([^[:space:]])/\
+\1/' )"
+#              echo "$zpool_data"
+               IFS=$'\n'
+               A_RAID_DATA=( $(
+               gawk '
+               BEGIN {
+                       raidString=""
+                       separator=""
+                       components=""
+                       reportSize=""
+                       blocksAvailable=""
+                       chunkRaidAllocated=""
+               }
+               /SIZE.*ALLOC/ {
+                       sub(/.*ALLOC.*/,"", $0)
+               }
+               /^[^[:space:]]/ {
+                       components=""
+                       separator=""
+                       raidLevel=""
+                       device=$1
+                       deviceState=$7
+                       reportSize=$2
+                       blocksAvailable=$4
+                       chunkRaidAllocated=$3
+                       
+                       # go to the next line now, this will probably need fixing later with weird data sets
+                       getline
+                       if ( $1 != "" ) {
+                               raidLevel="zfs " $1
+                       }
+                       
+                       while ( getline && $1 !~ /^$/ ) {
+                               # print $1
+                               components = components separator $1
+                               separator=" "
+                       }
+
+                       # print $1
+                       raidString = device "," deviceState "," raidLevel "," components "," reportSize "," uData 
+                       raidString = raidString "," blocksAvailable "," superBlock "," algorithm "," chunkRaidAllocated 
+                       # none of these are used currently
+                       raidString = raidString "," bitmapValues  "," recoveryProgressBar "," recoveryPercent 
+                       raidString = raidString "," sectorsRecovered "," finishTime "," recoverSpeed
+                       gsub(/~/,"",raidString)
+                       print raidString
+               }' <<< "$zpool_data" ) )
+               IFS="$ORIGINAL_IFS"
+               get_raid_component_data_bsd
+       fi
+       eval $LOGFE
+}
+
+# note, we've already tested for zpool so no further tests required
+get_raid_component_data_bsd()
+{
+       eval $LOGFS
+       local a_raid_data='' array_string='' component='' component_string='' 
+       local zpool_status='' device='' separator='' component_status=''
+       
+       for (( i=0; i<${#A_RAID_DATA[@]}; i++))
+       do
+               IFS=","
+               a_raid_data=( ${A_RAID_DATA[i]} )
+               IFS="$ORIGINAL_IFS"
+               separator=''
+               component_string=''
+               component_status=''
+               zpool_status=''
+               device=${a_raid_data[0]}
+               zpool_status="$( zpool status $device )"
+               # we will remove ONLINE for status and only use OFFLINE/DEGRADED as tests
+               # for print output display of issues with components
+               for component in ${a_raid_data[3]}
+               do
+                       component_status=$( gawk '
+                       BEGIN {
+                               IGNORECASE=1
+                       }
+                       $1 ~ /^'$component'$/ {
+                               sub( /ONLINE/, "", $2 )
+                               print "'$component'" $2
+                               exit
+                       }' <<< "$zpool_status" )
+                       component_string="$component_string$separator$component_status"
+                       separator=' '
+               done
+               array_string="$device,${a_raid_data[1]},${a_raid_data[2]},$component_string,${a_raid_data[4]}"
+               array_string="$array_string,${a_raid_data[5]},${a_raid_data[6]},${a_raid_data[7]},${a_raid_data[8]}"
+               array_string="$array_string,${a_raid_data[9]},${a_raid_data[10]},${a_raid_data[11]},${a_raid_data[12]},"
+               array_string="$array_string${a_raid_data[13]},${a_raid_data[14]},${a_raid_data[15]}"
+               IFS=","
+               A_RAID_DATA[i]=$array_string
+               IFS="$ORIGINAL_IFS"
+       done
+       
+       eval $LOGFE
+}
+# get_raid_data_bsd;exit
+
 # Repos will be added as we get distro package manager data to create the repo data. 
 # This method will output the file name also, which is useful to create output that's 
-# neat and readable.
+# neat and readable. Each line of the total number contains the following sections,
+# separated by a : for splitting in the print function
+# part one, repo type/string : part two, file name, if present, of info : part 3, repo data
 get_repo_data()
 {
        eval $LOGFS
-       local repo_file='' repo_data_working='' repo_data_working2='' repo_line=''
+       local repo_file='' repo_data_working='' repo_data_working2='' repo_line='' repo_files=''
+       local repo_name=''
        local apt_file='/etc/apt/sources.list' yum_repo_dir='/etc/yum.repos.d/' yum_conf='/etc/yum.conf'
        local pacman_conf='/etc/pacman.conf' pacman_repo_dir='/etc/pacman.d/' pisi_dir='/etc/pisi/'
+       local zypp_repo_dir='/etc/zypp/repos.d/' freebsd_conf='/etc/portsnap.conf'
        
-       # apt - debian, buntus
+       # apt - debian, buntus, also sometimes some yum/rpm repos may create apt repos here as well
        if [[ -f $apt_file || -d $apt_file.d ]];then
-               REPO_DATA="$( grep -Esv '(^[[:space:]]*$|^[[:space:]]*#)' $apt_file $apt_file.d/*.list )"
-               REPO_FILE_ID='apt sources'
-       # yum - fedora, redhat, centos, etc
-       elif [[ -d $yum_repo_dir || -f $yum_conf ]];then
-               # older redhats put their yum data in /etc/yum.conf
-               for repo_file in $( ls $yum_repo_dir*.repo $yum_conf 2>/dev/null )
-               do
-                       repo_data_working="$( gawk -v repoFile=$repo_file '
-                       # construct the string for the print function to work with, file name: data
-                       function print_line( fileName, repoId, repoUrl ){
-                               print fileName ":" repoId repoUrl
-                       }
-                       BEGIN {
-                               FS="\n"
-                               IGNORECASE=1
-                               enabledStatus=""
-                               repoTitle=""
-                               urlData=""
-                       }
-                       # this is a hack, assuming that each item has these fields listed, we collect the 3
-                       # items one by one, then when the url/enabled fields are set, we print it out and
-                       # reset the data. Not elegant but it works. Note that if enabled was not present
-                       # we assume it is enabled then, and print the line, reset the variables. This will
-                       # miss the last item, so it is printed if found in END
-                       /^\[.+\]/ {
-                               if ( urlData != "" && repoTitle != "" ){
-                                       print_line( repoFile, repoTitle, urlData )
+               REPO_DATA="$( grep -Esv '(^[[:space:]]*$|^[[:space:]]*#)' $apt_file $apt_file.d/*.list | sed $SED_RX 's/^(.*)/apt sources:\1/' )"
+       fi
+       # yum - fedora, redhat, centos, etc. Note that rpmforge also may create apt sources
+       # in /etc/apt/sources.list.d/. Therefore rather than trying to assume what package manager is
+       # actually running, inxi will merely note the existence of each repo type for apt/yum. 
+       # Also, in rpm, you can install apt-rpm for the apt-get command, so it's not good to check for
+       # only the commands in terms of selecting which repos to show.
+       if [[ -d $yum_repo_dir || -f $yum_conf || -d $zypp_repo_dir ]];then
+               if [[ -d $yum_repo_dir || -f $yum_conf ]];then
+                       # older redhats put their yum data in /etc/yum.conf
+                       repo_files=$( ls $yum_repo_dir*.repo $yum_conf 2>/dev/null )
+                       repo_name='yum'
+               elif [[ -d $zypp_repo_dir ]];then
+                       repo_files=$( ls $zypp_repo_dir*.repo 2>/dev/null )
+                       repo_name='zypp'
+               fi
+               if [[ -n $repo_files ]];then
+                       for repo_file in $repo_files
+                       do
+                               repo_data_working="$( gawk -v repoFile=$repo_file '
+                               # construct the string for the print function to work with, file name: data
+                               function print_line( fileName, repoId, repoUrl ){
+                                       print "'$repo_name' sources:" fileName ":" repoId repoUrl
+                               }
+                               BEGIN {
+                                       FS="\n"
+                                       IGNORECASE=1
                                        enabledStatus=""
-                                       urlData=""
                                        repoTitle=""
+                                       urlData=""
                                }
-                               gsub( /\[|\]/, "", $1 ) # strip out the brackets
-                               repoTitle = $1 " ~ "
-                       }
-                       /^(mirrorlist|baseurl)/ {
-                               sub( /(mirrorlist|baseurl)=/, "", $1 ) # strip out the field starter
-                               urlData = $1
-                       }
-                       /^enabled=/ {
-                               enabledStatus = $1
-                       }
-                       # print out the line if all 3 values are found, otherwise if a new
-                       # repoTitle is hit above, it will print out the line there instead
-                       { 
-                               if ( urlData != "" && enabledStatus != "" && repoTitle != "" ){
-                                       if ( enabledStatus !~ /enabled=0/ ){
+                               # this is a hack, assuming that each item has these fields listed, we collect the 3
+                               # items one by one, then when the url/enabled fields are set, we print it out and
+                               # reset the data. Not elegant but it works. Note that if enabled was not present
+                               # we assume it is enabled then, and print the line, reset the variables. This will
+                               # miss the last item, so it is printed if found in END
+                               /^\[.+\]/ {
+                                       if ( urlData != "" && repoTitle != "" ){
                                                print_line( repoFile, repoTitle, urlData )
+                                               enabledStatus=""
+                                               urlData=""
+                                               repoTitle=""
                                        }
-                                       enabledStatus=""
-                                       urlData=""
-                                       repoTitle=""
+                                       gsub( /\[|\]/, "", $1 ) # strip out the brackets
+                                       repoTitle = $1 " ~ "
                                }
-                       }
-                       END {
-                               # print the last one if there is data for it
-                               if ( urlData != ""  && repoTitle != "" ){
-                                       print_line( repoFile, repoTitle, urlData )
+                               /^(mirrorlist|baseurl)/ {
+                                       sub( /(mirrorlist|baseurl)[[:space:]]*=[[:space:]]*/, "", $1 ) # strip out the field starter
+                                       urlData = $1
                                }
-                       }
-                       ' $repo_file )"
-                       
-                       # then load the global for each file as it gets filled
-                       if [[ -n $repo_data_working ]];then
-                               if [[ -z $REPO_DATA ]];then
-                                       REPO_DATA="$repo_data_working"
-                               else
-                                       REPO_DATA="$REPO_DATA
+                               # note: enabled = 1. enabled = 0 means disabled
+                               /^enabled[[:space:]]*=/ {
+                                       enabledStatus = $1
+                               }
+                               # print out the line if all 3 values are found, otherwise if a new
+                               # repoTitle is hit above, it will print out the line there instead
+                               { 
+                                       if ( urlData != "" && enabledStatus != "" && repoTitle != "" ){
+                                               if ( enabledStatus !~ /enabled[[:space:]]*=[[:space:]]*0/ ){
+                                                       print_line( repoFile, repoTitle, urlData )
+                                               }
+                                               enabledStatus=""
+                                               urlData=""
+                                               repoTitle=""
+                                       }
+                               }
+                               END {
+                                       # print the last one if there is data for it
+                                       if ( urlData != ""  && repoTitle != "" ){
+                                               print_line( repoFile, repoTitle, urlData )
+                                       }
+                               }
+                               ' $repo_file )"
+                               
+                               # then load the global for each file as it gets filled
+                               if [[ -n $repo_data_working ]];then
+                                       if [[ -z $REPO_DATA ]];then
+                                               REPO_DATA="$repo_data_working"
+                                       else
+                                               REPO_DATA="$REPO_DATA
 $repo_data_working"
+                                       fi
+                                       repo_data_working=''
                                fi
-                               repo_data_working=''
+                       done
+               fi
+       # pacman - archlinux, going to assume that pisi and arch/pacman, etc don't have the above issue with apt/yum
+       elif [[ -f $pacman_conf ]];then
+               # get list of mirror include files, trim white space off ends
+               repo_data_working="$( gawk '
+               BEGIN {
+                       FS="="
+                       IGNORECASE=1
+               }
+               /^[[:space:]]*Include/ {
+                       sub(/^[[:space:]]+|[[:space:]]+$/,"",$2)
+                       print $2
+               }
+               ' $pacman_conf )"
+               # sort into unique paths only, to be used to search for server = data
+               repo_data_working=$( sort -bu <<< "$repo_data_working" | uniq ) 
+               repo_data_working="$repo_data_working $pacman_conf"
+               for repo_file in $repo_data_working 
+               do
+                       if [[ -f $repo_file ]];then
+                               # inserting a new line after each found / processed match
+                               repo_data_working2="$repo_data_working2$( gawk -v repoFile=$repo_file '
+                               BEGIN {
+                                       FS="="
+                                       IGNORECASE=1
+                               }
+                               /^[[:space:]]*Server/ {
+                                       sub(/^[[:space:]]+|[[:space:]]+$/,"",$2)
+                                       print "pacman repo servers:" repoFile ":" $2 "\\n"
+                               }
+                               ' $repo_file )"
+                       else
+                               echo "Error: file listed in $pacman_conf does not exist - $repo_file"
                        fi
                done
-               REPO_FILE_ID='yum repos'
+               # execute line breaks
+               REPO_DATA="$( echo -e $repo_data_working2 )"
        # pisi - pardus
        elif [[ -d $pisi_dir && -n $( type -p pisi ) ]];then
                REPO_DATA="$( pisi list-repo )"
                # now we need to create the structure: repo info: repo path
                # we do that by looping through the lines of the output and then
                # putting it back into the <data>:<url> format print repos expects to see
+               # note this structure in the data, so store first line and make start of line
+               # then when it's an http line, add it, and create the full line collection.
+# Pardus-2009.1 [Aktiv]
+#      http://packages.pardus.org.tr/pardus-2009.1/pisi-index.xml.bz2
+# Contrib [Aktiv]
+#      http://packages.pardus.org.tr/contrib-2009/pisi-index.xml.bz2
                while read repo_line
                do
                        repo_line=$( gawk '
@@ -5491,49 +7777,55 @@ $repo_data_working"
                        if [[ -n $( grep '://' <<< $repo_line ) ]];then
                                repo_data_working="$repo_data_working:$repo_line\n"
                        else
-                               repo_data_working="$repo_data_working$repo_line"
+                               repo_data_working="${repo_data_working}pisi repo:$repo_line"
                        fi
                done <<< "$REPO_DATA"
                # echo and execute the line breaks inserted
                REPO_DATA="$( echo -e $repo_data_working )"
-               REPO_FILE_ID='pisi repo'
-       # pacman - archlinux
-       elif [[ -f $pacman_conf ]];then
-               # get list of mirror include files, trim white space off ends
-               repo_data_working="$( gawk '
+       # Mandriva/Mageia using: urpmq
+       elif [[ -n $( type -p urpmq ) ]];then
+               REPO_DATA="$( urpmq --list-media active --list-url )"
+               # now we need to create the structure: repo info: repo path
+               # we do that by looping through the lines of the output and then
+               # putting it back into the <data>:<url> format print repos expects to see
+               # note this structure in the data, so store first line and make start of line
+               # then when it's an http line, add it, and create the full line collection.
+# Contrib ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2011/x86_64/media/contrib/release
+# Contrib Updates ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2011/x86_64/media/contrib/updates
+# Non-free ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2011/x86_64/media/non-free/release
+# Non-free Updates ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/2011/x86_64/media/non-free/updates
+# Nonfree Updates (Local19) /mnt/data/mirrors/mageia/distrib/cauldron/x86_64/media/nonfree/updates
+               while read repo_line
+               do
+                       repo_line=$( gawk '
+                       {
+                               # need to dump leading/trailing spaces and clear out color codes for irc output
+                               sub(/^[[:space:]]+|[[:space:]]+$/,"",$0)
+#                              gsub(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/,"",$0) # leaving this pattern in case need it
+                               gsub(/\e\[([0-9];)?[0-9]+m/,"",$0)
+                               print $0
+                       }' <<< $repo_line )
+                       # urpmq output is the same each line, repo name space repo url, can be:
+                       # rsync://, ftp://, file://, http:// OR repo is locally mounted on FS in some cases
+                       if [[ -n $( grep -E '(://|[[:space:]]/)' <<< $repo_line ) ]];then
+                               # cut out the repo first
+                               repo_data_working2=$( grep -Eo '([^[:space:]]+://|[[:space:]]/).*' <<< $repo_line )
+                               # then get the repo name string by slicing out the url string
+                               repo_name=$( sed "s|[[:space:]]*$repo_data_working2||" <<< $repo_line )
+                               repo_data_working="${repo_data_working}urpmq repo:$repo_name:$repo_data_working2\n"
+                       fi
+               done <<< "$REPO_DATA"
+               # echo and execute the line breaks inserted
+               REPO_DATA="$( echo -e $repo_data_working )"
+       elif [[ -f $freebsd_conf ]];then
+               REPO_DATA="$( gawk -F '=' -v repoFile=$freebsd_conf '
                BEGIN {
-                       FS="="
                        IGNORECASE=1
                }
-               /^[[:space:]]*Include/ {
-                       sub(/^[[:space:]]+|[[:space:]]+$/,"",$2)
-                       print $2
+               /^SERVERNAME/ {
+                       print "BSD ports servers:" repoFile ":" $2
                }
-               ' $pacman_conf )"
-               # sort into unique paths only, to be used to search for server = data
-               repo_data_working=$( sort -bu <<< "$repo_data_working" | uniq ) 
-               repo_data_working="$repo_data_working $pacman_conf"
-               for repo_file in $repo_data_working 
-               do
-                       if [[ -f $repo_file ]];then
-                               # inserting a new line after each found / processed match
-                               repo_data_working2="$repo_data_working2$( gawk -v repoFile=$repo_file '
-                               BEGIN {
-                                       FS="="
-                                       IGNORECASE=1
-                               }
-                               /^[[:space:]]*Server/ {
-                                       sub(/^[[:space:]]+|[[:space:]]+$/,"",$2)
-                                       print repoFile ":" $2 "\\n"
-                               }
-                               ' $repo_file )"
-                       else
-                               echo "Error: file listed in $pacman_conf does not exist - $repo_file"
-                       fi
-               done
-               # execute line breaks
-               REPO_DATA="$( echo -e $repo_data_working2 )"
-               REPO_FILE_ID='arch repo servers'
+               ' $freebsd_conf )"
        fi
        eval $LOGFE
 }
@@ -5550,6 +7842,44 @@ get_runlevel_data()
        eval $LOGFE
 }
 
+# note: it appears that at least as of 2014-01-13, /etc/inittab is going to be used for
+# default runlevel in upstart/sysvinit. systemd default is not always set so check to see 
+# if it's linked.
+get_runlevel_default()
+{
+       eval $LOGFS
+       local default_runlvl=''
+       local inittab='/etc/inittab'
+       local systemd_default='/etc/systemd/system/default.target'
+       local upstart_default='/etc/init/rc-sysinit.conf'
+       
+       # note: systemd systems do not necessarily have this link created
+       if [[ -L $systemd_default  ]];then
+               default_runlvl=$( readlink $systemd_default )
+               if [[ -n $default_runlvl ]];then
+                       default_runlvl=$( basename $default_runlvl )
+               fi
+       # http://askubuntu.com/questions/86483/how-can-i-see-or-change-default-run-level
+       # note that technically default can be changed at boot but for inxi purposes that does
+       # not matter, we just want to know the system default
+       elif [[ -e $upstart_default ]];then
+               # env DEFAULT_RUNLEVEL=2
+               default_runlvl=$( gawk -F '=' '/^env[[:space:]]+DEFAULT_RUNLEVEL/ {
+               print $2
+               }' $upstart_default )
+       fi
+       
+       # handle weird cases where null but inittab exists
+       if [[ -z $default_runlvl && -f $inittab ]];then
+               default_runlvl=$( gawk -F ':' '
+               /^id.*initdefault/ {
+                       print $2
+               }' $inittab )
+       fi
+       echo $default_runlvl
+       eval $LOGFE
+}
+
 get_sensors_data()
 {
        eval $LOGFS
@@ -5878,11 +8208,7 @@ get_sensors_data()
                                print fanMainString
                                print fanDefaultString
                        }
-               }' <<< "$Sensors_Data"
-               ) )
-       # the error case needs to go here because we are setting special array delimiter ','
-       else
-               A_SENSORS_DATA=( "You do not have the sensors app installed." )
+               }' <<< "$Sensors_Data" ) )
        fi
        
        IFS="$ORIGINAL_IFS"
@@ -5907,17 +8233,130 @@ get_sensors_output()
        echo -e "$sensors_data"
 }
 
+get_shell_data()
+{
+       eval $LOGFS
+
+       local shell_type="$( ps -p $PPID -o comm= 2>/dev/null )"
+       local shell_version='' 
+       
+       if [[ $B_EXTRA_DATA == 'true' && -n $shell_type ]];then
+               case $shell_type in
+                       bash)
+                               shell_version=$( get_de_app_version "$shell_type" "^GNU[[:space:]]bash,[[:space:]]version" "4" | \
+                               sed $SED_RX 's/(\(.*|-release|-version)//' )
+                               ;;
+                       # csh/dash use dpkg package version data, debian/buntu only
+                       csh)
+                               shell_version=$( get_de_app_version "$shell_type" "^tcsh" "2" )
+                               ;;
+                       dash)
+                               shell_version=$( get_de_app_version "$shell_type" "$shell_type" "3" )
+                               ;;
+                       ksh)
+                               shell_version=$( get_de_app_version "$shell_type" "version" "5" )
+                               ;;
+                       tcsh)
+                               shell_version=$( get_de_app_version "$shell_type" "^tcsh" "2" )
+                               ;;
+                       zsh)
+                               shell_version=$( get_de_app_version "$shell_type" "^zsh" "2" )
+                               ;;
+               esac
+       fi
+       if [[ -n $shell_version ]];then
+               shell_type="$shell_type $shell_version"
+       fi
+       echo $shell_type
+       
+       eval $LOGFS
+}
+
+get_shell_parent()
+{
+       eval $LOGFS
+       local shell_parent='' script_parent='' 
+       
+       # removed --no-headers to make bsd safe, adding in -j to make output the same
+       script_parent=$( ps -j -fp $PPID 2>/dev/null | gawk '/'"$PPID"'/ { print $3 }' )
+       log_function_data "script parent: $script_parent"
+       shell_parent=$( ps -j -p $script_parent 2>/dev/null | gawk '/'"$script_parent"'/ { print $NF}' )
+       # no idea why have to do script_parent action twice in su case, but you do, oh well.
+       if [[ $shell_parent == 'su' ]];then
+               script_parent=$( ps -j -fp $script_parent 2>/dev/null | gawk '/'"$script_parent"'/ { print $3 }' )
+               script_parent=$( ps -j -fp $script_parent 2>/dev/null | gawk '/'"$script_parent"'/ { print $3 }' )
+               shell_parent=$( ps -j -p $script_parent 2>/dev/null | gawk '/'"$script_parent"'/ { print $NF}' )
+       fi
+       echo $shell_parent
+       log_function_data "shell parent final: $shell_parent"
+       eval $LOGFE
+}
+
+# this will be used for some bsd data types
+# args: $1 - option type
+get_sysctl_data()
+{
+       eval $LOGFS
+       
+       local sysctl_data=''
+       
+       if [[ $B_SYSCTL ]];then
+               sysctl_data="$( sysctl -$1 )"
+       fi
+       # log_function_data "sysctl_data: $sysctl_data"
+       echo "$sysctl_data"
+       eval $LOGFE
+}
+
+get_tty_console_irc()
+{
+       eval $LOGFS
+       local tty_number=''
+       if [[ -n ${IRC_CLIENT} ]];then
+               tty_number=$( gawk '
+                       BEGIN {
+                               IGNORECASE=1
+                       }
+                       # if multiple irc clients open, can give wrong results
+                       # so make sure to also use the PPID number to get the right tty
+                       /.*'$PPID'.*'${IRC_CLIENT}'/ {
+                               gsub(/[^0-9]/, "", $7)
+                               print $7
+                               exit
+                       }' <<< "$Ps_aux_Data" )
+       fi
+       log_function_data "tty_number: $tty_number"
+       echo $tty_number
+       eval $LOGFE
+}
+
+get_tty_number()
+{
+       eval $LOGFS
+       
+       local tty_number=$( basename "$( tty 2>/dev/null )" | sed 's/[^0-9]*//g' )
+       
+       echo $tty_number
+       
+       eval $LOGFE
+}
+
 get_unmounted_partition_data()
 {
        eval $LOGFS
-       local a_unmounted_working='' mounted_partitions='' separator='' unmounted_fs=''
-       local dev_working='' uuid_working='' label_working=''
+       local a_unmounted_working='' mounted_partitions='' separator='|' unmounted_fs=''
+       local dev_working='' uuid_working='' label_working='' a_raid_working='' raid_partitions=''
        
        if [[ $B_PARTITIONS_FILE == 'true' ]];then
                # set dev disk label/uuid data globals
-               get_partition_uuid_label_data 'label'
-               get_partition_uuid_label_data 'uuid'
-               
+               get_partition_dev_data 'label'
+               get_partition_dev_data 'uuid'
+               # load the raid data array here so we can exclude its partitions
+               if [[ $B_RAID_SET != 'true' ]];then
+                       get_raid_data
+               fi
+               # sr0 type cd drives are showing up now as unmounted partitions
+               mounted_partitions="scd[0-9]+|sr[0-9]+|cdrom[0-9]*|cdrw[0-9]*|dvd[0-9]*|dvdrw[0-9]*"
                # create list for slicing out the mounted partitions
                for (( i=0; i < ${#A_PARTITION_DATA[@]}; i++ ))
                do
@@ -5926,11 +8365,22 @@ get_unmounted_partition_data()
                        IFS="$ORIGINAL_IFS"
                        if [[ -n ${a_unmounted_working[6]} ]];then
                                mounted_partitions="$mounted_partitions$separator${a_unmounted_working[6]}"
-                               separator='|'
+                       fi
+               done
+               # now we need to exclude the mdraid partitions from the unmounted partition output as well
+               for (( i=0; i < ${#A_RAID_DATA[@]}; i++ ))
+               do
+                       IFS=","
+                       a_raid_working=( ${A_RAID_DATA[i]} )
+                       IFS="$ORIGINAL_IFS"
+                       if [[ -n ${a_raid_working[3]} ]];then
+                               raid_partitions=$( sed $SED_RX 's/(\([^\)]*\)|\[[^\]]*\])//g' <<< ${a_raid_working[3]}\
+                               | sed 's/[[:space:]]\+/|/g' )
+                               mounted_partitions="$mounted_partitions$separator$raid_partitions"
                        fi
                done
        
-               A_UNMOUNTED_PARTITION_DATA=( $( grep -Ev '('$mounted_partitions')$' $FILE_PARTITIONS | gawk '
+               A_UNMOUNTED_PARTITION_DATA=( $( grep -Ev '[[:space:]]('$mounted_partitions')$' $FILE_PARTITIONS | gawk '
                BEGIN {
                        IGNORECASE=1
                }
@@ -5994,6 +8444,7 @@ get_unmounted_partition_filesystem()
                # this will fail if regular user and no sudo present, but that's fine, it will just return null
                # note the hack that simply slices out the first line if > 1 items found in string
                # also, if grub/lilo is on partition boot sector, no file system data is available
+               # BSD fix: -Eio -Em 1
                partition_filesystem=$( eval $sudo_command $FILE_PATH -s $1 | grep -Eio '(ext2|ext3|ext4|ext5|ext[[:space:]]|ntfs|fat32|fat16|fat[[:space:]]\(.*\)|vfat|fatx|tfat|swap|btrfs|ffs[[:space:]]|hfs\+|hfs[[:space:]]plus|hfs[[:space:]]extended[[:space:]]version[[:space:]][1-9]|hfsj|hfs[[:space:]]|jfs[[:space:]]|nss[[:space:]]|reiserfs|reiser4|ufs2|ufs[[:space:]]|xfs[[:space:]]|zfs[[:space:]])' | grep -Em 1 '.*' )
                if [[ -n $partition_filesystem ]];then
                        echo $partition_filesystem
@@ -6016,6 +8467,287 @@ get_uptime()
        eval $LOGFE
 }
 
+get_weather_data()
+{
+       eval $LOGFS
+       
+       local location_site='http://geoip.ubuntu.com/lookup'
+       local weather_feed='http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query='
+       local weather_spider='http://wunderground.com/'
+       local data_grab_error='' wget_error=0 
+       local b_test_loc=false b_test_weather=false b_debug=false
+       local test_dir="$HOME/bin/scripts/inxi/data/weather/"
+       local test_location='location2.xml' test_weather='weather-feed.xml'
+       local location_data='' location='' weather_data='' location_array_value='' a_location=''
+       local weather_array_value='' site_elevation='' temp_array=''
+       
+       # first we get the location data, once that is parsed and handled, we move to getting the 
+       # actual weather data, assuming no errors
+       if [[ -n $ALTERNATE_WEATHER_LOCATION ]];then
+               # note, this api does not support spaces in names, replace spaces with + sign.
+               location=$ALTERNATE_WEATHER_LOCATION
+               # echo $ALTERNATE_WEATHER_LOCATION;exit
+       else
+               if [[ $b_test_loc != 'true' ]];then
+                       location_data=$( wget -q -t 1 -T $WGET_TIMEOUT -O- $location_site || wget_error=$? )
+                       log_function_data "$location_data"
+                       if [[ $wget_error -ne 0 ]];then
+                               data_grab_error="Error: location server up but download error - wget: $wget_error"
+                       fi
+                       wget_error=0
+               else
+                       if [[ -f $test_dir$test_location ]];then
+                               location_data="$( cat $test_dir$test_location )"
+                       else
+                               data_grab_error="Error: location xml local file not found."
+                       fi
+               fi
+               if [[ -n $data_grab_error ]];then
+                       :
+               elif [[ -z $( grep -i '<Response' <<< $location_data ) ]];then
+                       data_grab_error="Error: location downloaded but data contains no xml."
+               else
+                       # clean up xml and make easy to process with newlines, note, bsd sed has no support for inserting
+                       # \n dircctly so we have to use this hack
+                       # location_data="$( sed $SED_RX 's|><|>\n<|g' <<< $location_data )"
+                       location_data="$( sed $SED_RX 's|><|>\
+<|g' <<< $location_data )"
+                       # echo -e "ld:\n$location_data"
+                       location_array_value=$( gawk '
+                       function clean(data) {
+                               returnData=""
+                               # some lines might be empty, so ignore those
+                               if (data !~ /^<[^>]+>$/ ) {
+                                       returnData=gensub(/(.*>)([^<]*)(<.*)/, "\\2", 1, data)
+                               }
+                               return returnData
+                       }
+                       BEGIN {
+                               IGNORECASE=1
+                               locationString=""
+                               countryCode=""
+                               countryCode3=""
+                               countryName=""
+                               regionCode=""
+                               regionName=""
+                               city=""
+                               postalCode=""
+                               latitude=""
+                               longitude=""
+                               timeZone=""
+                               areaCode=""
+                       }
+                       /CountryCode/ {
+                               if ( $0 ~ /CountryCode3/ ){
+                                       countryCode3=clean($0)
+                               }
+                               else {
+                                       countryCode=clean($0)
+                               }
+                       }
+                       /CountryName/ {
+                               countryName = clean($0)
+                       }
+                       /RegionCode/ {
+                               regionCode = clean($0)
+                       }
+                       /RegionName/ {
+                               regionName = clean($0)
+                       }
+                       /City/ {
+                               city = clean($0)
+                       }
+                       /ZipPostalCode/ {
+                               postalCode = clean($0)
+                       }
+                       /Latitude/ {
+                               latitude = clean($0)
+                       }
+                       /Longitude/ {
+                               longitude = clean($0)
+                       }
+                       /TimeZone/ {
+                               timeZone = clean($0)
+                       }
+                       END {
+                               locationString = city ";" regionCode ";" regionName ";" countryName ";" countryCode ";" countryCode3 
+                               locationString = locationString  ";" latitude "," longitude ";" postalCode ";" timeZone
+                               print locationString
+                       }' <<< "$location_data" )
+               fi
+               A_WEATHER_DATA[0]=$location_array_value
+               IFS=";"
+               a_location=( ${A_WEATHER_DATA[0]} )
+               IFS="$ORIGINAL_IFS"
+               
+               # assign location, cascade from most accurate
+               # latitude,longitude first
+               if [[ -n ${a_location[6]} ]];then
+                       location="${a_location[6]}"
+               # city,state next
+               elif [[ -n ${a_location[0]} && -n ${a_location[1]} ]];then
+                       location="${a_location[0]},${a_location[1]}"
+               # postal code last, that can be a very large region
+               elif [[ -n ${a_location[7]} ]];then
+                       location=${a_location[7]}
+               fi
+       fi
+       if [[ $b_debug == 'true' ]];then
+               echo -e "location array:\n${A_WEATHER_DATA[0]}"
+               echo "location: $location"
+       fi
+       log_function_data "location: $location"
+       
+       if [[ -z $location && -z $data_grab_error ]];then
+               data_grab_error="Error: location data downloaded but no location detected."
+       fi
+
+       # now either dump process or go on to get weather data
+       if [[ -z $data_grab_error ]];then
+               if [[ $b_test_weather != 'true' ]];then
+                       weather_data="$( wget -q -t 1 -T $WGET_TIMEOUT -O- $weather_feed"$location" || wget_error=$? )"
+                       if [[ $wget_error -ne 0 ]];then
+                               data_grab_error="Error: weather server up but download error - wget: $wget_error"
+                       fi
+                       log_function_data "$weather_data"
+               else
+                       if [[ -f $test_dir$test_weather ]];then
+                               weather_data="$( cat $test_dir$test_weather)"
+                       else
+                               data_grab_error="Error: weather feed xml local file not found."
+                       fi
+               fi
+               if [[ -z $data_grab_error && -z $( grep -i '<current_observation' <<< $weather_data ) ]];then
+                       data_grab_error="Error: weather data downloaded but shows no xml start."
+               fi
+               if [[ -z $data_grab_error ]];then
+                       # trim off zeros
+                       weather_data=$( sed 's/^[[:space:]]*//' <<< "$weather_data" )
+                       site_elevation=$( grep -im 1 '<elevation>' <<< "$weather_data" | sed $SED_RX -e 's/<[^>]*>//g' \
+                       -e 's/\.[0-9]*//' )
+                       # we need to grab the location data from the feed for remote checks 
+                       if [[ -n $ALTERNATE_WEATHER_LOCATION && -n $weather_data ]];then
+                               location_data=$( sed -e '/<current_observation>/,/<display_location>/d' -e '/<\/display_location>/,/<\/current_observation>/d' <<< "$weather_data" )
+                               # echo -e "ld1:\n$location_data"
+                               A_WEATHER_DATA[0]=$( gawk '
+                               function clean(data) {
+                                       returnData=""
+                                       # some lines might be empty, so ignore those
+                                       if (data !~ /^<[^>]+>$/ ) {
+                                               returnData=gensub(/(.*>)([^<]*)(<.*)/, "\\2", 1, data)
+                                               gsub(/^[[:space:]]+|[[:space:]]+$|^NA$|^N\/A$/, "", returnData)
+                                       }
+                                       return returnData
+                               }
+                               BEGIN {
+                                       IGNORECASE=1
+                                       city=""
+                                       state=""
+                                       country=""
+                               }
+                               /<city>/ {
+                                       city=clean($0)
+                               }
+                               /<state>/ {
+                                       state=clean($0)
+                               }
+                               /<country>/ {
+                                       country=clean($0)
+                               }
+                               END {
+                                       print city ";" state ";;;;" country
+                               }' <<< "$location_data" )
+                               # echo -e "location:\n${A_WEATHER_DATA[0]}"
+                       fi
+                       
+                       # clean off everything before/after observation_location
+                       weather_data=$( sed -e '/<current_observation>/,/<observation_location>/d' \
+                       -e '/<icons>/,/<\/current_observation>/d' <<< "$weather_data" -e 's/^[[:space:]]*$//g' -e '/^$/d' )
+                       
+                       # echo "$weather_data";exit 
+                       weather_array_value=$( gawk -v siteElevation="$site_elevation" '
+                       function clean(data) {
+                               returnData=""
+                               # some lines might be empty, so ignore those
+                               if (data !~ /^<[^>]+>$/ ) {
+                                       returnData=gensub(/(.*>)([^<]*)(<.*)/, "\\2", 1, data)
+                                       gsub(/^[[:space:]]+|[[:space:]]+$|^NA$|^N\/A$/, "", returnData)
+                               }
+                               return returnData
+                       }
+                       BEGIN {
+                               IGNORECASE=1
+                               observationTime=""
+                               localTime=""
+                               weather=""
+                               tempString=""
+                               humidity=""
+                               windString=""
+                               pressureString=""
+                               dewpointString=""
+                               heatIndexString=""
+                               windChillString=""
+                               weatherString=""
+                       }
+                       /observation_time>/ {
+                               observationTime=clean($0)
+                               sub(/Last Updated on /, "", observationTime )
+                       }
+                       /local_time>/ {
+                               localTime=clean($0)
+                       }
+                       /<weather/ {
+                               weather=clean($0)
+                       }
+                       /temperature_string/ {
+                               tempString=clean($0)
+                       }
+                       /relative_humidity/ {
+                               humidity=clean($0)
+                       }
+                       /wind_string/ {
+                               windString=clean($0)
+                       }
+                       /pressure_string/ {
+                               pressureString=clean($0)
+                       }
+                       /heat_index_string/ {
+                               heatIndexString=clean($0)
+                       }
+                       /windchill_string/ {
+                               windChillString=clean($0)
+                       }
+                       END {
+                               weatherString = observationTime ";" localTime ";" weather ";" tempString ";" humidity 
+                               weatherString = weatherString ";" windString ";" pressureString ";" dewpointString ";" heatIndexString
+                               weatherString = weatherString ";" windChillString ";" siteElevation
+                               print weatherString
+                       }' <<< "$weather_data" )
+               fi
+               if [[ -z $weather_array_value ]];then
+                       data_grab_error="Error: weather info downloaded but no data detected."
+               else
+                       A_WEATHER_DATA[1]=$weather_array_value
+               fi
+       fi
+       # now either dump process or go on to get weather data
+       if [[ -n $data_grab_error ]];then
+               A_WEATHER_DATA=$data_grab_error
+               log_function_data "data grab error: $data_grab_error"
+       fi
+       
+       if [[ $b_debug == 'true' ]];then
+               echo "site_elevation: $site_elevation"
+               echo "${A_WEATHER_DATA[1]}"
+       fi
+       temp_array=${A_WEATHER_DATA[@]}
+       log_function_data "A_WEATHER_DATA: $temp_array"
+       
+       eval $LOGFE
+}
+# ALTERNATE_WEATHER_LOCATION='portland,or'
+# get_weather_data;exit
+
 #### -------------------------------------------------------------------
 #### special data handling for specific options and conditions
 #### -------------------------------------------------------------------
@@ -6024,10 +8756,10 @@ get_uptime()
 # returns count of string length minus colors
 calculate_line_length()
 {
-       local string="$1"
+       local string=$1
        # ansi: \e[1;34m irc: \x0312
        string=$( sed -e "s/\x1b\[[0-9]\{1,2\}\(;[0-9]\{1,2\}\)\{0,2\}m//g" -e "s/\\\x0[0-9]\{1,3\}//g" <<< $string )
-       count=$( wc -c <<< $string )
+       count=${#string}
        echo $count
 }
 
@@ -6049,7 +8781,7 @@ calculate_multicore_data()
                        print total
                }' )
        elif [[ $string_number == '' ]];then
-               string_number='Not Available'
+               string_number='N/A'
        else
                # I believe that the above returns 'unknown' by default so no need for extra text
                string_number="$string_number "
@@ -6064,23 +8796,31 @@ calculate_multicore_data()
 process_cpu_flags()
 {
        eval $LOGFS
+       
+       local cpu_flags_working=$1
+       local bits=$( uname -m | grep 64 )
+       
+       # no need to show pae for 64 bit cpus, it's pointless
+       if [[ -n $bits ]];then
+               cpu_flags_working=$( sed 's/[[:space:]]*pae//' <<< "$cpu_flags_working" )
+       fi
        # must have a space after last item in list for RS=" "
-       local cpu_flags_working="$1 "
+       cpu_flags_working="$cpu_flags_working "
        
        # nx = AMD stack protection extensions
        # lm = Intel 64bit extensions
        # sse, sse2, pni = sse1,2,3,4,5 gfx extensions
        # svm = AMD pacifica virtualization extensions
        # vmx = Intel IVT (vanderpool) virtualization extensions
-       cpu_flags=$( 
-       echo "$cpu_flags_working" | gawk '
+       cpu_flags=$( gawk '
        BEGIN {
                RS=" "
                count = 0
                i = 1 # start at one because of for increment issue
                flag_string = ""
        }
-       /^(lm|nx|pni|svm|vmx|(sss|ss)e([2-9])?([a-z])?(_[0-9])?)$/ {
+       
+       /^(lm|nx|pae|pni|svm|vmx|(sss|ss)e([2-9])?([a-z])?(_[0-9])?)$/ {
                if ( $0 == "pni" ){
                        a_flags[i] = "sse3"
                }
@@ -6101,8 +8841,7 @@ process_cpu_flags()
                        }
                }
                print flag_string
-       }' 
-       )
+       }' <<< "$cpu_flags_working" )
 
        #grep -oE '\<(nx|lm|sse[0-9]?|pni|svm|vmx)\>' | tr '\n' ' '))
        if [[ -z $cpu_flags ]];then
@@ -6123,24 +8862,36 @@ print_it_out()
 {
        eval $LOGFS
        # note that print_it_out passes local variable values on to its children,
-       # and in some cases, their children, with Lspci_Data
-       local Lspci_Data='' # only for verbose
+       # and in some cases, their children, with Lspci_v_Data
+       local Lspci_v_Data='' Lspci_n_Data='' # only for verbose
+       local Sysctl_a_Data='' Dmesg_Boot_Data=''
+       
+       if [[ -n $BSD_TYPE ]];then
+               Sysctl_a_Data="$( get_sysctl_data 'a' )"
+               Dmesg_Boot_Data="$( get_dmesg_boot_data )"
+       fi
 
        if [[ $B_SHOW_SHORT_OUTPUT == 'true' ]];then
                print_short_data
        else
-               Lspci_Data="$( get_lspci_data )"
+               Lspci_v_Data="$( get_lspci_data 'v' )"
+               if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                       Lspci_n_Data="$( get_lspci_data 'n' )"
+               fi
                if [[ $B_SHOW_SYSTEM == 'true' ]];then
                        print_system_data
                fi
                if [[ $B_SHOW_MACHINE == 'true' ]];then
                        print_machine_data
                fi
+               if [[ $B_SHOW_WEATHER == 'true' ]];then
+                       print_weather_data
+               fi
                if [[ $B_SHOW_BASIC_CPU == 'true' || $B_SHOW_CPU == 'true' ]];then
                        print_cpu_data
                fi
                if [[ $B_SHOW_GRAPHICS == 'true' ]];then
-                       print_gfx_data
+                       print_graphics_data
                fi
                if [[ $B_SHOW_AUDIO == 'true' ]];then
                        print_audio_data
@@ -6154,6 +8905,9 @@ print_it_out()
                if [[ $B_SHOW_PARTITIONS == 'true' ]];then
                        print_partition_data
                fi
+               if [[ $B_SHOW_RAID == 'true' || $B_SHOW_BASIC_RAID == 'true' ]];then
+                       print_raid_data
+               fi
                if [[ $B_SHOW_UNMOUNTED_PARTITIONS == 'true' ]];then
                        print_unmounted_partition_data
                fi
@@ -6179,8 +8933,8 @@ print_it_out()
 print_short_data()
 {
        eval $LOGFS
-       local current_kernel=$( uname -rm ) # | gawk '{print $1,$3,$(NF-1)}' )
-       local processes="$(( $( ps aux | wc -l ) - 1 ))"
+       local current_kernel=$( get_kernel_version ) 
+       local processes=$(( $( wc -l <<< "$Ps_aux_Data" ) - 1 ))
        local short_data='' i='' b_background_black='false'
        local memory=$( get_memory_data )
        local up_time="$( get_uptime )"
@@ -6222,10 +8976,17 @@ print_short_data()
        local cpu_model="${a_cpu_working[0]}"
        ## assemble data for output
        local cpu_clock="${a_cpu_working[1]}" # old CPU3
-       # this gets that weird min/max final array item
+       # this gets that weird min/max final array item, which almost never contains any data of use
        local min_max_clock_nu=$(( ${#A_CPU_DATA[@]} - 1 ))
        local min_max_clock=${A_CPU_DATA[$min_max_clock_nu]}
-       local script_patch_number=$( get_patch_version_string )
+       # this handles the case of for example ARM cpus, which will not have data for
+       # min/max, since they don't have speed. Since that sets a flag, not found, just
+       # look for that and use the speed from the first array array, same where we got 
+       # model from
+       if [[ "$min_max_clock" == 'N/A' && ${a_cpu_working[1]} != '' ]];then
+               min_max_clock="${a_cpu_working[1]} MHz"
+       fi
+       local patch_version_number=$( get_patch_version_string )
 
        #set_color_scheme 12
        if [[ $B_RUNNING_IN_SHELL == 'false' ]];then
@@ -6255,7 +9016,7 @@ print_short_data()
        if [[ $SHOW_IRC -gt 0 ]];then
                short_data="${short_data}${C1}Client${C2}${SEP1}${IRC_CLIENT}${IRC_CLIENT_VERSION}${SEP2}"
        fi
-       short_data="${short_data}${C1}$SCRIPT_NAME${C2}${SEP1}$SCRIPT_VERSION_NUMBER$script_patch_number${SEP2}${CN}"
+       short_data="${short_data}${C1}$SCRIPT_NAME${C2}${SEP1}$SCRIPT_VERSION_NUMBER$patch_version_number${SEP2}${CN}"
        if [[ $SCHEME -gt 0 ]];then
                short_data="${short_data} $NORMAL"
        fi
@@ -6269,11 +9030,20 @@ print_short_data()
 print_audio_data()
 {
        eval $LOGFS
-       local i='' card_id='' audio_data='' a_audio_data='' port_data='' pci_bus_id=''
-       local a_audio_working='' alsa_driver='' alsa_data='' port_plural='' module_version=''
-       local bus_usb_text='' bus_usb_id='' line_starter='Audio:' alsa='' alsa_version=''
+       local i='' card_id='' audio_data='' a_audio_data='' port_data='' pci_bus_id='' card_string=''
+       local a_audio_working='' audio_driver='' alsa_data='' port_plural='' module_version='' chip_id=''
+       local bus_usb_text='' bus_usb_id='' line_starter='Audio:' alsa='' alsa_version='' print_data=''
+       local driver=''
        # set A_AUDIO_DATA and get alsa data
-       get_audio_data
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               if [[ $B_PCICONF_SET == 'false' ]];then
+                       get_pciconf_data
+               fi
+               get_pciconf_card_data 'audio'
+       else
+               get_audio_data
+       fi
+       
        get_audio_alsa_data
        # alsa driver data now prints out no matter what
        if [[ -n $A_ALSA_DATA ]];then
@@ -6300,53 +9070,95 @@ print_audio_data()
                        a_audio_working=( ${A_AUDIO_DATA[i]} )
                        IFS="$ORIGINAL_IFS"
                        port_data=''
-                       alsa_driver=''
+                       audio_driver=''
                        audio_data=''
+                       card_string=''
                        port_plural=''
                        module_version=''
                        pci_bus_id=''
                        bus_usb_text=''
                        bus_usb_id=''
+                       print_data=''
+                       card_id=''
+                       chip_id=''
+                       
                        if [[ ${#A_AUDIO_DATA[@]} -gt 1 ]];then
                                card_id="-$(( $i + 1 ))"
                        fi
-                       if [[ -n ${a_audio_working[3]} && $B_EXTRA_DATA == 'true' ]];then
-                               module_version=$( print_module_version "${a_audio_working[3]}" 'audio' )
-                       elif [[ -n ${a_audio_working[1]} && $B_EXTRA_DATA == 'true' ]];then
-                               module_version=$( print_module_version "${a_audio_working[1]}" 'audio' )
+                       if [[ $BSD_TYPE != 'bsd' ]];then
+                               if [[ -n ${a_audio_working[3]} && $B_EXTRA_DATA == 'true' ]];then
+                                       module_version=$( print_module_version "${a_audio_working[3]}" 'audio' )
+                               elif [[ -n ${a_audio_working[1]} && $B_EXTRA_DATA == 'true' ]];then
+                                       module_version=$( print_module_version "${a_audio_working[1]}" 'audio' )
+                               fi
                        fi
                        # we're testing for the presence of the 2nd array item here, which is the driver name
                        if [[ -n ${a_audio_working[1]} ]];then
-                               alsa_driver=" ${C1}driver$SEP3${C2} ${a_audio_working[1]}"
+                               # note: linux drivers can have numbers, like tg3
+                               if [[ $BSD_TYPE == 'bsd' ]];then
+                                       driver=$( sed 's/[0-9]$//' <<< ${a_audio_working[1]} )
+                               else
+                                       driver=${a_audio_working[1]}
+                               fi
+                               audio_driver="${C1}driver$SEP3${C2} ${driver} "
                        fi
                        if [[ -n ${a_audio_working[2]} && $B_EXTRA_DATA == 'true' ]];then
                                if [[ $( wc -w <<< ${a_audio_working[2]} ) -gt 1 ]];then
                                        port_plural='s'
                                fi
-                               port_data=" ${C1}port$port_plural$SEP3${C2} ${a_audio_working[2]}"
+                               port_data="${C1}port$port_plural$SEP3${C2} ${a_audio_working[2]} "
                        fi
                        if [[ -n ${a_audio_working[4]} && $B_EXTRA_DATA == 'true' ]];then
                                if [[ ${a_audio_working[1]} != 'USB Audio' ]];then
                                        bus_usb_text='bus-ID'
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               if [[ $BSD_TYPE != 'bsd' ]];then
+                                                       chip_id=$( get_lspci_chip_id "${a_audio_working[4]}" )
+                                               else
+                                                       chip_id=${a_audio_working[6]}
+                                               fi
+                                       fi
                                else
                                        bus_usb_text='usb-ID'
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               chip_id=${a_audio_working[5]}
+                                       fi
                                fi
                                bus_usb_id=${a_audio_working[4]}
-                               pci_bus_id=" ${C1}$bus_usb_text$SEP3${C2} $bus_usb_id"
+                               pci_bus_id="${C1}$bus_usb_text$SEP3${C2} $bus_usb_id "
+                               if [[ -n $chip_id ]];then
+                                       chip_id="${C1}chip-ID$SEP3${C2} $chip_id "
+                               fi
                        fi
                        if [[ -n ${a_audio_working[0]} ]];then
-                               audio_data="${C1}Card$card_id:${C2} ${a_audio_working[0]}$alsa_driver$port_data$pci_bus_id"
+                               card_string="${C1}Card$card_id:${C2} ${a_audio_working[0]} "
+                               audio_data="$audio_driver$port_data$pci_bus_id$chip_id"
                        fi
                        # only print alsa on last line if short enough, otherwise print on its own line
                        if [[ $i -eq 0 ]];then
-                               if [[ -n $alsa_data && $( calculate_line_length "${audio_data}$alsa_data" ) -lt $LINE_MAX ]];then
-                                       audio_data="$audio_data $alsa_data"
+                               if [[ -n $alsa_data && $( calculate_line_length "$card_string${audio_data}$alsa_data" ) -lt $COLS_INNER ]];then
+                                       audio_data="$audio_data$alsa_data"
                                        alsa_data=''
                                fi
                        fi
                        if [[ -n $audio_data ]];then
-                               audio_data=$( create_print_line "$line_starter" "$audio_data" )
-                               print_screen_output "$audio_data"
+                               if [[ $( calculate_line_length "$card_string$audio_data" ) -lt $COLS_INNER ]];then
+                                       print_data=$( create_print_line "$line_starter" "$card_string$audio_data" )
+                                       print_screen_output "$print_data"
+                               # print the line
+                               else
+                                       # keep the driver on the same line no matter what, looks weird alone on its own line
+                                       if [[ $B_EXTRA_DATA != 'true' ]];then
+                                               print_data=$( create_print_line "$line_starter" "$card_string$audio_data" )
+                                               print_screen_output "$print_data"
+                                       else
+                                               print_data=$( create_print_line "$line_starter" "$card_string" )
+                                               print_screen_output "$print_data"
+                                               line_starter=' '
+                                               print_data=$( create_print_line "$line_starter" "$audio_data" )
+                                               print_screen_output "$print_data"
+                                       fi
+                               fi
                                line_starter=' '
                        fi
                done
@@ -6363,7 +9175,11 @@ print_cpu_data()
 {
        eval $LOGFS
        local cpu_data='' i='' cpu_clock_speed='' cpu_multi_clock_data=''
-       local bmip_data='' cpu_cache='' cpu_vendor='' cpu_flags=''
+       local bmip_data='' cpu_cache='' cpu_vendor='' cpu_flags='' flag_feature='flags'
+       local a_cpu_working='' cpu_model='' cpu_clock='' cpu_null_error=''
+       local cpc_plural='' cpu_count_print='' model_plural='' cpu_data_string=''
+       local cpu_physical_count='' cpu_core_count='' cpu_core_alpha='' cpu_type=''
+       local cpu_2_data='' line_starter=''
 
        ##print_screen_output "A_CPU_DATA[0]=\"${A_CPU_DATA[0]}\""
        # Array A_CPU_DATA always has one extra element: max clockfreq found.
@@ -6372,29 +9188,9 @@ print_cpu_data()
        get_cpu_data
 
        IFS=","
-       local a_cpu_working=(${A_CPU_DATA[0]})
+       a_cpu_working=(${A_CPU_DATA[0]})
        IFS="$ORIGINAL_IFS"
-       local cpu_model="${a_cpu_working[0]}"
-       ## assemble data for output
-       local cpu_clock="${a_cpu_working[1]}"
-
-       cpu_vendor=${a_cpu_working[5]}
-
-       # set A_CPU_CORE_DATA
-       get_cpu_core_count
-       local cpc_plural='' cpu_count_print='' model_plural=''
-       local cpu_physical_count=${A_CPU_CORE_DATA[0]}
-       local cpu_core_count=${A_CPU_CORE_DATA[3]}
-       local cpu_core_alpha=${A_CPU_CORE_DATA[1]}
-       local cpu_type=${A_CPU_CORE_DATA[2]}
-
-       if [[ $cpu_physical_count -gt 1 ]];then
-               cpc_plural='(s)'
-               cpu_count_print="$cpu_physical_count "
-               model_plural='s'
-       fi
 
-       local cpu_data_string="${cpu_count_print}${cpu_core_alpha} core"
        # Strange (and also some expected) behavior encountered. If print_screen_output() uses $1
        # as the parameter to output to the screen, then passing "<text1> ${ARR[@]} <text2>"
        # will output only <text1> and first element of ARR. That "@" splits in elements and "*" _doesn't_,
@@ -6402,47 +9198,112 @@ print_cpu_data()
        # This has been confirmed by #bash on freenode.
        # The above mentioned only emerges when using the debugging markers below
        ## print_screen_output "a_cpu_working=\"***${a_cpu_working[@]} $hostName+++++++\"----------"
-
-       if [[ -z ${a_cpu_working[2]} ]];then
-               a_cpu_working[2]="unknown"
-       fi
-
-       cpu_data=$( create_print_line "CPU$cpc_plural:" "${C1}${cpu_data_string}${C2} ${a_cpu_working[0]}$model_plural (${cpu_type})" )
-       if [[ $B_SHOW_CPU == 'true' ]];then
-               # update for multicore, bogomips x core count.
-               if [[ $B_EXTRA_DATA == 'true' ]];then
-#                      if [[ $cpu_vendor != 'intel' ]];then
-                               bmip_data=$( calculate_multicore_data "${a_cpu_working[4]}" "$(( $cpu_core_count * $cpu_physical_count ))" )
-#                      else
-#                              bmip_data="${a_cpu_working[4]}"
-#                      fi
-                       bmip_data=" ${C1}bmips$SEP3${C2} $bmip_data"
-               fi
-               ## note: this handles how intel reports L2, total instead of per core like AMD does
-               # note that we need to multiply by number of actual cpus here to get true cache size
-               if [[ $cpu_vendor != 'intel' ]];then
-                       cpu_cache=$( calculate_multicore_data "${a_cpu_working[2]}" "$(( $cpu_core_count * $cpu_physical_count ))"  )
-               else
-                       cpu_cache=$( calculate_multicore_data "${a_cpu_working[2]}" "$cpu_physical_count"  )
+       # unless all these are null, process whatever you have
+       if [[ -n ${a_cpu_working[0]} || -n ${a_cpu_working[1]} || -n ${a_cpu_working[2]} || -n ${a_cpu_working[3]} ]];then
+               cpu_model="${a_cpu_working[0]}"
+               ## assemble data for output
+               cpu_clock="${a_cpu_working[1]}"
+
+               cpu_vendor=${a_cpu_working[5]}
+
+               # set A_CPU_CORE_DATA
+               get_cpu_core_count
+               cpu_physical_count=${A_CPU_CORE_DATA[0]}
+               cpu_core_count=${A_CPU_CORE_DATA[3]}
+               cpu_core_alpha=${A_CPU_CORE_DATA[1]}
+               cpu_type=${A_CPU_CORE_DATA[2]}
+               
+               if [[ $cpu_physical_count -gt 1 ]];then
+                       cpc_plural='(s)'
+                       cpu_count_print="$cpu_physical_count "
+                       model_plural='s'
+               fi
+               line_starter="CPU$cpc_plural:"
+               cpu_data_string="${cpu_count_print}${cpu_core_alpha} core"
+               cpu_data="${C1}${cpu_data_string}${C2} ${a_cpu_working[0]}$model_plural (${cpu_type})"
+               if [[ $B_SHOW_CPU == 'true' ]];then
+                       # update for multicore, bogomips x core count.
+                       if [[ $B_EXTRA_DATA == 'true' ]];then
+       #                       if [[ $cpu_vendor != 'intel' ]];then
+                               # ARM may use the faked 1 cpucorecount to make this work
+                               # echo $cpu_core_count $cpu_physical_count
+                               if [[ -n ${a_cpu_working[4]} ]];then
+                                       bmip_data=$( calculate_multicore_data "${a_cpu_working[4]}" "$(( $cpu_core_count * $cpu_physical_count ))" )
+                                       bmip_data=${bmip_data%.*}
+                               fi
+       #                       else
+       #                               bmip_data="${a_cpu_working[4]}"
+       #                       fi
+                               # bogomips are a linux thing, but my guess is over time bsds will use them somewhere anyway
+                               if [[ $BSD_TYPE == 'bsd' && -z $bmip_data ]];then
+                                       bmip_data=''
+                               else
+                                       bmip_data="${C1}bmips$SEP3${C2} $bmip_data "
+                               fi
+                       fi
+                       ## note: this handles how intel reports L2, total instead of per core like AMD does
+                       # note that we need to multiply by number of actual cpus here to get true cache size
+                       if [[ -n ${a_cpu_working[2]} ]];then
+                               if [[ $cpu_vendor != 'intel' ]];then
+                                       cpu_cache=$( calculate_multicore_data "${a_cpu_working[2]}" "$(( $cpu_core_count * $cpu_physical_count ))"  )
+                               else
+                                       cpu_cache=$( calculate_multicore_data "${a_cpu_working[2]}" "$cpu_physical_count"  )
+                               fi
+                       else
+                               cpu_cache='N/A'
+                       fi
+                       # only print shortened list
+                       if [[ $B_CPU_FLAGS_FULL != 'true' ]];then
+                               # gawk has already sorted this output, no flags returns -
+                               if [[ $B_EXTRA_DATA == 'true' ]];then
+                                       cpu_flags=$( process_cpu_flags "${a_cpu_working[3]}" "${a_cpu_working[6]}" )
+                                       cpu_flags="($cpu_flags)"
+                                       if [[ ${a_cpu_working[6]} == 'true' ]];then
+                                               flag_feature='features'
+                                       fi
+                                       
+                                       cpu_flags="${C1}$flag_feature$SEP3${C2} $cpu_flags "
+                               fi
+                       fi
+                       # arm cpus do not have flags or cache
+                       if [[ ${a_cpu_working[6]} != 'true' ]];then
+                               cpu_data="$cpu_data${C2} ${C1}cache$SEP3${C2} $cpu_cache${CN}"
+                               cpu_2_data="$cpu_flags$bmip_data${CN}"
+                       else
+                               cpu_data="$cpu_data${C2} (ARM)$bmip_data${CN}"
+                       fi
                fi
-               # only print shortened list
-               if [[ $B_CPU_FLAGS_FULL != 'true' ]];then
-                       cpu_flags=$( process_cpu_flags "${a_cpu_working[3]}" )
-                       cpu_flags=" ${C1}flags$SEP3${C2} ($cpu_flags)"
+               # we don't this printing out extra line unless > 1 cpu core
+               if [[ ${#A_CPU_DATA[@]} -gt 2 && $B_SHOW_CPU == 'true' ]];then
+                       cpu_clock_speed='' # null < verbosity level 5
+               else
+                       cpu_data="$cpu_data ${C1}clocked at${C2} ${a_cpu_working[1]%.*} MHz${CN}"
                fi
-               cpu_data="$cpu_data${C2} ${C1}cache$SEP3${C2} $cpu_cache$cpu_flags$bmip_data${CN}"
-       fi
-       # we don't this printing out extra line unless > 1 cpu core
-       if [[ ${#A_CPU_DATA[@]} -gt 2 && $B_SHOW_CPU == 'true' ]];then
-               cpu_clock_speed='' # null < verbosity level 5
+               cpu_2_data="$cpu_2_data$cpu_clock_speed"
+       else
+               if [[ $BSD_TYPE == 'bsd' && $B_ROOT != 'true' ]];then
+                       cpu_null_error=' No permissions for sysctl use?'
+               fi
+               cpu_data="${C2}No CPU data available.$cpu_null_error"
+       fi
+#      echo $cpu_data $cpu_2_data
+#      echo ln: $( calculate_line_length "$cpu_data $cpu_2_data" )
+#      echo cpl: $( create_print_line "$line_starter" "${cpu_2_data}" ):
+#      echo icols: $COLS_INNER
+#      echo tc: $TERM_COLUMNS
+       # echo :${cpu_2_data}:
+       if [[ -n $cpu_2_data && $( calculate_line_length "$cpu_data $cpu_2_data" ) -gt $COLS_INNER ]];then
+               cpu_data=$( create_print_line "$line_starter" "${cpu_data}" )
+               line_starter=''
+               print_screen_output "$cpu_data"
+               cpu_data=$( create_print_line " " "${cpu_2_data}" )
+               print_screen_output "$cpu_data"
        else
-               cpu_data="$cpu_data ${C1}clocked at${C2} ${a_cpu_working[1]} MHz${CN}"
+               cpu_data=$( create_print_line "$line_starter" "${cpu_data}" )
+               print_screen_output "$cpu_data ${cpu_2_data}"
        fi
-
-       cpu_data="$cpu_data $cpu_clock_speed"
-       print_screen_output "$cpu_data"
-
        # we don't this printing out extra line unless > 1 cpu core
+       # note the numbering, the last array item is the min/max/not found for cpu speeds
        if [[ ${#A_CPU_DATA[@]} -gt 2 && $B_SHOW_CPU == 'true' ]];then
                for (( i=0; i < ${#A_CPU_DATA[@]}-1; i++ ))
                do
@@ -6450,7 +9311,7 @@ print_cpu_data()
                        a_cpu_working=(${A_CPU_DATA[i]})
                        IFS="$ORIGINAL_IFS"
                        # note: the first iteration will create a first space, for color code separation below
-                       cpu_multi_clock_data="$cpu_multi_clock_data ${C1}$(( i + 1 )):${C2} ${a_cpu_working[1]} MHz${CN}"
+                       cpu_multi_clock_data="$cpu_multi_clock_data ${C1}$(( i + 1 )):${C2} ${a_cpu_working[1]%.*} MHz${CN}"
                        # someone actually appeared with a 16 core system, so going to stop the cpu core throttle
                        # if this had some other purpose which we can't remember we'll add it back in
                        #if [[ $i -gt 10 ]];then
@@ -6463,35 +9324,54 @@ print_cpu_data()
                fi
        fi
        if [[ $B_CPU_FLAGS_FULL == 'true' ]];then
-               print_cpu_flags_full "${a_cpu_working[3]}"
+               print_cpu_flags_full "${a_cpu_working[3]}" "${a_cpu_working[6]}"
        fi
        eval $LOGFE
 }
 
 # takes list of all flags, split them and prints x per line
-# args: $1 - cpu flag string
+# args: $1 - cpu flag string; $2 - arm true/false
 print_cpu_flags_full()
 {
        eval $LOGFS
-       local cpu_flags_full="$1" a_cpu_flags='' line_starter=''
-       local i=0 counter=0 max_length=18 max_length_add=18 flag='' flag_data=''
-
+       # note: sort only sorts lines, not words in a string, so convert to lines
+       local cpu_flags_full="$( echo $1 | tr " " "\n" | sort )" 
+       local a_cpu_flags='' line_starter='' temp_string=''
+       local i=0 counter=0 starter_length=15 flag='' flag_data=''
+       local line_length='' flag_feature='Flags' spacer='' flag_string=''
+       
+       if [[ $2 == 'true' ]];then
+               flag_feature='Features'
+       fi
+       line_starter="CPU $flag_feature$SEP3"
+       starter_length=$(( ${#line_starter} + 1 ))
+       line_starter="${C1}$line_starter${C2} "
+       line_length=$(( $COLS_INNER - $starter_length ))
        # build the flag line array
        for flag in $cpu_flags_full
        do
-               a_cpu_flags[$counter]="${a_cpu_flags[$counter]}$flag "
-               if [[ $i -ge $max_length ]];then
+               temp_string="$flag_string$spacer$flag"
+               spacer=' '
+               # handle inner line starter
+               if [[ $counter -gt 0 ]];then
+                       line_length=$COLS_INNER
+               fi
+               if [[ $line_length -ge ${#temp_string} ]];then
+                       flag_string=$temp_string
+               else
+                       a_cpu_flags[$counter]=$flag_string
+                       flag_string=$flag
                        (( counter++ ))
-                       max_length=$(( $max_length + $max_length_add ))
                fi
-               ((i++))
+               temp_string=''
        done
+       if [[ -n $flag_string ]];then
+               a_cpu_flags[$counter]=$flag_string
+       fi
        # then print it out
        for (( i=0; i < ${#a_cpu_flags[@]};i++ ))
        do
-               if [[ $i -eq 0 ]];then
-                       line_starter="${C1}CPU Flags$SEP3${C2} "
-               else
+               if [[ $i -gt 0 ]];then
                        line_starter=''
                fi
                flag_data=$( create_print_line " " "$line_starter${a_cpu_flags[$i]}" )
@@ -6500,23 +9380,22 @@ print_cpu_flags_full()
        eval $LOGFE
 }
 
-print_gfx_data()
+print_graphics_data()
 {
        eval $LOGFS
-       local gfx_data='' i='' card_id='' root_alert='' root_x_string='' a_gfx_working=''
-       local b_is_mesa='false' display_full_string='' gfx_bus_id='' gfx_card_data=''
-       local res_tty='Resolution' xorg_data='' x_vendor_string='' 
-       local spacer='' x_driver='' x_driver_string='' x_driver_plural='' direct_render_string=''
-       local separator_loaded='' separator_unloaded='' separator_failed=''
-       local loaded='' unloaded='' failed=''
+       local graphics_data='' card_id='' i='' root_alert='' root_x_string='' a_graphics_working=''
+       local b_is_mesa='false' display_full_string='' card_bus_id='' card_data=''
+       local res_tty='Resolution' xorg_data='' display_vendor_string='' chip_id=''
+       local spacer='' driver='' driver_string='' driver_plural='' direct_render_string=''
+       local separator_loaded='' separator_unloaded='' separator_failed='' 
+       local loaded='' unloaded='' failed='' display_server_string=''
        local line_starter='Graphics:'
        local screen_resolution="$( get_graphics_res_data )"
-       # set A_GFX_CARD_DATA
-       get_graphics_card_data
-       # set A_X_DATA
-       get_graphics_x_data
-       local x_vendor=${A_X_DATA[0]}
-       local x_version=${A_X_DATA[1]}
+       
+       # set A_DISPLAY_SERVER_DATA
+       get_graphics_display_server_data
+       local display_vendor=${A_DISPLAY_SERVER_DATA[0]}
+       local display_version=${A_DISPLAY_SERVER_DATA[1]}
        # set A_GLX_DATA
        get_graphics_glx_data
        local glx_renderer="${A_GLX_DATA[0]}"
@@ -6524,58 +9403,72 @@ print_gfx_data()
        # this can contain a long No case debugging message, so it's being sliced off
        # note: using grep -ioE '(No|Yes)' <<< ${A_GLX_DATA[2]} did not work in Arch, no idea why
        local glx_direct_render=$( gawk '{print $1}' <<< "${A_GLX_DATA[2]}" )
-       
+
+       # set A_GRAPHICS_CARD_DATA
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               if [[ $B_PCICONF_SET == 'false' ]];then
+                       get_pciconf_data
+               fi
+               get_pciconf_card_data 'display'
+       else
+               get_graphics_card_data
+       fi
        # set A_GRAPHIC_DRIVERS
        get_graphics_driver
        
        if [[ ${#A_GRAPHIC_DRIVERS[@]} -eq 0 ]];then
-               x_driver=' N/A'
+               driver=' N/A'
        else
                for (( i=0; i < ${#A_GRAPHIC_DRIVERS[@]}; i++ ))
                do
                        IFS=","
-                       a_gfx_working=( ${A_GRAPHIC_DRIVERS[i]} )
+                       a_graphics_working=( ${A_GRAPHIC_DRIVERS[i]} )
                        IFS="$ORIGINAL_IFS"
-                       case ${a_gfx_working[1]} in
+                       case ${a_graphics_working[1]} in
                                loaded)
-                                       loaded="$loaded$separator_loaded${a_gfx_working[0]}"
+                                       loaded="$loaded$separator_loaded${a_graphics_working[0]}"
                                        separator_loaded=','
                                        ;;
                                unloaded)
-                                       unloaded="$unloaded$separator_unloaded${a_gfx_working[0]}"
+                                       unloaded="$unloaded$separator_unloaded${a_graphics_working[0]}"
                                        separator_unloaded=','
                                        ;;
                                failed)
-                                       failed="$failed$separator_failed${a_gfx_working[0]}"
+                                       failed="$failed$separator_failed${a_graphics_working[0]}"
                                        separator_failed=','
                                        ;;              
                        esac
                done
        fi
        if [[ -n $loaded ]];then
-               x_driver="${x_driver} $loaded"
+               driver="${driver} $loaded"
        fi
        if [[ -n $unloaded ]];then
-               x_driver="${x_driver} (unloaded: $unloaded)"
+               driver="${driver} (unloaded: $unloaded)"
        fi
        if [[ -n $failed ]];then
-               x_driver="${x_driver} ${RED}FAILED:${C2} $failed"
+               driver="${driver} ${RED}FAILED:${C2} $failed"
+       fi
+       # sometimes for some reason there is no driver found but the array is started
+       if [[ -z $driver ]];then
+               driver=' N/A'
        fi
 
        if [[ ${#A_GRAPHIC_DRIVERS[@]} -gt 1 ]];then
-               x_driver_plural='s'
+               driver_plural='s'
        fi
-       x_driver_string="${C1}driver$x_driver_plural$SEP3${C2}$x_driver "
+       driver_string="${C1}driver$driver_plural$SEP3${C2}$driver "
        
        # some basic error handling:
        if [[ -z $screen_resolution ]];then
                screen_resolution='N/A'
        fi
-       if [[ -z $x_vendor || -z $x_version ]];then
-               x_vendor_string="${C1}X-Vendor:${C2} N/A "
+       if [[ -z $display_vendor || -z $display_version ]];then
+               display_vendor_string="N/A"
        else
-               x_vendor_string="${C1}$x_vendor$SEP3${C2} $x_version "
+               display_vendor_string="$display_vendor $display_version"
        fi
+       display_server_string="${C1}Display Server${SEP3}${C2} $display_vendor_string "
 
        if [[ $B_ROOT == 'true' ]];then
                root_x_string='for root '
@@ -6583,7 +9476,7 @@ print_gfx_data()
                        res_tty='tty size'
                fi
        fi
-       if [[ $B_RUNNING_IN_X != 'true' ]];then
+       if [[ $B_RUNNING_IN_DISPLAY != 'true' ]];then
                root_x_string="${root_x_string}out of X"
                res_tty='tty size'
        fi
@@ -6592,58 +9485,68 @@ print_gfx_data()
                root_x_string="${C1}Advanced Data:${C2} N/A $root_x_string"
        fi
 
-       display_full_string="$x_vendor_string$x_driver_string${C1}${res_tty}$SEP3${C2} ${screen_resolution} $root_x_string"
+       display_full_string="$display_server_string$driver_string${C1}${res_tty}$SEP3${C2} ${screen_resolution} $root_x_string"
 
-       if [[ ${#A_GFX_CARD_DATA[@]} -gt 0 ]];then
-               for (( i=0; i < ${#A_GFX_CARD_DATA[@]}; i++ ))
+       if [[ ${#A_GRAPHICS_CARD_DATA[@]} -gt 0 ]];then
+               for (( i=0; i < ${#A_GRAPHICS_CARD_DATA[@]}; i++ ))
                do
                        IFS=","
-                       a_gfx_working=( ${A_GFX_CARD_DATA[i]} )
+                       a_graphics_working=( ${A_GRAPHICS_CARD_DATA[i]} )
                        IFS="$ORIGINAL_IFS"
-                       gfx_bus_id=''
-                       gfx_card_data=${a_gfx_working[0]}
+                       card_bus_id=''
+                       card_data=${a_graphics_working[0]}
                        if [[ $B_EXTRA_DATA == 'true' ]];then
-                               if [[ -n ${a_gfx_working[1]} ]];then
-                                       gfx_bus_id=" ${C1}bus-ID$SEP3${C2} ${a_gfx_working[1]}"
+                               if [[ -n ${a_graphics_working[1]} ]];then
+                                       card_bus_id=" ${C1}bus-ID$SEP3${C2} ${a_graphics_working[1]}"
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               if [[ $BSD_TYPE != 'bsd' ]];then
+                                                       chip_id=$( get_lspci_chip_id "${a_graphics_working[1]}" )
+                                               else
+                                                       chip_id=${a_graphics_working[2]}
+                                               fi
+                                       fi
                                else
-                                       gfx_bus_id=" ${C1}bus-ID$SEP3${C2} N/A"
+                                       card_bus_id=" ${C1}bus-ID$SEP3${C2} N/A"
                                fi
                        fi
-                       if [[ ${#A_GFX_CARD_DATA[@]} -gt 1 ]];then
+                       if [[ -n $chip_id ]];then
+                               chip_id=" ${C1}chip-ID$SEP3${C2} $chip_id"
+                       fi
+                       if [[ ${#A_GRAPHICS_CARD_DATA[@]} -gt 1 ]];then
                                card_id="Card-$(($i+1)):"
                        else
                                card_id='Card:'
                        fi
-                       gfx_data="${C1}$card_id${C2} $gfx_card_data$gfx_bus_id "
-                       if [[ ${#A_GFX_CARD_DATA[@]} -gt 1 ]];then
-                               gfx_data=$( create_print_line "$line_starter" "${gfx_data}" )
-                               print_screen_output "$gfx_data"
+                       graphics_data="${C1}$card_id${C2} $card_data$card_bus_id$chip_id "
+                       if [[ ${#A_GRAPHICS_CARD_DATA[@]} -gt 1 ]];then
+                               graphics_data=$( create_print_line "$line_starter" "${graphics_data}" )
+                               print_screen_output "$graphics_data"
                                line_starter=' '
-                               gfx_data=''
+                               graphics_data=''
                        fi
                done
        # handle cases where card detection fails, like in PS3, where lspci gives no output, or headless boxes..
        else
-               gfx_data="${C1}Card:${C2} Failed to Detect Video Card! "
+               graphics_data="${C1}Card:${C2} Failed to Detect Video Card! "
        fi
-       if [[ -n $gfx_data && $( calculate_line_length "${gfx_data}$display_full_string" ) -lt $LINE_MAX ]];then
-               gfx_data=$( create_print_line "$line_starter" "${gfx_data}$display_full_string" )
+       if [[ -n $graphics_data && $( calculate_line_length "${graphics_data}$display_full_string" ) -lt $COLS_INNER ]];then
+               graphics_data=$( create_print_line "$line_starter" "${graphics_data}$display_full_string" )
        else
-               if [[ -n $gfx_data ]];then
-                       gfx_data=$( create_print_line "$line_starter" "$gfx_data" )
-                       print_screen_output "$gfx_data"
+               if [[ -n $graphics_data ]];then
+                       graphics_data=$( create_print_line "$line_starter" "$graphics_data" )
+                       print_screen_output "$graphics_data"
                        line_starter=' '
                fi
-               gfx_data=$( create_print_line "$line_starter" "$display_full_string" )
+               graphics_data=$( create_print_line "$line_starter" "$display_full_string" )
        fi
-       print_screen_output "$gfx_data"
-#      if [[ -z $glx_renderer || -z $glx_version ]];then
-#              b_is_mesa='true'
-#      fi
+       print_screen_output "$graphics_data"
+       # if [[ -z $glx_renderer || -z $glx_version ]];then
+       #       b_is_mesa='true'
+       # fi
 
-       ## note: if glx render or version have no content, then mesa is true
-       # if [[ $B_SHOW_X_DATA == 'true' ]] && [[ $b_is_mesa != 'true' ]];then
-       if [[ $B_SHOW_X_DATA == 'true' && $B_ROOT != 'true' ]];then
+       ## note: if glx render or display_version have no content, then mesa is true
+       # if [[ $B_SHOW_DISPLAY_DATA == 'true' ]] && [[ $b_is_mesa != 'true' ]];then
+       if [[ $B_SHOW_DISPLAY_DATA == 'true' && $B_ROOT != 'true' ]];then
                if [[ -z $glx_renderer ]];then
                        glx_renderer='N/A'
                fi
@@ -6656,10 +9559,10 @@ print_gfx_data()
                if [[ $B_HANDLE_CORRUPT_DATA == 'true' || $B_EXTRA_DATA == 'true' ]];then
                        direct_render_string=" ${C1}Direct Rendering$SEP3${C2} ${glx_direct_render}${CN}"
                fi
-               gfx_data="${C1}GLX Renderer$SEP3${C2} ${glx_renderer} ${C1}GLX Version$SEP3${C2} ${glx_version}${CN}$direct_render_string"
-               gfx_data=$( create_print_line " " "$gfx_data" )
+               graphics_data="${C1}GLX Renderer$SEP3${C2} ${glx_renderer} ${C1}GLX Version$SEP3${C2} ${glx_version}${CN}$direct_render_string"
+               graphics_data=$( create_print_line " " "$graphics_data" )
                
-               print_screen_output "$gfx_data"
+               print_screen_output "$graphics_data"
        fi
        eval $LOGFE
 }
@@ -6668,6 +9571,7 @@ print_hard_disk_data()
 {
        eval $LOGFS
        local hdd_data='' hdd_data_2='' a_hdd_working='' hdd_temp_data='' hdd_string=''
+       local hdd_serial=''
        local dev_data='' size_data='' hdd_model='' usb_data='' hdd_name='' divisor=5
        local Line_Starter='Drives:' # inherited by print_optical_drives
 
@@ -6679,8 +9583,10 @@ print_hard_disk_data()
        IFS=","
        local a_hdd_basic_working=( ${A_HDD_DATA[$a_hdd_data_count]} )
        IFS="$ORIGINAL_IFS"
-       local hdd_capacity=${a_hdd_basic_working[0]}
+       local hdd_capacity="${a_hdd_basic_working[0]}"
        local hdd_used=${a_hdd_basic_working[1]}
+       local bsd_unsupported='Hard drive data not yet supported for BSD systems.'
+       local hdd_name_temp=''
 
        if [[ $B_SHOW_BASIC_DISK == 'true' || $B_SHOW_DISK == 'true' ]];then
        ## note: the output part of this should be in the print hdd data function, not here
@@ -6698,28 +9604,52 @@ print_hard_disk_data()
                                        usb_data=''
                                fi
                                dev_data="/dev/${a_hdd_working[0]} "
-                               size_data=" ${a_hdd_working[1]}"
+                               size_data=" ${C1}size$SEP3${C2} ${a_hdd_working[1]}"
                                if [[ $B_EXTRA_DATA == 'true' && -n $dev_data ]];then
                                        hdd_temp_data=$( get_hdd_temp_data "$dev_data" )
                                        # error handling is done in get data function
                                        if [[ -n $hdd_temp_data ]];then
-                                               hdd_temp_data=" ${hdd_temp_data}C"
+                                               hdd_temp_data=" ${C1}temp$SEP3${C2} ${hdd_temp_data}C"
                                        else
                                                hdd_temp_data=''
                                        fi
                                fi
-                               divisor=2 # for modulus line print out, either 2 items for full, or default for short
+                               if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                       hdd_serial=$( get_hdd_serial_number "${a_hdd_working[0]}" )
+                                       if [[ -z $hdd_serial ]];then
+                                               hdd_serial='N/A'
+                                       fi
+                                       hdd_serial=" ${C1}serial$SEP3${C2} $hdd_serial"
+                                       divisor=1 # print every line
+                               else
+                                       divisor=2 # for modulus line print out, either 2 items for full, or default for short
+                               fi
+                               dev_data="${C1}id$SEP3${C2} /dev/${a_hdd_working[0]} "
                        fi
-                       hdd_name="${a_hdd_working[2]}"
-                       hdd_string="$usb_data$dev_data$hdd_name$size_data$hdd_temp_data"
+                       if [[ -n ${a_hdd_working[2]} ]];then
+                               hdd_name_temp=${a_hdd_working[2]}
+                       else
+                               hdd_name_temp='N/A'
+                       fi
+                       hdd_name="${C1}model$SEP3${C2} $hdd_name_temp"
+                       hdd_string="$usb_data$dev_data$hdd_name$size_data$hdd_serial$hdd_temp_data"
                        hdd_model="${hdd_model}${C1}$(($i+1)):${C2} $hdd_string "
                        # printing line one, then new lines according to $divisor setting, and after, if leftovers, print that line.
                        case $i in 
                                0)
-                                       hdd_data=$( create_print_line "$Line_Starter" "${C1}HDD Total Size:${C2} ${hdd_capacity} (${hdd_used}) ${hdd_model}" )
-                                       print_screen_output "$hdd_data"
-                                       hdd_model=''
-                                       Line_Starter=' '
+                                       if [[ $divisor -eq 1 ]];then
+                                               hdd_data=$( create_print_line "$Line_Starter" "${C1}HDD Total Size:${C2} ${hdd_capacity} (${hdd_used})" )
+                                               print_screen_output "$hdd_data"
+                                               Line_Starter=' '
+                                               hdd_data=$( create_print_line "$Line_Starter" "${hdd_model}" )
+                                               print_screen_output "$hdd_data"
+                                               hdd_model=''
+                                       else
+                                               hdd_data=$( create_print_line "$Line_Starter" "${C1}HDD Total Size:${C2} ${hdd_capacity} (${hdd_used}) ${hdd_model}" )
+                                               print_screen_output "$hdd_data"
+                                               hdd_model=''
+                                               Line_Starter=' '
+                                       fi
                                        ;;
                                *)
                                        # using modulus here, if divisible by $divisor, print line, otherwise skip
@@ -6737,8 +9667,20 @@ print_hard_disk_data()
                        hdd_data=$( create_print_line "$Line_Starter" "${hdd_model}${CN}" )
                        print_screen_output "$hdd_data"
                fi
+               # temporary message to indicate not yet supported
+               if [[ $BSD_TYPE == 'bsd' ]];then
+                       hdd_data=$bsd_unsupported
+                       hdd_data=$( create_print_line "$Line_Starter" "$hdd_data${CN}" )
+                       print_screen_output "$hdd_data"
+                       Line_Starter=' '
+               fi
        else
-               hdd_data=$( create_print_line "$Line_Starter" "${C1}HDD Total Size:${C2} ${hdd_capacity} (${hdd_used})${CN}" )
+               # temporary message to indicate not yet supported
+               hdd_data="${C1}HDD Total Size:${C2} ${hdd_capacity} (${hdd_used})"
+               if [[ $BSD_TYPE == 'bsd' ]];then
+                       hdd_data=$bsd_unsupported
+               fi
+               hdd_data=$( create_print_line "$Line_Starter" "$hdd_data${CN}" )
                print_screen_output "$hdd_data"
                Line_Starter=' '
        fi
@@ -6753,13 +9695,18 @@ print_info_data()
 {
        eval $LOGFS
 
-       local info_data='' line_starter='Info:'
-       local runlvl='' client_data=''
+       local info_data='' line_starter='Info:' runlvl_default='' runlvl='' runlvl_title='runlevel' 
+       local init_data='' init_type='' init_version='' rc_type='' rc_version=''
+       local client_data='' shell_data='' shell_parent='' tty_session=''
        local memory="$( get_memory_data )"
-       local processes="$(( $( ps aux | wc -l ) - 1 ))"
+       local processes=$(( $( wc -l <<< "$Ps_aux_Data" ) - 1 ))
        local up_time="$( get_uptime )"
-       local script_patch_number=$( get_patch_version_string )
-       local gcc_string='' gcc_installed='' gcc_others='' closing_data=''
+       local patch_version_number=$( get_patch_version_string )
+       local gcc_string='' gcc_installed='' gcc_others='' closing_data='' 
+       
+       if [[ -z $memory ]];then
+               memory='N/A'
+       fi
        
        if [[ $B_EXTRA_DATA == 'true' ]];then
                get_gcc_system_version
@@ -6775,36 +9722,106 @@ print_info_data()
                        gcc_installed="${C1}Gcc sys$SEP3${C2} $gcc_installed$gcc_others "
                fi
        fi
+       if [[  $B_RUNNING_IN_SHELL == 'true' ]];then
+               shell_data=$( get_shell_data )
+               if [[ -n $shell_data ]];then
+                       # note, if you start this in tty, it will give 'login' as the parent, which we don't want.
+                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                               if [[ $B_RUNNING_IN_DISPLAY != 'true' ]];then
+                                       shell_parent=$( get_tty_number )
+                                       shell_parent="tty $shell_parent"
+                               else
+                                       shell_parent=$( get_shell_parent )
+                               fi
+                               if [[ $shell_parent == 'login' ]];then
+                                       shell_parent=''
+                               elif [[ -n $shell_parent ]];then
+                                       shell_parent=" running in $shell_parent"
+                               fi
+                       fi
+                       IRC_CLIENT="$IRC_CLIENT ($shell_data$shell_parent)"
+               fi
+       fi
 
        # Some code could look superfluous but BitchX doesn't like lines not ending in a newline. F*&k that bitch!
        # long_last=$( echo -ne "${C1}Processes$SEP3${C2} ${processes}${CN} | ${C1}Uptime$SEP3${C2} ${up_time}${CN} | ${C1}Memory$SEP3${C2} ${MEM}${CN}" )
        info_data="${C1}Processes$SEP3${C2} ${processes} ${C1}Uptime$SEP3${C2} ${up_time} ${C1}Memory$SEP3${C2} ${memory}${CN} "
 
        # this only triggers if no X data is present or if extra data switch is on
-       if [[ $B_SHOW_X_DATA != 'true' || $B_EXTRA_DATA == 'true' ]];then
-               runlvl="$( get_runlevel_data )"
+       if [[ $B_SHOW_DISPLAY_DATA != 'true' || $B_EXTRA_DATA == 'true' ]];then
+               get_init_data
+               if [[ ${A_INIT_DATA[0]} == 'systemd' && -z $( grep -E '^[0-9]$' <<< ${A_INIT_DATA[4]} ) ]];then
+                       runlvl_title='target'
+               fi
+               init_type=${A_INIT_DATA[0]}
+               if [[ -z $init_type ]];then
+                       init_type='N/A'
+               fi
+               
+               if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                       init_version=${A_INIT_DATA[1]}
+                       if [[ -z $init_version ]];then
+                               init_version='N/A'
+                       fi
+                       init_version=" ${C1}v$SEP3${C2} $init_version"
+                       rc_version=${A_INIT_DATA[3]}
+                       if [[ -n $rc_version ]];then
+                               rc_version=" ${C1}v$SEP3${C2} $rc_version"
+                       fi
+                       
+                       runlvl_default=${A_INIT_DATA[5]}
+               fi
+               # currently only using openrc here, otherwise show nothing
+               rc_type=${A_INIT_DATA[2]}
+               if [[ -n $rc_type ]];then
+                       rc_type=" ${C1}rc$SEP3${C2} $rc_type$rc_version"
+               fi
+               init_type="${C1}Init$SEP3${C2} $init_type$init_version "
+               
+               runlvl=${A_INIT_DATA[4]}
                if [[ -n $runlvl ]];then
-                       info_data="${info_data}${C1}Runlevel$SEP3${C2} ${runlvl} "
+                       runlvl="${C1}$runlvl_title$SEP3${C2} $runlvl "
                fi
+               if [[ -n $runlvl_default ]];then
+                       runlvl_default="${C1}default$SEP3${C2} $runlvl_default "
+               fi
+               init_data="$init_type$rc_type$runlvl$runlvl_default"
        fi
        if [[ $SHOW_IRC -gt 0 ]];then
                client_data="${C1}Client$SEP3${C2} ${IRC_CLIENT}${IRC_CLIENT_VERSION} "
        fi
-       info_data="${info_data}$gcc_installed"
-       closing_data="$client_data${C1}$SCRIPT_NAME$SEP3${C2} $SCRIPT_VERSION_NUMBER$script_patch_number${CN}"
-       if [[ -n $info_data && $( calculate_line_length "$info_data$closing_data" ) -gt $LINE_MAX ]];then
+       info_data="${info_data}"
+       closing_data="$client_data${C1}$SCRIPT_NAME$SEP3${C2} $SCRIPT_VERSION_NUMBER$patch_version_number${CN}"
+       
+       # sometimes gcc is very long, and default runlevel can be long with systemd, so create a gcc-less line first
+       if [[ $( calculate_line_length "${info_data}${init_data}${gcc_installed}${closing_data}" ) -gt $COLS_INNER ]];then
+               info_data=${info_data}${init_data}
                info_data=$( create_print_line "$line_starter" "$info_data" )
                print_screen_output "$info_data"
-               info_data="$closing_data"
+               init_data=''
+               info_data=''
+               # closing_data=''
                line_starter=' '
-       else
-               info_data="${info_data}$closing_data"
+               #echo 1
+       fi
+       if [[ $( calculate_line_length "${info_data}${init_data}${gcc_installed}${closing_data}" ) -gt $COLS_INNER ]];then
+               info_data=${info_data}${init_data}${gcc_installed}
+               info_data=$( create_print_line "$line_starter" "$info_data" )
+               print_screen_output "$info_data"
+               info_data=''
+               gcc_installed=''
+               init_data=''
+               line_starter=' '
+               #echo 2
        fi
+       info_data="${info_data}${init_data}${gcc_installed}${closing_data}"
+       
        info_data=$( create_print_line "$line_starter" "$info_data" )
        if [[ $SCHEME -gt 0 ]];then
                info_data="${info_data} ${NORMAL}"
        fi
        print_screen_output "$info_data"
+       
        eval $LOGFE
 }
 
@@ -6814,12 +9831,19 @@ print_machine_data()
        
        local system_line='' mobo_line='' bios_line='' chassis_line=''
        local mobo_vendor='' mobo_model='' mobo_version='' mobo_serial=''
-       local bios_vendor='' bios_version='' bios_date=''
+       local bios_vendor='' bios_version='' bios_date='' bios_rom=''
        local system_vendor='' product_name='' product_version='' product_serial='' product_uuid=''
-       local chassis_vendor='' chassis_type='' chassis_version='' chassis_serial=''
+       local chassis_vendor='' chassis_type='' chassis_version='' chassis_serial='' 
        local b_skip_system='false' b_skip_chassis='false'
+       local sysDmiError='No /sys/class/dmi, using '
+       local sysDmiNull='No /sys/class/dmi machine data: try newer kernel, or install dmidecode'
        # set A_MACHINE_DATA
        get_machine_data
+       
+       if [[ -n $BSD_TYPE ]];then
+               sysDmiError=''
+               sysDmiNull='No machine data available. Is dmidecode installed?'
+       fi
 
        IFS=','
        ## keys for machine data are:
@@ -6895,6 +9919,9 @@ print_machine_data()
                fi
                if [[ -n ${A_MACHINE_DATA[10]} ]];then
                        bios_version=${A_MACHINE_DATA[10]}
+                       if [[ -n ${A_MACHINE_DATA[16]} ]];then
+                               bios_version="$bios_version rv ${A_MACHINE_DATA[16]}"
+                       fi
                else
                        bios_version='N/A'
                fi
@@ -6903,9 +9930,12 @@ print_machine_data()
                else
                        bios_date='N/A'
                fi
+               if [[ $B_EXTRA_EXTRA_DATA == 'true' && -n ${A_MACHINE_DATA[17]} ]];then
+                       bios_rom=" ${C1}rom size$SEP3${C2} ${A_MACHINE_DATA[17]}"
+               fi
                mobo_line="${C1}Mobo$SEP3${C2} $mobo_vendor ${C1}model$SEP3${C2} $mobo_model$mobo_version$mobo_serial"
-               bios_line="${C1}Bios$SEP3${C2} $bios_vendor ${C1}version$SEP3${C2} $bios_version ${C1}date$SEP3${C2} $bios_date"
-               if [[ $( calculate_line_length "$mobo_line$bios_line" ) -lt $LINE_MAX ]];then
+               bios_line="${C1}Bios$SEP3${C2} $bios_vendor ${C1}version$SEP3${C2} $bios_version ${C1}date$SEP3${C2} $bios_date$bios_rom"
+               if [[ $( calculate_line_length "$mobo_line$bios_line" ) -lt $COLS_INNER ]];then
                        mobo_line="$mobo_line $bios_line"
                        bios_line=''
                fi
@@ -6930,21 +9960,21 @@ print_machine_data()
                                product_serial=" ${C1}serial$SEP3${C2} ${A_MACHINE_DATA[3]} "
                        fi
                        system_line="${C1}System$SEP3${C2} $system_vendor ${C1}product$SEP3${C2} $product_name$product_version$product_serial"
-                       if [[ -n $chassis_line && $( calculate_line_length "$system_line$chassis_line" ) -lt $LINE_MAX ]];then
+                       if [[ -n $chassis_line && $( calculate_line_length "$system_line$chassis_line" ) -lt $COLS_INNER ]];then
                                system_line="$system_line $chassis_line"
                                chassis_line=''
                        fi
                fi
                IFS="$ORIGINAL_IFS"
        else
-               system_line="${C2}No /sys/class/dmi machine data. Try newer kernel, or install dmidecode.${CN}"
+               system_line="${C2}$sysDmiNull${CN}"
        fi
        # patch to dump all of above if dmidecode was data source and non root user
        if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-non-root-user' || ${A_MACHINE_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then
                if [[ ${A_MACHINE_DATA[0]} == 'dmidecode-non-root-user' ]];then
-                       system_line="${C2}No /sys/class/dmi. Using dmidecode: you must be root to run dmidecode.${CN}"
+                       system_line="${C2}${sysDmiError}dmidecode: you must be root to run dmidecode${CN}"
                elif [[ ${A_MACHINE_DATA[0]} == 'dmidecode-no-smbios-dmi-data' ]];then
-                       system_line="${C2}No /sys/class/dmi. Using dmidecode: no machine data available.${CN}"
+                       system_line="${C2}${sysDmiError}dmidecode: no machine data available${CN}"
                fi
                mobo_line=''
                bios_line=''
@@ -7008,9 +10038,17 @@ print_networking_data()
        eval $LOGFS
        local i='' card_id='' network_data='' a_network_working='' port_data='' driver_data=''
        local card_string='' port_plural='' module_version='' pci_bus_id='' bus_usb_text=''
-       local bus_usb_id='' line_starter='Network:' card_string='' card_data=''
+       local bus_usb_id='' line_starter='Network:' card_string='' card_data='' chip_id=''
+       local driver=''
        # set A_NETWORK_DATA
-       get_networking_data
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               if [[ $B_PCICONF_SET == 'false' ]];then
+                       get_pciconf_data
+               fi
+               get_pciconf_card_data 'network'
+       else
+               get_networking_data
+       fi
 
        # will never be null because null is handled in get_network_data, but in case we change
        # that leaving this test in place.
@@ -7030,15 +10068,23 @@ print_networking_data()
                        pci_bus_id=''
                        port_data=''
                        port_plural=''
+                       card_id=''
+                       chip_id=''
 
                        if [[ ${#A_NETWORK_DATA[@]} -gt 1 ]];then
-                               card_id="-$(( $i + 1 ))"
+                               chip_id="-$(( $i + 1 ))"
                        fi
-                       if [[ -n ${a_network_working[1]} && $B_EXTRA_DATA == 'true' ]];then
+                       if [[ -n ${a_network_working[1]} && $B_EXTRA_DATA == 'true' && $BSD_TYPE != 'bsd' ]];then
                                module_version=$( print_module_version "${a_network_working[1]}" )
                        fi
                        if [[ -n ${a_network_working[1]} ]];then
-                               driver_data="${C1}driver$SEP3${C2} ${a_network_working[1]}$module_version "
+                               # note: linux drivers can have numbers, like tg3
+                               if [[ $BSD_TYPE == 'bsd' ]];then
+                                       driver=$( sed 's/[0-9]*$//' <<< ${a_network_working[1]} )
+                               else
+                                       driver=${a_network_working[1]}
+                               fi
+                               driver_data="${C1}driver$SEP3${C2} ${driver}$module_version "
                        fi
                        if [[ -n ${a_network_working[2]} && $B_EXTRA_DATA == 'true' ]];then
                                if [[ $( wc -w <<< ${a_network_working[2]} ) -gt 1 ]];then
@@ -7050,15 +10096,28 @@ print_networking_data()
                                if [[ -z $( grep '^usb-' <<< ${a_network_working[4]} ) ]];then
                                        bus_usb_text='bus-ID'
                                        bus_usb_id=${a_network_working[4]}
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               if [[ $BSD_TYPE != 'bsd' ]];then
+                                                       chip_id=$( get_lspci_chip_id "${a_network_working[4]}" )
+                                               else
+                                                       chip_id=${a_network_working[10]}
+                                               fi
+                                       fi
                                else
                                        bus_usb_text='usb-ID'
                                        bus_usb_id=$( cut -d '-' -f '2-4' <<< ${a_network_working[4]} )
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               chip_id=${a_network_working[10]}
+                                       fi
                                fi
                                pci_bus_id="${C1}$bus_usb_text$SEP3${C2} $bus_usb_id"
+                               if [[ -n $chip_id ]];then
+                                       chip_id=" ${C1}chip-ID$SEP3${C2} $chip_id"
+                               fi
                        fi
                        card_string="${C1}Card$card_id:${C2} ${a_network_working[0]} "
-                       card_data="$driver_data$port_data$pci_bus_id"
-                       if [[ $( calculate_line_length "$card_string$card_data" ) -gt $LINE_MAX ]];then
+                       card_data="$driver_data$port_data$pci_bus_id$chip_id"
+                       if [[ $( calculate_line_length "$card_string$card_data" ) -gt $COLS_INNER ]];then
                                network_data=$( create_print_line "$line_starter" "$card_string" )
                                line_starter=' '
                                card_string=''
@@ -7071,6 +10130,10 @@ print_networking_data()
                                print_network_advanced_data
                        fi
                done
+       else
+               network_data="${C1}Card:${C2} Failed to Detect Network Card! "
+               network_data=$( create_print_line "$line_starter" "$network_data" )
+               print_screen_output "$network_data"
        fi
        if [[ $B_SHOW_IP == 'true' ]];then
                print_networking_ip_data
@@ -7133,7 +10196,7 @@ print_networking_ip_data()
        local wan_ip_data='' a_interfaces_working='' interfaces='' i=''
        local if_id='' if_ip='' if_ipv6='' if_ipv6_string='' full_string='' if_string=''
        local if_id_string='' if_ip_string=''
-       local line_max=$(( $LINE_MAX - 50 ))
+       local line_max=$(( $COLS_INNER - 40 ))
 
        # set A_INTERFACES_DATA
        get_networking_local_ip_data
@@ -7354,9 +10417,10 @@ print_partition_data()
 {
        eval $LOGFS
        local a_partition_working='' partition_used='' partition_data=''
-       local counter=0 i=0 a_partition_data='' line_starter='' line_max=$(( $LINE_MAX - 35 ))
+       local counter=0 i=0 a_partition_data='' line_starter='' line_max=$(( $COLS_INNER - 25 ))
        local partitionIdClean='' part_dev='' full_dev='' part_label='' full_label=''
-       local part_uuid='' full_uuid='' dev_remote='' full_fs='' line_max_label_uuid=$(( $LINE_MAX - 10 ))
+       local part_uuid='' full_uuid='' dev_remote='' full_fs='' line_max_label_uuid=$COLS_INNER
+       local b_non_dev='false' holder=''
 
        # set A_PARTITION_DATA
        get_partition_data
@@ -7378,15 +10442,19 @@ print_partition_data()
                        if [[ -n ${a_partition_working[5]} ]];then
                                full_fs="${a_partition_working[5]}"
                        else
-                               full_fs='N/A' # reset partition used to null
+                               full_fs='N/A' # reset partition fs type
                        fi
                        full_fs="${C1}fs$SEP3${C2} $full_fs "
 
                        if [[ $B_SHOW_LABELS == 'true' || $B_SHOW_UUIDS == 'true' ]];then
                                if [[ -n ${a_partition_working[6]} ]];then
-                                       if [[ -z $( grep -E '(^//|:/)' <<< ${a_partition_working[6]} ) ]];then
+                                       if [[ -z $( grep -E '(^//|:/|non-dev)' <<< ${a_partition_working[6]} ) ]];then
                                                part_dev="/dev/${a_partition_working[6]}"
                                                dev_remote='dev'
+                                       elif [[ -n $( grep '^non-dev' <<< ${a_partition_working[6]} ) ]];then
+                                               holder=$( sed 's/non-dev-//' <<< ${a_partition_working[6]} )
+                                               part_dev="$holder"
+                                               dev_remote='raid'
                                        else
                                                part_dev="${a_partition_working[6]}"
                                                dev_remote='remote'
@@ -7415,7 +10483,7 @@ print_partition_data()
                        fi
                        # don't show user names in output
                        if [[ $B_OUTPUT_FILTER == 'true' ]];then
-                               partitionIdClean=$( sed -r "s|/home/([^/]+)/(.*)|/home/$FILTER_STRING/\2|" <<< ${a_partition_working[0]} )
+                               partitionIdClean=$( sed $SED_RX "s|/home/([^/]+)/(.*)|/home/$FILTER_STRING/\2|" <<< ${a_partition_working[0]} )
                        else
                                partitionIdClean=${a_partition_working[0]}
                        fi
@@ -7450,6 +10518,20 @@ print_partition_data()
        eval $LOGFE
 }
 
+print_program_version()
+{
+       local patch_version_number=$( get_patch_version_string )
+       local program_version="${C1}$SCRIPT_NAME$SEP3${C2} $SCRIPT_VERSION_NUMBER$patch_version_number${CN}"
+       # great trick from: http://ideatrash.net/2011/01/bash-string-padding-with-sed.html
+       # left pad: sed -e :a -e 's/^.\{1,80\}$/& /;ta'
+       # right pad: sed -e :a -e 's/^.\{1,80\}$/ &/;ta'
+       # center pad: sed -e :a -e 's/^.\{1,80\}$/ & /;ta'
+       #local line_max=$COLS_INNER
+       #program_version="$( sed -e :a -e "s/^.\{1,$line_max\}$/ &/;ta" <<< $program_version )" # use to create padding if needed
+       # program_version=$( create_print_line "Version:" "$program_version" )
+       print_screen_output "$program_version"
+}
+
 print_ps_data()
 {
        eval $LOGFS
@@ -7457,12 +10539,12 @@ print_ps_data()
        local b_print_first='true' 
 
        if [[ $B_SHOW_PS_CPU_DATA == 'true' ]];then
-               get_ps_data 'cpu'
+               get_ps_tcm_data 'cpu'
                print_ps_item 'cpu' "$b_print_first"
                b_print_first='false' 
        fi
        if [[ $B_SHOW_PS_MEM_DATA == 'true' ]];then
-               get_ps_data 'mem'
+               get_ps_tcm_data 'mem'
                print_ps_item 'mem' "$b_print_first"
        fi
        
@@ -7542,13 +10624,315 @@ print_ps_item()
        eval $LOGFE
 }
 
+print_raid_data()
+{
+       eval $LOGFS
+       local device='' device_string='' device_state='' raid_level='' device_components=''
+       local device_report='' u_data='' blocks='' super_blocks='' algorithm='' chunk_size=''
+       local bitmap_values='' recovery_progress_bar='' recovery_percent='' recovered_sectors=''
+       local finish_time='' recovery_speed='' raid_counter=0 device_counter=1 basic_counter=1
+       local a_raid_working='' raid_data='' kernel_support='' read_ahead='' unused_devices=''
+       local basic_raid='' basic_raid_separator='' basic_raid_plural='' inactive=''
+       local component_separator='' device_id='' print_string='' loop_limit=0 array_count_unused=''
+       local array_count='' raid_event='' b_print_lines='true'
+       local no_raid_detected='' dev_string='/dev/'
+       local empty_raid_data='' report_size='report' blocks_avail='blocks' chunk_raid_usage='chunk size'
+       
+       if [[ -n $BSD_TYPE ]];then
+               no_raid_detected='No zfs software RAID detected - other types not yet supported.'
+               empty_raid_data='No zfs RAID data available - other types not yet supported.'
+               report_size='full size'
+               blocks_avail='available size'
+               chunk_raid_usage='raid allocated'
+       else
+               no_raid_detected="No RAID data available - $FILE_MDSTAT is missing - is md_mod kernel module loaded?"
+               empty_raid_data="No RAID devices detected - $FILE_MDSTAT and md_mod kernel raid module present"
+       fi
+       
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               dev_string=''
+       fi
+       if [[ $B_RAID_SET != 'true' ]];then
+               get_raid_data
+       fi
+
+       for (( i=0; i < ${#A_RAID_DATA[@]}; i++ ))
+       do
+               IFS=","
+               a_raid_working=(${A_RAID_DATA[i]})
+               IFS="$ORIGINAL_IFS"
+               
+               # reset on each iteration
+               algorithm=''
+               bitmap_values=''
+               blocks=''
+               component_separator=''
+               device=''
+               device_components=''
+               device_id=''
+               device_report=''
+               device_state=''
+               failed=''
+               finish_time=''
+               inactive=''
+               raid_event=''
+               raid_level=''
+               recovery_percent=''
+               recovery_progress_bar=''
+               recovered_sectors=''
+               recovery_speed=''
+               spare=''
+               super_blocks=''
+               u_data=''
+               
+               if [[ -n $( grep '^md' <<< ${a_raid_working[0]} ) && -z $BSD_TYPE ]] || \
+               [[ -n $BSD_TYPE && ${a_raid_working[0]} != '' ]];then
+                       if [[ $B_SHOW_BASIC_RAID == 'true' ]];then
+                               if [[ $basic_raid != '' ]];then
+                                       basic_raid_plural='s'
+                               fi
+                               if [[ ${a_raid_working[1]} == 'inactive' ]];then
+                                       inactive=" - ${a_raid_working[1]}"
+                               fi
+                               basic_raid="$basic_raid$basic_raid_separator${C1}$basic_counter${SEP3}${C2} $dev_string${a_raid_working[0]}$inactive"
+                               basic_raid_separator=' '
+                               (( basic_counter++ ))
+                       else
+                               device_id="-$device_counter"
+                               device="$dev_string${a_raid_working[0]}"
+                               
+                               (( device_counter++ ))
+                               if [[ ${a_raid_working[1]} != '' ]];then
+                                       device_state=" - ${a_raid_working[1]}"
+                               fi
+                               
+                               if [[ ${a_raid_working[2]} == '' ]];then
+                                       raid_level='N/A'
+                               else
+                                       raid_level=${a_raid_working[2]}
+                               fi
+                               # there's one case: md0 : inactive  that has to be protected against
+                               if [[ ${a_raid_working[2]} == '' && ${a_raid_working[1]} == 'inactive' ]];then
+                                       raid_level=''
+                               else
+                                       raid_level=" ${C1}raid${SEP3}${C2} $raid_level"
+                               fi
+                               if [[ ${a_raid_working[4]} != '' ]];then
+                                       device_report="${a_raid_working[4]}"
+                               else
+                                       device_report="N/A"
+                               fi
+                               if [[ $B_EXTRA_DATA == 'true' ]];then
+                                       if [[ ${a_raid_working[6]} != '' ]];then
+                                               blocks=${a_raid_working[6]}
+                                       else
+                                               blocks='N/A'
+                                       fi
+                                       blocks=" ${C1}$blocks_avail${SEP3}${C2} $blocks"
+                                       
+                                       if [[ ${a_raid_working[9]} != '' ]];then
+                                               chunk_size=${a_raid_working[9]}
+                                       else
+                                               chunk_size='N/A'
+                                       fi
+                                       chunk_size=" ${C1}$chunk_raid_usage${SEP3}${C2} $chunk_size"
+                                       if [[ ${a_raid_working[10]} != '' ]];then
+                                               bitmap_value='true'
+                                               bitmap_value=" ${C1}bitmap${SEP3}${C2} $bitmap_value"
+                                       fi
+                               fi
+                               if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                       if [[ ${a_raid_working[5]} != '' ]];then
+                                               u_data=" ${a_raid_working[5]}"
+                                       fi
+                                       if [[ ${a_raid_working[7]} != '' ]];then
+                                               super_blocks=" ${C1}super blocks${SEP3}${C2} ${a_raid_working[7]}"
+                                       fi
+                                       if [[ ${a_raid_working[8]} != '' ]];then
+                                               algorithm=" ${C1}algorithm${SEP3}${C2} ${a_raid_working[8]}"
+                                       fi
+                               fi
+                               if [[ ${a_raid_working[3]} == '' ]];then
+                                       if [[ ${a_raid_working[1]} != 'inactive' ]];then
+                                               device_components='N/A'
+                                       fi
+                               else
+                                       for component in ${a_raid_working[3]}
+                                       do
+                                               if [[ $B_EXTRA_DATA != 'true' ]];then
+                                                       component=$( sed 's/\[[0-9]\+\]//' <<< $component )
+                                               fi
+                                               # NOTE: for bsd zfs, states are: ONLINE,DEGRADED,OFFLINE (at least)
+                                               if [[ -n $( grep -E '(F|DEGRADED)' <<< $component ) ]];then
+                                                       component=$( sed -e 's/(F)//' -e 's/F//' -e 's/DEGRADED//' <<<  $component )
+                                                       failed="$failed $component"
+                                                       component=''
+                                               elif [[ -n $( grep -E '(S|OFFLINE)' <<< $component ) ]];then
+                                                       component=$( sed -e 's/(S)//' -e 's/S//' -e 's/OFFLINE//' <<<  $component )
+                                                       spare="$spare $component"
+                                                       component=''
+                                               else
+                                                       device_components="$device_components$component_separator$component"
+                                                       component_separator=' '
+                                               fi
+                                       done
+
+                                       if [[ $failed != '' ]];then
+                                               failed=" ${C1}FAILED${SEP3}${C2}$failed${C2}"
+                                       fi
+                                       if [[ $spare != '' ]];then
+                                               spare=" ${C1}spare${SEP3}${C2}$spare${C2}"
+                                       fi
+                                       
+                                       if [[ -n $device_components || -n $spare || -n $failed ]];then
+                                               if [[ $B_EXTRA_DATA != 'true' && -z $BSD_TYPE ]];then
+                                                       if [[ $device_report != 'N/A' && -n $device_components ]];then
+                                                               device_components="$device_report - $device_components"
+                                                       fi
+                                               fi
+                                               if [[ $device_components == '' ]];then
+                                                       device_components='none'
+                                               fi
+                                               device_components="${C1}online${SEP3}${C2} $device_components"
+                                               device_components=" ${C1}components${SEP3}${C2} $device_components$failed$spare"
+                                       fi
+                               fi
+                               a_raid_data[$raid_counter]="${C1}Device$device_id${SEP3}${C2} $device$device_state$raid_level$device_components"
+                               
+                               if [[ $B_EXTRA_DATA == 'true' && ${a_raid_working[1]} != 'inactive' ]];then
+                                       a_raid_data[$raid_counter]="${C1}Device$device_id${SEP3}${C2} $device$device_state$device_components"
+                                       (( raid_counter++ ))
+                                       print_string="${C1}Info${SEP3}${C2}$raid_level ${C1}$report_size${SEP3}${C2} $device_report$u_data"
+                                       print_string="$print_string$blocks$chunk_size$bitmap_value$super_blocks$algorithm"
+                                       a_raid_data[$raid_counter]="$print_string"
+                               else
+                                       a_raid_data[$raid_counter]="${C1}Device$device_id${SEP3}${C2} $device$device_state$raid_level$device_components"
+                               fi
+                               (( raid_counter++ ))
+                               
+                               # now let's do the recover line if required
+                               if [[ ${a_raid_working[12]} != '' ]];then
+                                       recovery_percent=$( cut -d '~' -f 2 <<< ${a_raid_working[12]} )
+                                       if [[ ${a_raid_working[14]} != '' ]];then
+                                               finish_time=${a_raid_working[14]}
+                                       else
+                                               finish_time='N/A'
+                                       fi
+                                       finish_time=" ${C1}time remaining${SEP3}${C2} $finish_time"
+                                       if [[ $B_EXTRA_DATA == 'true' ]];then
+                                               if [[ ${a_raid_working[13]} != '' ]];then
+                                                       recovered_sectors=" ${C1}sectors${SEP3}${C2} ${a_raid_working[13]}"
+                                               fi
+                                       fi
+                                       if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                                               if [[ ${a_raid_working[11]} != '' ]];then
+                                                       recovery_progress_bar=" ${a_raid_working[11]}"
+                                               fi
+                                               if [[ ${a_raid_working[15]} != '' ]];then
+                                                       recovery_speed=" ${C1}speed${SEP3}${C2} ${a_raid_working[15]}"
+                                               fi
+                                       fi
+                                       
+                                       a_raid_data[$raid_counter]="${C1}Recovering${SEP3}${C2} $recovery_percent$recovery_progress_bar$recovered_sectors$finish_time$recovery_speed"
+                                       (( raid_counter++ ))
+                               fi
+                       fi
+               elif [[ ${a_raid_working[0]} == 'KernelRaidSupport' ]];then
+                       if [[ ${a_raid_working[1]} == '' ]];then
+                               kernel_support='N/A'
+                       else
+                               kernel_support=${a_raid_working[1]}
+                       fi
+                       kernel_support=" ${C1}supported${SEP3}${C2} $kernel_support"
+               elif [[ ${a_raid_working[0]} == 'ReadAhead' ]];then
+                       if [[ ${a_raid_working[1]} != '' ]];then
+                               read_ahead=${a_raid_working[1]}
+                               read_ahead=" ${C1}read ahead${SEP3}${C2} $read_ahead"
+                       fi
+               elif [[ ${a_raid_working[0]} == 'UnusedDevices' ]];then
+                       if [[ ${a_raid_working[1]} == '' ]];then
+                               unused_devices='N/A'
+                       else
+                               unused_devices=${a_raid_working[1]}
+                       fi
+                       unused_devices="${C1}Unused Devices${SEP3}${C2} $unused_devices"
+               elif [[ ${a_raid_working[0]} == 'raidEvent' ]];then
+                       if [[ ${a_raid_working[1]} != '' ]];then
+                               raid_event=${a_raid_working[1]}
+                               raid_event=" ${C1}Raid Event${SEP3}${C2} ${a_raid_working[1]}"
+                       fi
+               fi
+       done
+       
+       if [[ $B_SHOW_BASIC_RAID == 'true' && $basic_raid != '' ]];then
+               a_raid_data[0]="${C1}Device$basic_raid_plural${SEP3}${C2} $basic_raid"
+       fi
+       # note bsd temp test hack to make it run
+       if [[ $B_MDSTAT_FILE != 'true' && -z $BSD_TYPE ]] || \
+       [[ -n $BSD_TYPE && $B_BSD_RAID == 'false' ]];then
+               if [[ $B_SHOW_RAID_R == 'true' ]];then
+                       a_raid_data[0]="$no_raid_detected"
+               else
+                       b_print_lines='false'
+               fi
+       else
+               if [[ ${a_raid_data[0]} == '' ]];then
+                       if [[ $B_SHOW_BASIC_RAID != 'true' ]];then
+                               a_raid_data[0]="$empty_raid_data"
+                       else
+                               b_print_lines='false'
+                       fi
+               fi
+               # now let's add on the system line and the unused device line. Only print on -xx
+               if [[ $kernel_support$read_ahead$raid_event != '' ]];then
+                       array_count=${#a_raid_data[@]}
+                       a_raid_data[array_count]="${C1}System${SEP3}${C2}$kernel_support$read_ahead$raid_event"
+                       loop_limit=1
+               fi
+               if [[ $unused_devices != '' ]];then
+                       array_count_unused=${#a_raid_data[@]}
+                       a_raid_data[array_count_unused]="$unused_devices"
+                       loop_limit=2
+               fi
+       fi
+
+       # we don't want to print anything if it's -b and no data is present, just a waste of a line
+       if [[ $b_print_lines == 'true' ]];then
+               # print out all lines, line starter on first line
+               for (( i=0; i < ${#a_raid_data[@]} - $loop_limit;i++ ))
+               do
+                       if [[ $i -eq 0 ]];then
+                               line_starter='RAID:'
+                       else
+                               line_starter=' '
+                       fi
+                       if [[ $B_EXTRA_EXTRA_DATA == 'true' && $array_count != '' ]];then
+                               if [[ $i == 0 ]];then
+                                       raid_data=$( create_print_line "$line_starter" "${a_raid_data[array_count]}" )
+                                       print_screen_output "$raid_data"
+                                       line_starter=' '
+                               fi
+                       fi
+                       raid_data=$( create_print_line "$line_starter" "${a_raid_data[i]}" )
+                       print_screen_output "$raid_data"
+                       if [[ $B_EXTRA_EXTRA_DATA == 'true' && $array_count_unused != '' ]];then
+                               if [[ $i == $(( array_count_unused - 2 )) ]];then
+                                       raid_data=$( create_print_line "$line_starter" "${a_raid_data[array_count_unused]}" )
+                                       print_screen_output "$raid_data"
+                               fi
+                       fi
+               done
+       fi
+       
+       eval $LOGFE
+}
 
 # currently only apt using distros support this feature, but over time we can add others
 print_repo_data()
 {
        eval $LOGFS
        local repo_count=0 repo_line='' file_name='' file_content='' file_name_holder=''
-       local repo_full='' b_print_next_line='false' 
+       local repo_full='' b_print_next_line='false' repo_type=''
        
        get_repo_data
        
@@ -7557,8 +10941,9 @@ print_repo_data()
                while read repo_line
                do
                        (( repo_count++ ))
-                       file_name=$( cut -d ':' -f 1 <<< $repo_line )
-                       file_content=$( cut -d ':' -f 2-6 <<< $repo_line )
+                       repo_type=$( cut -d ':' -f 1 <<< $repo_line )
+                       file_name=$( cut -d ':' -f 2 <<< $repo_line )
+                       file_content=$( cut -d ':' -f 3-7 <<< $repo_line )
                        # this will dump unwanted white space line starters. Some irc channels
                        # use bots that show page title for urls, so need to break the url by adding 
                        # a white space.
@@ -7567,12 +10952,13 @@ print_repo_data()
                        else
                                file_content=$( echo $file_content )
                        fi
+                       # echo $file_name : $file_name_holder : $repo_type : $file_content
                        # check file name, if different, update the holder for print out
                        if [[ $file_name != $file_name_holder ]];then
-                               if [[ $REPO_FILE_ID != 'pisi repo' ]];then
-                                       repo_full="${C1}Active $REPO_FILE_ID in file:${C2} $file_name"
+                               if [[ $repo_type == 'pisi repo' || $repo_type == 'urpmq repo' ]];then
+                                       repo_full="${C1}$repo_type:${C2} $file_name"
                                else
-                                       repo_full="${C1}$REPO_FILE_ID:${C2} $file_name"
+                                       repo_full="${C1}Active $repo_type in file:${C2} $file_name"
                                fi
                                file_name_holder=$file_name
                                b_print_next_line='true'
@@ -7600,37 +10986,28 @@ print_repo_data()
        eval $LOGFE
 }
 
-print_script_version()
-{
-       local script_patch_number=$( get_patch_version_string )
-       local script_version="${C1}$SCRIPT_NAME$SEP3${C2} $SCRIPT_VERSION_NUMBER$script_patch_number${CN}"
-       # great trick from: http://ideatrash.net/2011/01/bash-string-padding-with-sed.html
-       # left pad: sed -e :a -e 's/^.\{1,80\}$/& /;ta'
-       # right pad: sed -e :a -e 's/^.\{1,80\}$/ &/;ta'
-       # center pad: sed -e :a -e 's/^.\{1,80\}$/ & /;ta'
-       #local line_max=$(( $LINE_MAX - 10 ))
-       #script_version="$( sed -e :a -e "s/^.\{1,$line_max\}$/ &/;ta" <<< $script_version )" # use to create padding if needed
-       # script_version=$( create_print_line "Version:" "$script_version" )
-       print_screen_output "$script_version"
-}
-
 print_sensors_data()
 {
        eval $LOGFS
        local mobo_temp='' cpu_temp='' psu_temp='' cpu_fan='' mobo_fan='' ps_fan='' sys_fans='' sys_fans2='' 
        local temp_data='' fan_data='' fan_data2='' b_is_error='false' fan_count=0 gpu_temp=''
        local a_sensors_working=''
+       local no_sensors_message='None detected - is lm-sensors installed and configured?'
        local Sensors_Data="$( get_sensors_output )"
        get_sensors_data
        
+       if [[ $BSD_TYPE == 'bsd' ]];then
+               no_sensors_message='This feature is not yet supported for BSD systems.'
+       fi
+       
        IFS=","
        a_sensors_working=( ${A_SENSORS_DATA[0]} )
        IFS="$ORIGINAL_IFS"
        # initial error cases, for missing app or unconfigured sensors. Note that array 0
-       # always has at least 3 items, cpu/mobo/psu temp in it. If it's a single item, then
-       # it's an error message, not the real data arrays.
-       if [[ ${#a_sensors_working[@]} -eq 1 ]];then
-               cpu_temp="${C1}Error:${C2} ${A_SENSORS_DATA[0]}"
+       # always has at least 3 items, cpu/mobo/psu temp in it. If the count is 0, then
+       # no sensors are installed/configured
+       if [[ ${#a_sensors_working[@]} -eq 0 ]];then
+               cpu_temp=$no_sensors_message
                b_is_error='true'
        else
                for (( i=0; i < ${#A_SENSORS_DATA[@]}; i++ ))
@@ -7661,7 +11038,7 @@ print_sensors_data()
                                        gpu_temp=$( get_gpu_temp_data )
                                        # dump the unneeded screen data for single gpu systems 
                                        if [[ $( wc -w <<< $gpu_temp ) -eq 1 && $B_EXTRA_DATA != 'true' ]];then
-                                               gpu_temp=$( cut -d ':' -f 2 <<< $gpu_temp )
+                                               gpu_temp=${gpu_temp#*:}
                                        fi
                                        if [[ -n $gpu_temp ]];then
                                                gpu_temp="${C1}gpu$SEP3${C2} ${gpu_temp} "
@@ -7757,22 +11134,30 @@ print_sensors_data()
 print_system_data()
 {
        eval $LOGFS
-       local system_data='' bits='' desktop_environment='' 
+       local system_data='' bits='' desktop_environment='' dm_data='' de_extra_data=''
        local host_kernel_string='' de_distro_string='' host_string='' desktop_type='Desktop'
        local host_name=$HOSTNAME
-       local current_kernel=$( uname -rm ) # | gawk '{print $1,$3,$(NF-1)}' )
+       local current_kernel=$( get_kernel_version ) 
        local distro="$( get_distro_data )"
-       local tty_session=$( basename "$( tty 2>/dev/null )" | sed 's/[^0-9]*//g' )
+       local tty_session=''
        
        # I think these will work, maybe, if logged in as root and in X
-       if [[ $B_RUNNING_IN_X == 'true' ]];then
+       if [[ $B_RUNNING_IN_DISPLAY == 'true' ]];then
                desktop_environment=$( get_desktop_environment )
                if [[ -z $desktop_environment ]];then
                        desktop_environment='N/A'
                fi
+               
+               if [[  $B_EXTRA_EXTRA_EXTRA_DATA == 'true' ]];then
+                       de_extra_data=$( get_desktop_extra_data )
+                       if [[ -n $de_extra_data ]];then
+                               de_extra_data=" ${C1}info$SEP3${C2} $de_extra_data"
+                       fi
+               fi
        else
+               tty_session=$( get_tty_number )
                if [[ -z $tty_session && $B_CONSOLE_IRC == 'true' ]];then
-                       tty_session=$( get_console_irc_tty )
+                       tty_session=$( get_tty_console_irc )
                fi
                if [[ -n $tty_session ]];then
                        tty_session=" $tty_session"
@@ -7780,7 +11165,22 @@ print_system_data()
                desktop_environment="tty$tty_session"
                desktop_type='Console'
        fi
-       de_distro_string="${C1}$desktop_type$SEP3${C2} $desktop_environment ${C1}Distro$SEP3${C2} $distro"
+       # having dm type can be useful if you are accessing remote system
+       # or are out of X and don't remember which dm is running the system
+       if [[  $B_EXTRA_EXTRA_DATA == 'true' ]];then
+               dm_data=$( get_display_manager )
+               # here we only want the dm info to show N/A if in X
+               if [[ -z $dm_data && $B_RUNNING_IN_DISPLAY == 'true' ]];then
+                       dm_data='N/A'
+               fi
+               # only print out of X if dm_data has info, then it's actually useful, but
+               # for headless servers, no need to print dm stuff.
+               if [[ -n $dm_data ]];then
+                       dm_data=" ${C1}dm$SEP3${C2} $dm_data"
+               fi
+       fi
+       
+       de_distro_string="${C1}$desktop_type$SEP3${C2} $desktop_environment$de_extra_data$dm_data ${C1}Distro$SEP3${C2} $distro"
        if [[ $B_EXTRA_DATA == 'true' ]];then
                gcc_string=$( get_gcc_kernel_version )
                if [[ -n $gcc_string ]];then
@@ -7788,7 +11188,7 @@ print_system_data()
                fi
        fi
        # check for 64 bit first
-       if [[ -n $( uname -m | grep -o 'x86_64' ) ]];then
+       if [[ -n $( uname -m | grep -E '(x86_64|amd64)' ) ]];then
                bits="64"
        else
                bits="32"
@@ -7807,7 +11207,7 @@ print_system_data()
                system_data=$( create_print_line "System:" "$host_string$host_name ${C1}Kernel$SEP3${C2}" )
        fi
        host_kernel_string="$host_string${C1}Kernel$SEP3${C2} $current_kernel$bits "
-       if [[ $( calculate_line_length "$host_kernel_string$de_distro_string" ) -lt $LINE_MAX ]];then
+       if [[ $( calculate_line_length "$host_kernel_string$de_distro_string" ) -lt $COLS_INNER ]];then
                system_data="$host_kernel_string$de_distro_string"
                system_data=$( create_print_line "System:" "$system_data" )
        else
@@ -7824,6 +11224,7 @@ print_unmounted_partition_data()
        eval $LOGFS
        local a_unmounted_data='' line_starter='' unmounted_data='' full_fs=''
        local full_dev='' full_size='' full_label='' full_uuid='' full_string=''
+       local bsd_unsupported='This feature is not yet supported for BSD systems.'
        
        if [[ -z ${A_PARTITION_DATA} ]];then
                get_partition_data
@@ -7871,17 +11272,159 @@ print_unmounted_partition_data()
                        else
                                line_starter=' '
                        fi
+                       # temporary message to indicate not yet supported
+                       if [[ $BSD_TYPE == 'bsd' ]];then
+                               full_string=$bsd_unsupported
+                       fi
                        unmounted_data=$( create_print_line "$line_starter" "$full_string" )
                        print_screen_output "$unmounted_data"
                done
        else
-               unmounted_data=$( create_print_line "Unmounted:" "No unmounted partitions detected." )
+               unmounted_data=$( create_print_line "Unmounted:" "No unmounted partitions detected" )
                print_screen_output "$unmounted_data"
        fi
        
        eval $LOGFE
 }
 
+print_weather_data()
+{
+       eval $LOGFS
+       
+       local weather_data='' location_string='' local_time='' time_string='' pressure=''
+       local a_location='' a_weather='' weather_string='' weather='' temp='' winds='' humidity=''
+       local time_zone='' observation_time='' city='' state='' country='' altitude=''
+       local heat_index="" wind_chill='' dewpoint='' xxx_humidity=''
+       local openP='(' closeP=')'
+       
+       if [[ $B_RUNNING_IN_SHELL == 'false' ]];then
+               openP=''
+               closeP=''
+       fi
+       
+       get_weather_data
+       
+       # city ";" regionCode ";" regionName ";" countryName ";" countryCode ";" countryCode3 
+       #  ";" latitude "," longitude ";" postalCode ";" timeZone
+       
+       # observationTime ";" localTime ";" weather ";" tempString ";" humidity 
+       # ";" windString ";" pressureString ";" dewpointString ";" heatIndexString
+       # ";" windChillString ";" siteElevation
+
+       if [[ ${#A_WEATHER_DATA[@]} -eq 2 ]];then
+               IFS=";"
+               a_location=(${A_WEATHER_DATA[0]})
+               a_weather=(${A_WEATHER_DATA[1]})
+               IFS="$ORIGINAL_IFS"
+               
+               if [[ -n ${a_weather[3]} ]];then
+                       temp=${a_weather[3]}
+               else
+                       temp='N/A'
+               fi
+               if [[ -n ${a_weather[2]} ]];then
+                       weather=" - ${a_weather[2]}"
+               else
+                       weather=''
+               fi
+               if [[ $B_EXTRA_DATA == 'true' ]];then
+                       if [[ -n ${a_weather[5]} ]];then
+                               winds=" ${C1}Wind$SEP3${C2} ${a_weather[5]}"
+                       fi
+               fi
+               if [[ $B_EXTRA_EXTRA_DATA == 'true' ]];then
+                       if [[ -n ${a_weather[4]} ]];then
+                               humidity=" ${C1}Humidity$SEP3${C2} ${a_weather[4]}"
+                       fi
+                       if [[ -n ${a_weather[6]} ]];then
+                               pressure="${C1}Pressure$SEP3${C2} ${a_weather[6]} "
+                       fi
+               fi
+               weather_string="${C1}Conditions$SEP3${C2} $temp$weather$winds$humidity"
+               
+               if [[ -n ${a_weather[1]} ]];then
+                       local_time=" ${a_weather[1]}"
+               else
+                       local_time=" $(date)"
+               fi
+               if [[ $B_EXTRA_DATA == 'true' && -n ${a_location[8]} ]];then
+                       time_zone=" (${a_location[8]})"
+               fi
+               time_string="${C1}Time$SEP3${C2}$local_time$time_zone"
+
+               if [[ $B_EXTRA_DATA != 'true' ]];then
+                       weather_data="$weather_string $time_string"
+                       weather_data=$( create_print_line "Weather:" "$weather_data" )
+                       print_screen_output "$weather_data"
+               else
+                       weather_data="$weather_string"
+                       weather_data=$( create_print_line "Weather:" "$weather_data" )
+                       print_screen_output "$weather_data"
+                       if [[ $B_EXTRA_EXTRA_EXTRA_DATA == 'true' ]];then
+                               if [[ -n ${a_weather[8]} ]];then
+                                       heat_index="${C1}Heat Index$SEP3${C2} ${a_weather[8]} "
+                               fi
+                               if [[ -n ${a_weather[9]} ]];then
+                                       wind_chill="${C1}Wind Chill$SEP3${C2} ${a_weather[9]} "
+                               fi
+                               if [[ -n ${a_weather[7]} ]];then
+                                       dew_point="${C1}Dew Point$SEP3${C2} ${a_weather[7]} "
+                               fi
+                               if [[ -n ${a_weather[0]} ]];then
+                                       observation_time=" ${C1}Observation Time$SEP3${C2} ${a_weather[0]} "
+                               fi
+                               if [[ $B_OUTPUT_FILTER != 'true' ]];then
+                                       if [[ -n ${a_location[0]} ]];then
+                                               city=" ${a_location[0]}"
+                                       fi
+                                       if [[ -n ${a_location[1]} ]];then
+                                               state=" ${a_location[1]}"
+                                       fi
+                                       if [[ -n ${a_location[5]} ]];then
+                                               country=" $openP${a_location[5]}$closeP"
+                                       fi
+                                       if [[ -n ${a_weather[10]} ]];then
+                                               altitude=" ${C1}Altitude$SEP3${C2} ${a_weather[10]}"
+                                       fi
+                                       location_string="${C1}Location$SEP3${C2}$city$state$country$altitude "
+                               else
+                                       location_string=$time_string$observation_time
+                                       time_string=''
+                                       observation_time=''
+                               fi
+                               # the last three are oftenblank
+                               if [[ -z "$heat_index$wind_chill$dew_point" ]];then
+                                       weather_data=$( create_print_line " " "$pressure$location_string" )
+                                       print_screen_output "$weather_data"
+                               else
+                                       weather_data=$( create_print_line " " "$pressure$heat_index$wind_chill$dew_point" )
+                                       print_screen_output "$weather_data"
+                                       if [[ $B_OUTPUT_FILTER != 'true' ]];then
+                                               weather_data=$( create_print_line " " "$location_string" )
+                                               print_screen_output "$weather_data"
+                                       fi
+                               fi
+                               if [[ -n $time_string$observation_time ]];then
+                                       weather_data=$( create_print_line " " "$time_string$observation_time" )
+                                       print_screen_output "$weather_data"
+                               fi
+                       else
+                               if [[ -n $pressure$time_string ]];then
+                                       weather_data="$pressure$time_string"
+                                       weather_data=$( create_print_line " " "$weather_data" )
+                                       print_screen_output "$weather_data"
+                               fi
+                       fi
+               fi
+       else
+               weather_data=$( create_print_line "Weather:" "Weather data failure: $(date)" )
+               print_screen_output "$weather_data"
+               weather_data=$( create_print_line " " "${A_WEATHER_DATA}" )
+               print_screen_output "$weather_data"
+       fi
+       eval $LOGFE
+}
+
 ########################################################################
 #### SCRIPT EXECUTION
 ########################################################################
index 9a7dfd2..d5fc415 100644 (file)
@@ -32,3 +32,4 @@ sv
 tr
 uk
 zh_CN
+zh_TW
index 35cd48a..0649286 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Czech (http://www.transifex.com/projects/p/quassel/language/cs/)\n"
 "MIME-Version: 1.0\n"
@@ -70,7 +70,7 @@ msgstr "<b>Verze:</b> %1<br><b>Verze protokolu:</b> %2<br><b>Složení:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -81,7 +81,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>A Moderní, distribuovaný IRC Client</b><br><br>Vytvořený &copy;2005-2012 Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> na <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC je duálně-licencován pod <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> a <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Většina ikon náleží &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a>u pod licencí <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Prosíme použijte <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> pro hlášení chyb."
+msgstr "<b>A Moderní, distribuovaný IRC Client</b><br><br>Vytvořený &copy;%1 Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> na <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC je duálně-licencován pod <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> a <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Většina ikon náleží &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a>u pod licencí <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Prosíme použijte <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> pro hlášení chyb."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -95,7 +95,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Rádi bychom poděkovali následujícím přispěvatelům (v abecedním pořadí) a také všem, na které jsme zde zapomněli:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -808,7 +808,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Nastavit..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopírovat označené"
@@ -1027,6 +1027,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identita v klientu již existuje!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Nešifrované spojení zrušeno"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Připojuji se k %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synchronizace s jádrem..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Připojeno k %1..."
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Probíhá přihlášení..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Přihlášení zrušeno"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1342,12 +1398,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Existující pravidla"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Nezdařilo se inicializovat libovolné ukládací rozhraní! Končím..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1355,147 +1411,93 @@ msgid ""
 "to work."
 msgstr "V současné chvíli Quassel podporuje SQLite3 a PostgreSQL. Musíte sestavit vaši\nQt knihovnu s podporou sqlite nebo postgres pluginu aby jádro Quasselu\nmohlo fungovat."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Volám restoreState() i když existuje aktivní sezení!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Uživatelský účet administrátora, nebo jeho heslo není nastaveno."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Nezdařilo se nastavení úložného prostoru!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Vytvářím účet administrátora..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Neplatná adresa %1 pro poslech"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Naslouchám pro GUI klienty na IPv6 %1 portu %2 s použitím protokolu verze %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Nezdařilo se otevření IPv6 rozhraní %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Naslouchám pro GUI klienty na IPv4 %1 portu %2 s použitím protokolu verze %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Nezdařilo se otevření IPv4 rozhraní %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Neplatná adresa %1 pro poslech, neznámý síťový protokol"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Nezdařilo se otevřít síťové rozhraní k poslechu!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Klient připojen od"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Uzavírám server pro základní nastavení."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Připojit se pokouší zastaralý klient... odmítám spojení."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Váš Quassel Klient je příliš starý!</b><br>Toto jádro potřebuje klienta s protokolem alespoň verze %1.<br>Prosíme zvažte aktualizaci vašeho klienta."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Klient"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "příliš staré, odmítám."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Verze jádra %1</b><br>Sestavení: %2<br>Doba běhu %3d%4h%5m (od %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Zahajuji TLS pro klienta:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Klient není inicializován!</b><br>Musíte poslat inicializační zprávu před pokusem o přihlášení."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "neodeslána inicializační zpráva před pokusem o přihlášení, odmítám."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Neplatné uživatelské jméno či heslo!</b><br>Kombinace uživatelského jména a hesla kterou jste zadali nebyla nalezena v databázi."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "inicializováno a přihlášen jako \"%1\" (Uživ-Id: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Neautorizovaný klient odpojen."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Nezdařilo se zahájit sezení pro klienta:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Nepodařilo se nalézt sezení pro klienta:"
@@ -1636,17 +1638,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Vzdálená jádra"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Klient"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "příliš staré, odmítám."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "neodeslána inicializační zpráva před pokusem o přihlášení, odmítám."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Klient není inicializován!</b><br>Musíte poslat inicializační zprávu před pokusem o přihlášení."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Neplatné uživatelské jméno či heslo!</b><br>Kombinace uživatelského jména a hesla kterou jste zadali nebyla nalezena v databázi."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Průvodce nastavením jádra"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Vaše jádro bylo úspěšně nastaveno. Přihlašuji se..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1654,7 +1713,7 @@ msgid ""
 "over."
 msgstr "Nastavení jádra selhalo:<br><b>%1</b><br>Stiskněte <em>Další</em> pro opakování."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1703,46 +1762,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Tento průvodce vás provede skrze nastavení jádra Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Vytvořit účet administrátora"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Nejprve vytvoříme uživatele jádra. První (tento) uživatel bude mít administrátorská práva."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Úvod"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Zvolte skladovací rozhraní"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Prosím zvolte databázové rozhraní pro ukládání dat Quassel jádra."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Možnosti spojení"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Ukládám Vaše nastavení"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1840,103 +1899,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Připojit k jádru"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Síť je mimo provoz"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Odpojeno"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Vyhledávám %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Připojuji se k %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Připojeno k %1..."
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Odpojeno od %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Jádro Quasselu, ke kterému se snazíte připojit, je příliš staré! Prosíme zvažte jeho aktualizaci."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Přijata neplatná data od jádra"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Odpojit od jádra."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Nešifrované spojení zrušeno"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synchronizace s jádrem..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Jádro Quasselu, ke kterému se snažíte připojit, je příliš staré!</b><br> Požadovaný je protokol verze %1 pro spojení."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Probíhá přihlášení..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Přihlášení zrušeno"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Příjem stavu sezení"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synchronizace s %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Příjem stavů sítí"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2117,52 +2135,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (od %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Spojení selhalo. Zkouším další server"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Připojuji se k %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Odpojuji. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Vypnutí jádra"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Nemohu se spojit s %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Chyba spojení: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Klient"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "odpojen (Id-Uživatele: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2170,7 +2188,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Obdrženo špatné networkId od jádra při pokusu o vytvoření sítě %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2218,8 +2236,8 @@ msgstr "posílám %2 požadavek CTCP-%1"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2234,7 +2252,7 @@ msgid ""
 msgstr "[použití] /delkey <kanál|přezdívka> smaže šifrovací klíč pro kanál nebo přezdívku. Nastavení klíče pro specifický kanál, či rozhovor, lze provést pomocí /delkey, když je na popředí."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2247,7 +2265,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Klíč pro %1 byl smazán."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2280,7 +2298,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Spuštěna výměna klíče s %1."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2289,13 +2307,13 @@ msgid ""
 "with QCA present."
 msgstr "Chyba: Nastavení šifrovacího klíče vyžaduje sestavení Quasselu s podporou pro knihovnu Qt Kryptografické Architektury (QCA). Kontaktujte svého distributora pro získání baličku Quassel s podporou QCA, nebo znovu sestavte Quassel s dostupnou QCA."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Zahajuji rozhovor s %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2303,26 +2321,26 @@ msgid ""
 "it."
 msgstr "[použití] /setkey <kanál|přezdívka> <klíč> nastaví šifrovací klíč pro kanál nebo přezdívku. Nastavení klíče pro specifický kanál, či rozhovor, lze provést pomocí /setkey <klíč>, když je na popředí."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Klíč pro %1 byl nastaven."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[použití] /delkey <kanál|přezdívka> smaže šifrovací klíč pro kanál nebo přezdívku. Nastavení klíče pro specifický kanál, či rozhovor, lze provést pomocí /delkey, když je na popředí."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr "Klíč pro %1 je %2:%3"
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2800,7 +2818,7 @@ msgid "highlight rule"
 msgstr "Pravidla zvýraznění"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Přejmenovat identitu"
@@ -2836,55 +2854,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identity"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Následující problémy je třeba opravit pro uložení změn:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Všechny identity potřebují název</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Každý identita požaduje alespoň jednu definovanou přezdívku</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Pro každou identitu je třeba zadat reálné jméno</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Musíte specifikovat ident pro každou identitu</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Jedna (či více) identita není validní"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Smazat Identitu?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Opravdu chcete smazat identitu \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3916,379 +3934,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Přeřadit"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Verze jádra %1</b><br>Sestavení: %2<br>Doba běhu %3d%4h%5m (od %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Obecné"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Přip&ojit k jádru..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "O&dpojit od jádra"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Informace jádra..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Nastavit &sítě..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Ukončit"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Nastavit seznam místností..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "U&zamknout rozvržení"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Zobrazit vy&hledávání"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Zobrazit Log pro Pryč"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Zobrazit Hlavní &nabídku"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Zo&brazit stavový řádek"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Režim &celé obrazovky"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Nastavit zk&ratky..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Nastavit Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "O progr&amu Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "O &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Ladění Sít&ového-Modelu"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Ladění vrstvy P&ohledu na záložky"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Ladění &Modelu-Zpráv"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Ladění &Seznamů rozhovorů"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Ladící &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Pře-načíst styl"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Skrýt současnou záložku"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigace"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Přejít na další aktivní záložku"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Nastavit rychlý přístup #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Nastavit rychlý přístup #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Nastavit rychlý přístup #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Nastavit rychlý přístup #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Nastavit rychlý přístup #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Nastavit rychlý přístup 5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Nastavit rychlý přístup #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Nastavit rychlý přístup #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Nastavit rychlý přístup #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Nastavit rychlý přístup #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Rychlý přístup #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Rychlý přístup #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Rychlý přístup #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Rychlý přístup #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Rychlý přístup #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Rychlý přístup #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Rychlý přístup #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Rychlý přístup #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Rychlý přístup #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Rychlý přístup #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktivovat další rozhovor"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Aktivovat předchozí rozhovor"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Přejít na další rozhovor"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Přejít na předchozí rozhovor"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "S&oubor"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Sítě"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Záložky"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Seznam místností"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "Liš&ty"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "Na&stavení"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Nápověda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Přezdívky"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Zobrazit seznam přezdívek"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor místností"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Zobrazí monitor místností"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Vstupní řádka"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Zobrazit řádku se vstupem"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Téma"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Zobrazit řádek s tématem"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Hlavní nástrojová lišta"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Připojen k jádru."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Nepřipojen k jádru."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Nešifrované spojení"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Váš klient nepodporuje šifrování skrze SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Citlivá data, například hesla, budou přenášena k jádru Quasselu bez použití šifrování."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Vaše jádro nepodporuje šifrování skrze SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Nedůvěryhodný bezpečnostní certifikát"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4296,33 +4331,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>SSL certifikát poskytnutý jádrem %1 je nedůvěryhodný z následujících důvodů:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Pokračovat"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Zobrazit certifikát"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Chcete tento certifikát přijmout na trvalo a vyhnout se opětovnému schvalování?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Pouze současné sezení"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Navždy"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Chyba spojení s jádrem"
@@ -4803,7 +4838,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Validní přezdívka může obsahovat písmenka anglické abecedy, čísla, a speciální znaky {, }, [, ], \\, |, `, ^, _ a -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Přidat přezdívku"
@@ -4818,7 +4853,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Oznámení"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Vyberte zvukový soubor"
@@ -5426,6 +5461,42 @@ msgid ""
 "network"
 msgstr "Seznam IRC kanálů ke kterým se automaticky připojíte po připojení do dané sítě"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Form"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 38e7187..c2b9bf7 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Danish (http://www.transifex.com/projects/p/quassel/language/da/)\n"
 "MIME-Version: 1.0\n"
@@ -72,7 +72,7 @@ msgstr "<b>Version:</b> %1<br><b>Protokol version:</b> %2<br><b>Bygget:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -97,7 +97,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Vi vil gerne takke de følgende bidragsydere (i alfabetisk rækkefølge) og alle dem vi har glemt at nævne her:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -810,7 +810,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfigurer..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopier valgte"
@@ -1029,6 +1029,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identiteten eksisterer allerede i klienten!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Forbinder til %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "F&orbind til server..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Forbundet til %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Logger på..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1242,7 +1298,7 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:66
 msgctxt "ContextMenuActionProvider|"
 msgid "Client info"
-msgstr ""
+msgstr "Klient stil:"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:67
 msgctxt "ContextMenuActionProvider|"
@@ -1344,12 +1400,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1357,147 +1413,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Administratorbruger eller -password ikke angivet."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Operetter administrator bruger..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Af&bryd fra server"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antik klient prøver at forbinde... nægter."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Klient stil:"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Ugyldigt brugernavn eller kodeord!</b><br>Brugernavn/password-kombinationen du indtastede kunne ikke findes i databasen."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1638,17 +1640,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Klient stil:"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Ugyldigt brugernavn eller kodeord!</b><br>Brugernavn/password-kombinationen du indtastede kunne ikke findes i databasen."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Server opsætnings guide"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Din server blev konfigureret med succes. Logger på..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1656,7 +1715,7 @@ msgid ""
 "over."
 msgstr "Server-opsætning fejlede: <br><b>%1</b><br>Tryk <em>næste</em> for at starte forfra."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1705,46 +1764,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Denne guide vil hjælpe dig med at opsætte Quassel server."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Operetter administrator bruger..."
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduktion"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Forbundet til server."
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Gemmer dine indstillinger"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1842,103 +1901,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "F&orbind til server..."
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Netværk"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Af&bryd fra server"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Forbinder til %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Forbinder til %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Forbundet til %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Forbinder til %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Quassel serveren du prøver at forbinde til er for gammel! Overvej at upgradere den."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Af&bryd fra server"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "F&orbind til server..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Quassel-serveren du er ved at forbinde til er for gammel!</b><br>Klient/server-protokol version %1 er krævet for at forbinde."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Logger på..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Forbinder til %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2118,52 +2136,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Forbindelse mislykkedes. Prøver næste server"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Kunne ikke forbinde til %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Forbindelsesfejl: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Klient stil:"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2171,7 +2189,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2219,8 +2237,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2235,7 +2253,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2248,7 +2266,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2281,7 +2299,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2290,13 +2308,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2304,26 +2322,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2801,7 +2819,7 @@ msgid "highlight rule"
 msgstr "Fremhævnings regel"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Fjern identitet"
@@ -2837,55 +2855,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identiteter"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Alle identiteter skal have et sæt af nicks</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Alle identiteter skal have mindst et nick</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Du skal angive et fuldt navn for alle identitet</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Du skal angive en ident for alle identiteter</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "En eller flere identiteter er ugyldige"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Slet identitet?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Vil du virkeligt slette identiteten \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3916,379 +3934,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Generelt"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "F&orbind til server..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "Af&bryd fra server"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Server &information..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "&Konfigurer Quassel..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Afslut"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Konfigurer Quassel..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Vis &søgelinje"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Vis &søgelinje"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Vis s&tatuslinje"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "&Konfigurer Quassel..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Konfigurer Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "Om Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "&Om"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Ny besked"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debug konsol"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fil"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Netværk"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Vis"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Kanal-liste"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Indstillinger"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Hjælp"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Navneliste"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Vis navneliste"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Vis chat monitor"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Vis chat monitor"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Input felt"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Vis input felt"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Vis emne felt"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Forbundet til server."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Ikke forbundet til serveren."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4296,33 +4331,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Server opsætnings guide"
@@ -4801,7 +4836,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Rediger nick"
@@ -4816,7 +4851,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5424,6 +5459,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Fra"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 8f591e1..92e7f9f 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -1,6 +1,6 @@
 # 
 # Translators:
-# Daniel Albers <daniel@lbe.rs>, 2012
+# Daniel Albers <daniel@lbe.rs>, 2012-2013
 # Daniel Albers <daniel@lbers.com>, 2011-2012
 # Heffer <felix@fetzig.org>, 2013
 # Heffer <felix@fetzig.org>, 2013
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:40+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: German (http://www.transifex.com/projects/p/quassel/language/de/)\n"
 "MIME-Version: 1.0\n"
@@ -75,7 +75,7 @@ msgstr "<b>Version:</b> %1<br><b>Protokollversion:</b> %2<br><b>Kompiliert:</b>
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -86,7 +86,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Ein moderner, dezentralisierter IRC-Client</b><br><br>&copy;2005-2012 durch das Quassel Projekt<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> auf <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC ist dual-lizenziert <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> und <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Die meisten der Icons sind &copy; durch das <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> und werden unter der <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> benutzt.<br><br>Bitte benutzen Sie <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> um Fehler zu melden."
+msgstr "<b>Ein moderner, dezentralisierter IRC-Client</b><br><br>&copy;%1 durch das Quassel Projekt<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> auf <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC ist dual-lizenziert <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> und <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Die meisten der Icons sind &copy; durch das <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> und werden unter der <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> benutzt.<br><br>Bitte benutzen Sie <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> um Fehler zu melden."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -100,7 +100,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Wir danken hier den folgenden Mitwirkenden (in alphabetischer Reihenfolge) und all jenen, die wir vergessen haben zu erwähnen:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -813,7 +813,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfigurieren..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Auswahl kopieren"
@@ -1032,6 +1032,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identität im Client schon vorhanden!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Gesicherte Verbindung abgebrochen"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Verbinde mit %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Mit Quassel-Core synchronisieren..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Verbunden mit %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Anmelden..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Anmelden abgebrochen"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1347,12 +1403,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Bestehende Regeln"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Konnte keinen Speichermechanismus initialisieren! Beende..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1360,147 +1416,93 @@ msgid ""
 "to work."
 msgstr "Quassel unterstützt momentan SQLite3 und PostgreSQL. Die Qt-Bibliothek\nmuss das sqlite oder postgres Plugin aktiviert haben, damit der Quasselcore\nlauffähig ist."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "restoreState() aufgerufen, obwohl aktive Sitzungen vorhanden sind!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Administrativbenutzer oder Passwort nicht gesetzt."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Speicher konnte nicht eingerichtet werden!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Erstelle Administrativbenutzer..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Ungültige Adresse %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Warte auf GUI Clients auf IPv6 %1 Port %2 mit Protokollversion %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Konnte IPv6-Interface nicht öffnen %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Warte auf GUI Clients auf IPv4 %1 Port %2 mit Protokollversion %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Konnte IPv4-Interface nicht öffnen %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Ungültige Adresse %1, unbekanntes Netzwerkprotokoll"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Konnte keine Netzwerkoberfläche öffnen!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client verbunden von"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Beende Server für Setup."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antiquierter Client versucht zu verbinden... lehne ab."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Ihr Quassel-Client ist zu alt!</b><br>Dieser Core benötigt mindestens Client-/Core-Protokollversion %1.<br>Bitte ziehen Sie in Erwägung, Ihren Client zu aktualisieren."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "zu alt, lehne ab."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel-Core Version %1</b><br>Erstellungsdatum: %2<br>Betriebsdauer: %3T%4S%5M (seit %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Starte TLS für Client:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Client nicht initialisiert!</b><br>Sie müssen vor dem Anmeldungsversuch eine init-Meldung senden."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "hat vor dem Anmeldungsversuch keine init-Meldung gesendet, lehne ab."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Ungültiger Benutzername oder Passwort!</b><br>Die angegebene Benutzername/Passwort-Kombination konnte in der Datenbank nicht gefunden werden."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "initialisiert und erfolgreich als \"%1\" (BenutzerId: %2) authentifziert."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Nicht-authentifizierter Client getrennt."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Konnte Sitzung für Client nicht erfolgreich initialisieren:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Konnte Sitzung für den Client nicht finden:"
@@ -1641,17 +1643,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Entfernte Cores"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "zu alt, lehne ab."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "hat vor dem Anmeldungsversuch keine init-Meldung gesendet, lehne ab."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Client nicht initialisiert!</b><br>Sie müssen vor dem Anmeldungsversuch eine init-Meldung senden."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Ungültiger Benutzername oder Passwort!</b><br>Die angegebene Benutzername/Passwort-Kombination konnte in der Datenbank nicht gefunden werden."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Core-Konfigurationshelfer"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Ihr Core wurde erfolgreich konfiguriert. Melde an..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1659,7 +1718,7 @@ msgid ""
 "over."
 msgstr "Core-Konfiguration fehlgeschlagen:<br><b>%1</b><br>Zum Neustarten <em>Weiter</em> wählen."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1708,46 +1767,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Dieser Helfer wird Sie durch die Einrichtung Ihres Quassel-Core führen."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Administrativbenutzer erstellen"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Zuerst werden wir einen Benutzer im Quassel-Core anlegen. Der erste Benutzer wird administrative Privilegien besitzen."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Einleitung"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Speichermechanismus auswählen"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Bitte wählen Sie einen Datenbankmechanismus für den Quassel-Core-Speicher, der zum Speichern des Verlaufs und anderen Daten verwendet wird."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Verbindungseinstellungen"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Speichere Ihre Einstellungen"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1845,103 +1904,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Zum Quassel-Core verbinden"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Keine Netzwerkverbindung"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Getrennt"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Suche %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Verbinde mit %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Verbunden mit %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Getrennt von %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Der Quassel-Core, zu dem Sie verbinden möchten, ist veraltet! Bitte ziehen Sie eine Aktualisierung in Betracht."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Ungültige Daten vom Core erhalten"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Vom Core getrennt."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Gesicherte Verbindung abgebrochen"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Mit Quassel-Core synchronisieren..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Der Quassel-Core, zu dem Sie verbinden möchten, ist veraltet!</b><br>Benötige mindestens Core/Client-Protokoll v%1 zum Verbinden."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Anmelden..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Anmelden abgebrochen"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Empfange Sitzungsstatus"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synchronisiere mit %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Empfange Status der Netzwerke"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2121,52 +2139,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (seit %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Verbindung fehlgeschlagen. Wechsle zum nächsten Server"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Verbinde mit %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Trenne Verbindung. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Core-Shutdown"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Konnte nicht mit %1 (%2) verbinden"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Verbindungsfehler: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "getrennt (UserId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2174,7 +2192,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Ungültige networkId vom Core erhalten beim Versuch Netzwerk %1 anzulegen!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2222,8 +2240,8 @@ msgstr "Sende CTCP-%1-Anfrage an %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2238,7 +2256,7 @@ msgid ""
 msgstr "[Benutzung] /delkey <nick|channel> löscht den Schlüssel für die Verschlüsselung des Nicks oder Channels oder nur /delkey in einem aktiven Raum/Dialog"
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2251,7 +2269,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Der Schlüssel für %1 wurde entfernt."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2284,7 +2302,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Schlüsselaustausch mit %1 initiiert."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2293,13 +2311,13 @@ msgid ""
 "with QCA present."
 msgstr "Fehler: Die Nutzung der Verschlüsselung setzt vorraus, dass Quassel mit Unterstützung für die \"Qt Cryptographic Architecture\" (QCA2) Bibliothek kompiliert worden ist. Kontaktieren Sie ihren Distributor, dass Quassel mit Unterstützung für QCA2 kompiliert wird, oder kompilieren Sie Quassel selber mit QCA2."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Dialog mit %1 starten"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2307,26 +2325,26 @@ msgid ""
 "it."
 msgstr "[Benutzung] /setkey <nick|channel> <key> setzt den Schlüssel für die Verschlüsselung des Dialogs oder des Raums; oder ohne Argument für den derzeit aktiven Raum oder Dialog"
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Der Schlüssel für %1 wurde gesetzt."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[Benutzung] /delkey <nick|channel> löscht den Schlüssel für die Verschlüsselung des Nicks oder Channels oder nur /delkey in einem aktiven Raum/Dialog"
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2804,7 +2822,7 @@ msgid "highlight rule"
 msgstr "Highlight-Regel"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Identität umbenennen"
@@ -2840,55 +2858,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identitäten"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Die folgenden Probleme müssen behoben werden, bevor Ihre Änderungen angewendet werden können:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Alle Identitäten benötigen einen Identitätsnamen</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Bei jeder Identität muss mindestens ein Spitzname angegeben werden</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Ein Realnamen muss für jede Identität angeben werden</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Sie müssen einen Ident für jede Identität angeben</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Eine oder mehrere Identitäten sind ungültig"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Identität löschen?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Wollen Sie Identität \"%1\" wirklich löschen?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3919,379 +3937,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Neu zuweisen"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel-Core Version %1</b><br>Erstellungsdatum: %2<br>Betriebsdauer: %3T%4S%5M (seit %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Allgemein"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Zum Core &verbinden..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "Vom Core &trennen"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Core-&Info..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "&Netzwerke konfigurieren..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Beenden"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "Chat-Listen &konfigurieren..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "Ansicht &fixieren"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "&Suchleiste anzeigen"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Abwesenheitslog anzeigen"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "&Menüleiste anzeigen"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "St&atusleiste anzeigen"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Vollbildmodus"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "&Tastenkürzel einrichten ..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Quassel &konfigurieren..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Über Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Ü&ber Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debug &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Fehler beseitigen (&BufferViewOverlay)"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debug &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Fehler beseitigen (&HotList)"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debug &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Layoutdatei neu laden"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Aktuellen Chat ausblenden"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigation"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Zum neusten Chat springen"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Schnellzugriff #0 festlegen"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Schnellzugriff #1 festlegen"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Schnellzugriff #2 festlegen"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Schnellzugriff #3 festlegen"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Schnellzugriff #4 festlegen"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Schnellzugriff #5 festlegen"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Schnellzugriff #6 festlegen"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Schnellzugriff #7 festlegen"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Schnellzugriff #8 festlegen"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Schnellzugriff #9 festlegen"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Schnellzugriff #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Schnellzugriff #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Schnellzugriff #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Schnellzugriff #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Schnellzugriff #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Schnellzugriff #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Schnellzugriff #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Schnellzugriff #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Schnellzugriff #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Schnellzugriff #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktiviere die nächste Chatliste"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Vorherige die nächste Chatliste"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Gehe zum nächsten Chat"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Gehe zum vorherigen Chat"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Datei"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Netzwerke"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Ansicht"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Chat-Listen"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Werkzeugleiste"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "Ein&stellungen"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Hilfe"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Spitznamen"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Spitznamenliste anzeigen"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Chatmonitor"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Chatmonitor anzeigen"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Eingabezeile"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Eingabezeile anzeigen"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Thema"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Thema anzeigen"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Hauptwerkzeugleiste"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Mit Quassel-Core verbunden."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Nicht mit Core verbunden."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Unverschlüsselte Verbindung"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Ihr Client unterstüzt keine SSL-Verschlüsselung</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Persönliche Daten, wie Passwörter, werden unverschlüsselt zum Quassel-Core gesendet."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Ihr Quassel-Core unterstüzt keine SSL-Verschlüsselung</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Nicht vertrauenswürdiges SSL-Zertifikat"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4299,33 +4334,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Das SSL-Zertifikat des Quassel-Core auf %1 ist nicht vertrauenswürdig, weil:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Fortfahren"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "SSL-Zertifikat anzeigen"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Möchten sie das Zertifikat dauerhaft, ohne künftige Nachfragen akzeptieren?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Nur aktuelle Sitzung"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Dauerhaft"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Core-Verbindungsfehler"
@@ -4804,7 +4839,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Ein gültiger Spitzname darf die Zeichen des englischen Alphabets, Ziffern und die Sonderzeichen {, }, [, ], \\, |, `, ^, _ sowie - enthalten."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Spitznamen hinzufügen"
@@ -4819,7 +4854,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Audiodatei auswählen"
@@ -5427,6 +5462,42 @@ msgid ""
 "network"
 msgstr "Eine Liste von IRC-Kanälen, die Sie automatischen nach dem Verbinden betreten"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formular"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr "Snore"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index aa79781..33d1dc0 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -14,7 +14,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Greek (http://www.transifex.com/projects/p/quassel/language/el/)\n"
 "MIME-Version: 1.0\n"
@@ -76,7 +76,7 @@ msgstr "<b>Έκδοση:</b> %1<br><b>Έκδοση πρωτοκόλλου:</b> %
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -87,7 +87,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Μια μοντέρνα διανομή πελάτη IRC</b><br><br>&copy;2005-2012 απο την εργασία Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> στο <a href=\"http://www.freenode.net\">Freenode</a><br><br>Το Quassel IRC είναι διπλής άδειας κάτω από την <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> και την <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Οι περισσότερες εικόνες είναι &copy; από την  <a href=\"http://www.oxygen-icons.org\">Ομάδα Oxygen</a> και χρησιμοποιούνται κάτω από την <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Παρακαλώ χρησιμοποιείστε το <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> για την αναφορά βλαβών."
+msgstr "<b>Μια μοντέρνα διανομή πελάτη IRC</b><br><br>&copy;%1 απο την εργασία Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> στο <a href=\"http://www.freenode.net\">Freenode</a><br><br>Το Quassel IRC είναι διπλής άδειας κάτω από την <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> και την <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Οι περισσότερες εικόνες είναι &copy; από την  <a href=\"http://www.oxygen-icons.org\">Ομάδα Oxygen</a> και χρησιμοποιούνται κάτω από την <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Παρακαλώ χρησιμοποιείστε το <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> για την αναφορά βλαβών."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -101,7 +101,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Θα θέλαμε να ευχαριστήσουμε τους ακόλουθους συντελεστές (σε αλφαβητική σειρά) και όλους όσους έχουμε ξεχάσει να αναφέρουμε εδώ:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -814,7 +814,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Ρυθμίσεις..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Αντιγραφή Επιλογής"
@@ -1033,6 +1033,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Έχει γίνει ήδη αναγνώριση του χρήστη σε αυτό τον εξυπηρετητή!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Ακύρωση μη κρυπτογραφημένης σύνδεσης"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Σύνδεση σε %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Συγχρονισμός με τον πυρήνα..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Συνδέθηκε με %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Είσοδος..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Ακύρωση εισόδου"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1348,12 +1404,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Υπάρχοντες Κανόνες"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Αδυναμία εκκίνησης συστήματος αποθήκευσης! Έξοδος..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1361,147 +1417,93 @@ msgid ""
 "to work."
 msgstr "Το Quassel υποστηρίζει SQLite3 και PostgreSQL. Χρειάζεται να χτίσετε\nτη βιβλιοθήκη Qt με ενεργοποιημένο το πρόσθετο sqlite ή postgres\nώστε να δουλέψει το quasselcore σας"
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Κλήση της restoreState() αν και υπάρχουν ενεργές συνεδρίες!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Δεν έχει καθοριστεί λογαριασμός διαχειριστή ή κωδικός"
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Αδυναμία ρύθμισης χώρου αποθήκευσης!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Δημιουργία διαχειριστή..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Άκυρη διεύθυνση ανταπόκρισης %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Αναμονή για πελάτης με γραφικό περιβάλλον σε IPv6 %1 θύρα %2 με χρήση πρωτοκόλλου έκδοσης %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Αδυναμία ανοίγματος διεπαφής IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Αναμονή για πελάτης με γραφικό περιβάλλον σε IPv4 %1 θύρα %2 με χρήση πρωτοκόλλου έκδοσης %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Αδυναμία ανοίγματος διεπαφής IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Άκυρφη διεύθυνση ανταπόκρισης %1, άγνωστο πρωτόκολλο δικτύου"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Αδυναμία ανοίγματος διεπαφών δικτύου προς λήψη δεδομένων!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Πελάτης συνδεδεμένος από"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Κλείσιμο εξυπηρετητή για βασική ρύθμιση."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Προσπάθεια σύνδεσης από απαρχαιωμένο πελάτη... απόρριψη."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Ο Πελάτης Quassel που έχετε είναι πολύ παλιός!</b><br>Αυτός ο πυρήνας χρειάζεται για το πρωτόκολλο πελάτη/πυρήνα τουλάχιστον έκδοση %1.<br>Παρακαλώ αναβαθμίστε τον πελάτη."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Πελάτης"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "πολύ παλιά έκδοση, απόρριψη. "
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Έκδοση Πυρήνα Quassel %1</b><br>Χτήσιμο: %2<br>Ενεργό %3d%4h%5m (από %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Έναρξη TLS για τον Πελάτη:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Αδυναμία αρχικοποίησης πελάτη!</b><br>Χρειάζεται να στείλετε ένα μήνυμα αρχικοποίησης πριν προσπαθήσετε να εισέλθετε."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "δε στάλθηκε μήνυμα αρχικοποίησης πριν την προσπάθεια εισόδου, απόρριψη."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Λάθος όνομα χρήστη ή κωδικού</b><br>Ο συνδυασμός όνομα χρήστη και κωδικού που δώσατε δε βρέθηκε στη βάση δεδομένων."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "Επιτυχημένη αρχικοποίηση και πιστοποίηση ως \"%1\" (Αναγωνριστικό Χρήστη: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Αποσύνδεση μη-πιστοποιημένου πελάτη."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Αδύνατη η αρχικοποίηση συνεδρίας για τον πελάτη:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Αδύνατη η εύρεση συνεδρίας για τον πελάτη:"
@@ -1642,17 +1644,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Απομακρυσμένοι Πυρήνες"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Πελάτης"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "πολύ παλιά έκδοση, απόρριψη. "
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "δε στάλθηκε μήνυμα αρχικοποίησης πριν την προσπάθεια εισόδου, απόρριψη."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Αδυναμία αρχικοποίησης πελάτη!</b><br>Χρειάζεται να στείλετε ένα μήνυμα αρχικοποίησης πριν προσπαθήσετε να εισέλθετε."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Λάθος όνομα χρήστη ή κωδικού</b><br>Ο συνδυασμός όνομα χρήστη και κωδικού που δώσατε δε βρέθηκε στη βάση δεδομένων."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Οδηγός Ρύθμισης Πυρήνα"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Ο πυρήνας ρυθμίστηκε επιτυχώς. Γίνεται είσοδος..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1660,7 +1719,7 @@ msgid ""
 "over."
 msgstr "Η ρύθμιση του πυρήνα απέτυχε:<br><b>%1</b><br>Πατήστε<em>Επόμενο</em> to start over."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1709,46 +1768,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Ο οδηγός θα σας βοηθήσει να ρυθμίσετε τον Πυρήνα του Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Δημιουργία Διαχειριστή"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Κατ' αρχάς, θα δημιουργήσουμε έναν χρήστη στον πυρήνα. Αυτός ο πρώτος χρήστης θα έχει δικαιώματα διαχειριστή."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Εισαγωγή"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Επιλογή Συστήματος Αποθήκευσης"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Παρακαλώ επιλέξτε μια βάση δεδομένων όπου ο πυρήνας Quassel θα αποθηκεύει τις συνομιλίες και άλλα δεδομένα."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Ρυθμίσεις Σύνδεσης"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Αποθήκευση των Ρυθμίσεών Σας"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1846,103 +1905,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Σύνδεση στον Πυρήνα"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Δεν υπάρχει δίκτυο"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Αποσύνδεση"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Αναζήτηση του %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Σύνδεση σε %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Συνδέθηκε με %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Αποσύνδεση από %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Προσπαθείτε να συνδεθείτε σε έναν πολύ παλιό πυρήνα του Quassel! Παρακαλώ προβείτε σε αναβάθμιση."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Έχουν ληφθεί μη έγκυρα δεδομένα από τον πυρήνα"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Αποσυνδέθηκε από τον πυρήνα."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Ακύρωση μη κρυπτογραφημένης σύνδεσης"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Συγχρονισμός με τον πυρήνα..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Προσπαθείτε να συνδεθείτε σε πολύ παλιό πυρήνα του Quassel!</b><br>Για να γίνει σύνδεση χρειάζεται πρωτόκολλο πυρήνα/πελάτη τουλάχιστος έκδοσης %1."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Είσοδος..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Ακύρωση εισόδου"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Λήψη κατάστασης συνεδρίας"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Συγχρονισμός με %1"
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Λήψη καταστάσεων του δικτύου"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2122,52 +2140,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (από %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Αποτυχία σύνδεσης. Κυκλική επιλογή επόμενου Εξυπηρετητή."
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Σύνδεση σε %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Αποσύνδεση. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Κλείσιμο Πυρήνα"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Αδυναμία σύνδεση σε %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Σφάλμα σύνδεσης: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Πελάτης"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "αποσυνδέθηκε (ΑναγωνριστικόΧρήστη: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2175,7 +2193,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Πήρα εσφαλμένο networkId από τον Πυρήνα κατά την προσπάθεια δημιουργίας του δικτύου %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2223,8 +2241,8 @@ msgstr "αποστολή αίτησης CTCP-%1 στο %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2239,7 +2257,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2252,7 +2270,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Το κλειδί για το %1 έχει διαγραφεί."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2285,7 +2303,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2294,13 +2312,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Εκκίνηση προσωπικής συνομιλίας με %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2308,26 +2326,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Το κλειδί για το %1 έχει οριστεί."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2805,7 +2823,7 @@ msgid "highlight rule"
 msgstr "κανόνας υπογράμμισης"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Μετονομασία Ταυτότητας"
@@ -2841,55 +2859,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Ταυτότητες"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Τα ακόλουθα προβλήματα πρέπει να διορθωθούν πριν γίνουν οι αλλαγές σας:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Όλες οι ταυτότητες χρειάζονται να έχει οριστεί το όνομα ταυτοητας</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Κάθε ταυτότητα χρειάζεται να έχει οριστεί τουλάχιστον ένα ψευδώνυμο</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Χρειάζεται να εισάγετε ένα πραγματικό όνομα για κάθε ταυτότητα</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Χρειάζεται να εισάγετε ένα αναγνωριστικό για κάθε ταυτότητα</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Μία ή περισσότερες ταυτότητες είναι άκυρες"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Διαγραφή ταυτότητας;"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Σίγουρα επιθυμείτε τη διαγραφή της ταυτότητας \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3920,379 +3938,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Επανεκχώρηση"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Έκδοση Πυρήνα Quassel %1</b><br>Χτήσιμο: %2<br>Ενεργό %3d%4h%5m (από %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Γενικά"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Σύνδεση στον Πυρήνα..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Αποσύδνεση από τον Πυρήνα"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Πυρήνας Π&ληροφορίες"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Ρύθμιση &Δικτύων"
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Έξοδος"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Ρύθμιση Λιστών Συνομιλίας..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "Κ&λείδωμα Διάταξης"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Εμφάνιση Μπάρας &Αναζήτησης"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Εμφάνιση Καταγραφής κατά την Απουσία"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Εμφάνιση Μπάρας &Μενού"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Εμφάνιση Μπάρας &Κατάστασης"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Λειτουργία σε Όλη την &Οθόνη"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Ρύθμιση &Συντομέυσεων"
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Ρύ&θμιση Quassel"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Περί του Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Περί &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Αποσφαλμάτωση &Δικτύου"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Αποσφαλμάτωση &Μηνυμάτων"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Αποσφαλμάτωση &Καταγραφής"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Επαναφόρτωση φύλλου διαμόρφωσης"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Απόκρυψη Τρέχουσας Συνομιλίας"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Πλοήγηση"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Ορισμός Γρήγορης Πρόσβασης #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Γρήγορη Πρόσβαση #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Γρήγορη Πρόσβαση #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Γρήγορη Πρόσβαση #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Γρήγορη Πρόσβαση #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Γρήγορη Πρόσβαση #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Γρήγορη Πρόσβαση #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Γρήγορη Πρόσβαση #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Γρήγορη Πρόσβαση #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Γρήγορη Πρόσβαση #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Γρήγορη Πρόσβαση #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Ενεργοποίηση Επόμενης Λίστας Συνομιλίας"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Ενεργοποίηση Προηγούμενης Λίστας Συνομιλίας"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Μετάβαση στην Επόμενη Συνομιλία"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Μετάβαση στην Προηγούμενη Συνομιλία"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Αρχείο"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Δίκτυα"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Προβολή"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Λίστες Συνομιλίας"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Εργαλεία"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Ρυθμίσεις"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Βοήθεια"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Αποσφαλμάτωση"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Ψευδώνυμα"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Εμφάνιση Λίστας Ψευδώνυμων"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Παρακολούθηση Συνμομιλίας"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Εμφάνιση Παρακολούθησης Συνομιλίας"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Γραμμή Ειαγωγής"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Εμφάνιση Γραμμής Εισαγωγής"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Θέμα"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Εμφάνιση Γραμμής Θέματος"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Βασικά Εργαλεία"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Συνδέθηκε στον πυρήνα."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Δε συνδέθηκε στον πυρήνα."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Μη Κρυπτογραφημένη Σύνδεση"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Ο πελάτης σας δεν υποστηρίζει κρυπτογράφηση SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Ευαίσθητα δεδομένα, όπως κωδικοί, θα μεταδοθούν μη κρυπτογραφημένα στον πυρήνα Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Ο πυρήνας σας δεν υποστηρίζει κρυπτογράφηση SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Αναξιόπιστο Πιστοποιητικό Ασφαλείας"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4300,33 +4335,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Το πιστοποιητικό SSL που παρέχει ο πυρήνας στο %1 είναι αναξιόοπιστος για τους ακόλουθους λόγους:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Συνέχεια"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Εμφάνιση Πιστοποιητικού"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Θέλετε να γίνεται πάντα αποδοχή του πιστοποιητικού χωρίς ερώτηση;"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Μόνο Τρέχουσα Συνεδρία"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Για πάντα"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Σφάλμα Σύνδεσης Πυρήνα"
@@ -4805,7 +4840,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Ένα έγκυρο ψευδώνυμο μπορεί να περιέχει γράμματα της αγγλικής αλφαβήτας, αριθμούς και τους ειδικούς χαρακτήρες {, }, [, ], \\, |, `, ^, _ και -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Προσθήκη Ψευδώνυμου"
@@ -4820,7 +4855,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Ειδοποιήσεις"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Επιλογή Αρχείου Ήχου"
@@ -5428,6 +5463,42 @@ msgid ""
 "network"
 msgstr "Λίστα των IRC καναλιών στα οποία θα εισέρχεστε αυτόματα όταν θα συνδέεστε στο δίκτυο"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Μορφή"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 4d0861c..3bc1450 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/quassel/language/en_GB/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr "<b>Version:</b> %1<br><b>Protocol version:</b> %2<br><b>Built:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -79,7 +79,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>A modern, distributed IRC Client</b><br><br>&copy;2005-20010 by the Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-licensed under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> and <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Most icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> and used under the <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to report bugs."
+msgstr "<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-licensed under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> and <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Most icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> and used under the <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to report bugs."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "We would like to thank the following contributors (in alphabetical order) and everybody we forgot to mention here:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configure..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copy Selection"
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identity already exists in client!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Unencrypted connection cancelled"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Connecting to %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synchronising to core..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Connected to %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Logging in..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Login cancelled"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Existing Rules"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Could not initialise any storage backend! Exiting..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\nQt library with the sqlite or postgres plug-in enabled in order for quasselcore\nto work."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Calling restoreState() even though active sessions exist!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Admin user or password not set."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Could not set-up storage!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Creating admin user..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Invalid listen address %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Could not open IPv6 interface %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Could not open IPv4 interface %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Invalid listen address %1, unknown network protocol"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Could not open any network interfaces to listen on!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client connected from"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Closing server for basic set-up."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antique client trying to connect... refusing."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Your Quassel Client is too old!</b><br>This core needs at least client/core protocol version %1.<br>Please consider upgrading your client."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "too old, rejecting."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Starting TLS for Client:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Client not initialised!</b><br>You need to send an init message before trying to log-in."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "did not send an init message before trying to login, rejecting."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Invalid username or password!</b><br>The username/password combination you supplied could not be found in the database."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "initialised and authenticated successfully as \"%1\" (UserId: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Non-authed client disconnected."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Could not initialise session for client:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Could not find a session for client:"
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Remote Cores"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "too old, rejecting."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "did not send an init message before trying to login, rejecting."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Client not initialised!</b><br>You need to send an init message before trying to log-in."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Invalid username or password!</b><br>The username/password combination you supplied could not be found in the database."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Core Configuration Wizard"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Your core has been successfully configured. Logging you in..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr "Core configuration failed:<br><b>%1</b><br>Press <em>Next</em> to start over."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "This wizard will guide you through the set-up of your Quassel Core."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Create Admin User"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "First, we will create a user on the core. This first user will have administrator privileges."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduction"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Select Storage Backend"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Please select a database backend for the Quassel Core storage to store the backlog and other data in."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Connection Properties"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Storing Your Settings"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Connect to Core"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Network is down"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Disconnected"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Looking up %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Connecting to %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Connected to %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Disconnecting from %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "The Quassel Core you try to connect to is too old! Please consider upgrading."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Invalid data received from core"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Disconnected from core."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Unencrypted connection cancelled"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synchronising to core..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at least core/client protocol v%1 to connect."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Logging in..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Login cancelled"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Receiving session state"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synchronising to %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Receiving network states"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (since %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Connection failed. Cycling to next Server"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Connecting to %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Disconnecting. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Core Shutdown"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Could not connect to %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Connection failure: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "disconnected (UserId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Got invalid networkId from Core when trying to create network %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr "sending CTCP-%1 request to %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr "[usage] /delkey <nick|channel> deletes the encryption key for nick or channel or just /delkey when in a channel or query."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr "The key for %1 has been deleted."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr "Error: Setting an encryption key requires Quassel to have been built with support for the Qt Cryptographic Architecture (QCA) library. Contact your distributor about a Quassel package with QCA support, or rebuild Quassel with QCA present."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or channel. /setkey <key> when in a channel or query buffer sets the key for it."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "The key for %1 has been set."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[usage] /delkey <nick|channel> deletes the encryption key for nick or channel or just /delkey when in a channel or query."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr "highlight rule"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Rename Identity"
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identities"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>The following problems need to be corrected before your changes can be applied:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>All identities need an identity name set</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Every identity needs at least one nickname defined</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>You need to specify a real name for every identity</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>You need to specify an ident for every identity</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "One or more identities are invalid"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Delete Identity?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Do you really want to delete identity \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reassign"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "General"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Connect to Core..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Disconnect from Core"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Core &Info..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configure &Networks..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Quit"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configure Chat Lists..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Lock Layout"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Show &Search Bar"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Show Away Log"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Show &Menubar"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Show Status &Bar"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Fullscreen mode"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configure &Shortcuts..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configure Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&About Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "About &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debug &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Debug &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debug &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Debug &HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debug &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Reload Stylesheet"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigation"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Jump to hot chat"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Set Quick Access #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Set Quick Access #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Set Quick Access #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Set Quick Access #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Set Quick Access #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Set Quick Access #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Set Quick Access #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Set Quick Access #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Set Quick Access #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Set Quick Access #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Quick Access #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Quick Access #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Quick Access #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Quick Access #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Quick Access #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Quick Access #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Quick Access #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Quick Access #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Quick Access #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Quick Access #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activate Next Chat List"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activate Previous Chat List"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Go to Next Chat"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Go to Previous Chat"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&File"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Networks"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&View"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Chat Lists"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Toolbars"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Settings"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Help"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Nicks"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Show Nick List"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Chat Monitor"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Show Chat Monitor"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Inputline"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Show Input Line"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Topic"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Show Topic Line"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Main Toolbar"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Connected to core."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Not connected to core."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Unencrypted Connection"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Your client does not support SSL encryption</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Your core does not support SSL encryption</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Untrusted Security Certificate"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>The SSL certificate provided by the core at %1 is untrusted for the following reasons:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continue"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Show Certificate"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Would you like to accept this certificate forever without being prompted?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Current Session Only"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Forever"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Core Connection Error"
@@ -4797,7 +4832,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "A valid nickname may contain letters from the English alphabet, digits, and the special characters {, }, [, ], \\, |, `, ^, _ and -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Add Nickname"
@@ -4812,7 +4847,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notifications"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Select Audio File"
@@ -5420,6 +5455,42 @@ msgid ""
 "network"
 msgstr "A list of IRC channels you will join automatically after connecting to the network"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Form"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 8b3f87f..2eaf202 100644 (file)
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:08+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: English (United States) (http://www.transifex.com/projects/p/quassel/language/en_US/)\n"
 "MIME-Version: 1.0\n"
@@ -66,7 +66,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -91,7 +91,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -804,7 +804,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -1023,6 +1023,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1338,12 +1394,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1351,147 +1407,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1632,17 +1634,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1650,7 +1709,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1699,46 +1758,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1836,103 +1895,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2112,52 +2130,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2165,7 +2183,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2213,8 +2231,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2229,7 +2247,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2242,7 +2260,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2275,7 +2293,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2284,13 +2302,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2298,26 +2316,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2795,7 +2813,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2831,55 +2849,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3910,379 +3928,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4290,33 +4325,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4795,7 +4830,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4810,7 +4845,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5418,6 +5453,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index f9101ac..3825730 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Esperanto (http://www.transifex.com/projects/p/quassel/language/eo/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Versio:</b> %1<br><b>Protokola versio:</b> %2<br><b>Kunmetita:</b> %3
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Ni volas danki (alfabete) la jenajn kunlaborintojn kaj ĉiuj, kiujn ni forgesis mencii:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Agordi..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopii elektaĵon"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Jam ekzistantaj reguloj"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "La aplikacio fermas, ĉar ni ne povis startigi iun internan konservejon..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr "Nuntempe, Quassel subtenas SQLite3 kaj PostgreSQL. Vi devas kunmeti vian⏎ Qt kodoteko kun la sqlite aŭ postgres kromaĵo ebligita por quasselcore⏎ funkcii."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Ni vokas restoreState() kvankam jam ekzistas aktivaj seancoj!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Aŭ vi ne agordis la administran uzantnomon, aŭ vi ne agordis la administrantan pasvorton."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Ni ne povis agordi la konservejon!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Ni kreas la administran uzanton..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Invalidas la atendadreso %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Ni atendas grafikinterfacajn klientojn kun IPv6-a adreso %1 je pordo %2 uzante protokolan version %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Ni ne povis malfermi la IPv6 interfacon ĉe %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Ni atendas grafikinterfacajn klientojn kun IPv4-a adreso %1 je pordo %2 uzante protokolan version %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Ni ne povas malfermi la IPv4 interfacon ĉe %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Nevalida atendadreso %1 pro nekonata reta protokolo"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Ni ne povis malfermi iujn ajn retinterfacojn por atendi klientojn!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Kliento konektis el"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr ""
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1663,7 +1722,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
 msgctxt "CoreConfigWizardAdminUserPage|"
@@ -1695,53 +1754,53 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:13
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:19
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1751,7 +1810,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
 msgctxt "CoreConfigWizardStorageSelectionPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
 msgctxt "CoreConfigWizardStorageSelectionPage|"
@@ -1771,7 +1830,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
 msgctxt "CoreConfigWizardSyncPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
 msgctxt "CoreConfigWizardSyncPage|"
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -1944,7 +1962,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
 msgctxt "CoreConnectionSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
 msgctxt "CoreConnectionSettingsPage|"
@@ -2018,7 +2036,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
 msgctxt "CoreConnectionStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
 msgctxt "CoreConnectionStatusWidget|"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2714,7 +2732,7 @@ msgstr ""
 #: ../src/qtui/settingspages/highlightsettingspage.ui:14
 msgctxt "HighlightSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:20
 msgctxt "HighlightSettingsPage|"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3409,7 +3427,7 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:14
 msgctxt "IgnoreListSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:28
 msgctxt "IgnoreListSettingsPage|"
@@ -3453,7 +3471,7 @@ msgstr ""
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
 msgctxt "IndicatorNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
 msgctxt "IndicatorNotificationConfigWidget|"
@@ -3470,7 +3488,7 @@ msgstr ""
 #: ../src/qtui/ui/inputwidget.ui:26
 msgctxt "InputWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
@@ -3565,7 +3583,7 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
 msgctxt "InputWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
 msgctxt "InputWidgetSettingsPage|"
@@ -3703,7 +3721,7 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:14
 msgctxt "ItemViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:22
 msgctxt "ItemViewSettingsPage|"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4333,7 +4368,7 @@ msgstr ""
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
 msgctxt "MsgProcessorStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
 msgctxt "MsgProcessorStatusWidget|"
@@ -4505,7 +4540,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:14
 msgctxt "NetworksSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:48
 msgctxt "NetworksSettingsPage|"
@@ -4798,7 +4833,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4813,7 +4848,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -4821,7 +4856,7 @@ msgstr ""
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
 msgctxt "PhononNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
 msgctxt "PhononNotificationConfigWidget|"
@@ -5299,7 +5334,7 @@ msgstr ""
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:14
 msgctxt "ShortcutsSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:22
 msgctxt "ShortcutsSettingsPage|"
@@ -5421,6 +5456,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formularo"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
@@ -5733,7 +5804,7 @@ msgstr ""
 #: ../src/qtui/ui/topicwidget.ui:32
 msgctxt "TopicWidget|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/ui/topicwidget.ui:79
 msgctxt "TopicWidget|"
@@ -5755,7 +5826,7 @@ msgstr ""
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
 msgctxt "TopicWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "Formularo"
 
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
 msgctxt "TopicWidgetSettingsPage|"
index 9ffdb7c..64c96c7 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -12,7 +12,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Spanish (http://www.transifex.com/projects/p/quassel/language/es/)\n"
 "MIME-Version: 1.0\n"
@@ -74,7 +74,7 @@ msgstr "<b>Versión:</b> %1<br><b>Versión de protocolo:</b> %2<br><b>Compilaci
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -99,7 +99,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Nos gustaría dar las gracias a los siguientes contribuidores (en orden alfabético) y a todas las personas que olvidamos mencionar aquí:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -812,7 +812,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurar..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiar seleccionado"
@@ -1024,13 +1024,69 @@ msgstr "Vista de conversación"
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:41
 msgctxt "ChatViewSettingsPage|"
 msgid "You need at least version 0.6 of quasselcore to use this feature"
-msgstr "Necesita quasselcore 0.6 para usar esta característica"
+msgstr ""
 
 #: ../src/client/client.cpp:318
 msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "¡Esta identidad ya existe en el cliente!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Conexión sin encriptar cancelada"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Conectando a %1…"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Sincronizando con el núcleo..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Conectado a %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Iniciando sesión"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Inicio de sesión cancelado"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1346,12 +1402,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Reglas existentes"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "¡Ningún motor de almacenamiento pudo ser iniciado! Saliendo..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1359,147 +1415,93 @@ msgid ""
 "to work."
 msgstr "Actualmente, Quassel soporta SQLite3 y PostgreSQL. Necesita compilar su\nbiblioteca Qt con el complemento o bien para sqlite o bien para postgres activado para que quasselcore funcione."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "¡Llamando a restoreState() habiendo sesiones activas!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "El usuario o contraseña de Administrador no ha sido establecido."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "¡No se pudo configurar el almacenamiento!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Creando usuario de administrador..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "La dirección esperada no es válida %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Esperando algún cliente GUI en IPv6 %1 puerto %2 usando la versión de protocolo %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "No pudo ser abierta la interfaz IPv6: %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Esperando algún cliente GUI en IPv4 %1 puerto %2 usando versión de protocolo %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "No pudo ser abierta la interfaz IPv4: %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "La dirección esperada no es válida %1, protocolo de red desconocido"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "¡No se pudo abrir ninguna interfaz de red para ponerse a la escucha!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Cliente conectado desde"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Cerrando el servidor para configuración básica."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "El cliente con el que intenta conectar es una antigüedad... rechazando."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>¡Su cliente de Quassel es demasiado viejo!</b><br>Este núcleo al menos necesita un protocolo cliente/núcleo versión %1.<br>Por favor, considere actualizar su cliente."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Cliente"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "demasiado viejo, rechazando."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Versión del núcleo de Quassel %1</b><br>Compilación: %2<br>Activo %3d%4h%5m (desde %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Iniciando TLS para el cliente:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>¡Cliente no inicializado!</b><br>Usted necesita enviar un mensaje de inicialización (init) antes de tratar de iniciar sesión."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "el mensaje de inicialización (init) no fue enviado antes de intentar el inicio de sesión, rechazando."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>¡Nombre de usuario o contraseña no válido!</b><br>La combinación de nombre de usuario y contraseña que usted ha proporcionado no está en la base de datos."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "inicializado e identificado satisfactoriamente como \"%1\" (Id de usuario: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Cliente no autenticado desconectado."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "La sesión no pudo ser inicializada para el cliente:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "No pudo encontrarse una sesión para el cliente:"
@@ -1640,17 +1642,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Núcleos remotos"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Cliente"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "demasiado viejo, rechazando."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "el mensaje de inicialización (init) no fue enviado antes de intentar el inicio de sesión, rechazando."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>¡Cliente no inicializado!</b><br>Usted necesita enviar un mensaje de inicialización (init) antes de tratar de iniciar sesión."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>¡Nombre de usuario o contraseña no válido!</b><br>La combinación de nombre de usuario y contraseña que usted ha proporcionado no está en la base de datos."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Asistente de configuración del núcleo"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Su núcleo ha sido configurado satisfactoriamente. Iniciando su sesión..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1658,7 +1717,7 @@ msgid ""
 "over."
 msgstr "Configuración del núcleo fallida:<br><b>%1</b><br>Pulse <em>Siguiente</em> Para volver a empezar."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1707,46 +1766,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Este asistente le guiará para configurar su núcleo de Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Crear usuario administrador"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Primero, crearemos un usuario del núcleo. Éste primer usuario tendrá privilegios de administración."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introducción"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Seleccione un motor de almacenamiento"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Por favor, seleccione un motor de base de datos para el núcleo de Quassel almacene el registro y otros datos."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Propiedades de conexión"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Almacenando sus preferencias"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1844,103 +1903,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Conectar al núcleo"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "La red está caída"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Desconectado"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Buscando %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Conectando a %1…"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Conectado a %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Desconectándose de %1"
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "¡El núcleo de Quassel al cual está tratando de conectar es demasiado viejo! Por favor considere el actualizarlo."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Información no válida recibida del núcleo"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Desconectado del núcleo."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Conexión sin encriptar cancelada"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Sincronizando con el núcleo..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>¡El núcleo de Quassel al que está tratando de conectarse es demasiado viejo!</b><br>Al menos se necesita un protocolo v%1 de cliente/núcleo para conectarse."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Iniciando sesión"
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Inicio de sesión cancelado"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Recibiendo estado de la sesión"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Sincronizando a %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Recibiendo estados de red"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2120,52 +2138,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (desde %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Conexión fallida. Rotando al siguiente servidor"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Conectando a %1:%2…"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Desconectando. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Apagar núcleo"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "No se pudo conectar a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Fallo de conexión: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Cliente"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "Desconectado (Id de usuario: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2173,7 +2191,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): ¡Obtuvo un Id de red no válido del núcleo cuando trató de crear la red %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2221,8 +2239,8 @@ msgstr "enviando peticiones CTCP-%1 a %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2237,7 +2255,7 @@ msgid ""
 msgstr "[uso] /delkey <apodo|canal> elimina la clave de encriptación para el canal o apodo, o solamente /delkey en un canal o pregunta."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2250,7 +2268,7 @@ msgid "The key for %1 has been deleted."
 msgstr "La clave para %1 ha sido eliminada."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2283,7 +2301,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2292,13 +2310,13 @@ msgid ""
 "with QCA present."
 msgstr "Error: Establecer una clave de encriptación requiere que Quassel haya sido compilado con soporte para la biblioteca Qt Cryptographic Architecture (QCA2).Pregunte a su distribuidor por un paquete Quassel con soporte QCA2 , o recompile Quassel con QCA2 presente."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Iniciando la consulta con %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2306,26 +2324,26 @@ msgid ""
 "it."
 msgstr "[uso] /setkey <apodo|canal> <clave> establece la clave de encriptación para el canal o apodo. /setkey <clave> cuado se está en una conversación de canal o de pregunta, establece la clave para esa conversación."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "La clave para %1 ha sido establecida."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[uso] /delkey <apodo|canal> elimina la clave de encriptación para el canal o apodo, o solamente /delkey en un canal o pregunta."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2803,7 +2821,7 @@ msgid "highlight rule"
 msgstr "resaltar regla"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Renombrar identidad"
@@ -2839,55 +2857,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identidades"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Los siguientes problemas han de ser corregidos antes de que sus cambios puedan ser aplicados:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Todas las identidades necesitan un nombre de identidad establecido</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Cada identidad necesita tener al menos un apodo definido</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Usted necesita especificar al menos un nombre real para cada identidad</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Debe especificar un nombre real para cada identidad</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Una o más identidades son inválidas"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "¿Eliminar identidad?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "¿Está seguro de que quiere eliminar la identidad \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3918,379 +3936,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reasignar"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Versión del núcleo de Quassel %1</b><br>Compilación: %2<br>Activo %3d%4h%5m (desde %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "General"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Conectar al núcleo..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Desconectar del núcleo"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Información del núcleo..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Co&nfigurar redes..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Salir"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurar listas de canales"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "B&loquear la distribución de la pantalla"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Mostrar barra de bú&squeda"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Mostrar el registro de ausencia"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Mostrar la barra de &menú"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Mostrar la &barra de estado"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Modo de &pantalla completa"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configurar rede&s..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurar Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Acerca de Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Acerca de &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Depurar &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Depurar &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Depurar &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Depurar &HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Depurar &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Actualizar estilo de hoja"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Ocultar histórico actual"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navegación"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Saltar a la charla caliente"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Establecer acceso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Establecer acceso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Establecer acceso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Establecer acceso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Establecer acceso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Establecer acceso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Establecer acceso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Establecer acceso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Establecer acceso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Establecer acceso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Acceso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Acceso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Acceso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Acceso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Acceso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Acceso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Acceso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Acceso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Acceso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Acceso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activar lista de conversaciones siguiente"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activar lista de conversaciones anterior"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Ir a la conversación siguiente"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Ir a la conversación anterior"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Archivo"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Redes"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Ver"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Listas de &conversación"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "Barras de &herramientas"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "Preferencia&s"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "A&yuda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Depurar"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Apodos"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Mostrar lista de apodos"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de conversación"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Mostrar monitor de conversación"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Línea de introducción de texto"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Mostrar línea de introducción de texto"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tema"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Mostrar línea del tema"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra de herramientas principal"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Conectado al núcleo."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "No conectado al núcleo."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Conexión sin encriptar"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Su cliente no da soporte a la encriptación por SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Información confidencial, como contraseñas, será transmitida sin encriptar a su núcleo Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Su núcleo no da soporte a la encriptación por SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificado de seguridad no confiable"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4298,33 +4333,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>El certificado SSL proporcionado por el núcleo en %1 es inseguro por las razones siguientes:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuar"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Ver certificado"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "¿Le gustaría aceptar este certificado para siempre sin ser preguntado?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Sólo sesión actual"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Para siempre"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Error de conexión de núcleo"
@@ -4803,7 +4838,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Un apodo válido puede contener letras del alfabeto anglosajón, dígitos numéricos, y los carácteres especiales {, }, [, ], \\, |, `, ^, _ and -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Añadir apodo"
@@ -4818,7 +4853,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificaciones"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Seleccionar archivo de sonido"
@@ -5426,6 +5461,42 @@ msgid ""
 "network"
 msgstr "Una lista de los canales de IRC a los que se unirá automáticamente tras conectarse a la red"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulario"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 7e2ff59..54cd3d4 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
-"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
+"PO-Revision-Date: 2013-12-22 15:21+0000\n"
+"Last-Translator: Larso <larso@gmx.com>\n"
 "Language-Team: Finnish (http://www.transifex.com/projects/p/quassel/language/fi/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -73,7 +73,7 @@ msgstr "<b>Versio:</b> %1<br><b>Protokollan versio:</b> %2<br><b>Käännetty:</b
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -98,7 +98,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Haluaisimme kiittää seuraavia henkilöitä (aakkosjärjestyksessä), sekä kaikkia ketkä unohdimme mainita tässä:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -120,12 +120,12 @@ msgstr "Erityiskiitokset:<br><dl><dt><img src=\":/pics/quassel-eye.png\">&nbsp;<
 msgctxt "AbstractSqlStorage|"
 msgid ""
 "Installed Schema (version %1) is not up to date. Upgrading to version %2..."
-msgstr "Asennettu malli (versio %1) ei ole ajan tasalla. Päivitetään versioon %2..."
+msgstr "Asennettu malli (versio %1) ei ole ajan tasalla. Päivitetään versioon %2"
 
 #: ../src/core/abstractsqlstorage.cpp:129
 msgctxt "AbstractSqlStorage|"
 msgid "Upgrade failed..."
-msgstr "Päivitys epäonnistui..."
+msgstr "Päivitys epäonnistui"
 
 #: ../src/qtui/settingspages/aliasesmodel.cpp:57
 msgctxt "AliasesModel|"
@@ -234,7 +234,7 @@ msgstr "Polku:"
 #: ../src/qtui/settingspages/appearancesettingspage.ui:141
 msgctxt "AppearanceSettingsPage|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:150
 msgctxt "AppearanceSettingsPage|"
@@ -483,12 +483,12 @@ msgstr "Lomake"
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:31
 msgctxt "BufferViewSettingsPage|"
 msgid "Re&name..."
-msgstr "Muuta &nimeä..."
+msgstr "Muuta &nimeä"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:48
 msgctxt "BufferViewSettingsPage|"
 msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:71
 msgctxt "BufferViewSettingsPage|"
@@ -809,9 +809,9 @@ msgstr "Näytä puskurin nimi"
 #: ../src/qtui/chatmonitorview.cpp:73
 msgctxt "ChatMonitorView|"
 msgid "Configure..."
-msgstr "Asetukset..."
+msgstr "Asetukset"
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopioi valinta"
@@ -826,7 +826,7 @@ msgstr "Lomake"
 #: ../src/qtui/ui/chatviewsearchbar.ui:44
 msgctxt "ChatViewSearchBar|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/ui/chatviewsearchbar.ui:55
 msgctxt "ChatViewSearchBar|"
@@ -953,7 +953,7 @@ msgstr "Toiminto:"
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:736
 msgctxt "ChatViewSettingsPage|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:201
 msgctxt "ChatViewSettingsPage|"
@@ -1030,6 +1030,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Henkilöllisyys on jo olemassa!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Salaamaton yhteys peruutettu"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Yhdistetään ytimeen %1…"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synkronoidaan ytimen kanssa…"
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr "<b>Quassel-ydin, johon yrität yhdistää, on liian vanha!</b><br>Yhdistämiseen tarvitaan vähintään ydin/asiakas-protokolla v%1, mutta ydin tukee vain versiota %2."
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr "Epäyhteensopiva protokollan versio; yhteys ytimeen torjuttu"
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr "Ydin torjui yhteyden tältä asiakkaalta"
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr "Salaamaton yhteys peruutettu"
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Yhdistetty ytimeen %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Kirjaudutaan sisään…"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Sisäänkirjautuminen peruutettu"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1153,7 +1209,7 @@ msgstr "Poistu"
 #: ../src/uisupport/contextmenuactionprovider.cpp:44
 msgctxt "ContextMenuActionProvider|"
 msgid "Delete Chat(s)..."
-msgstr "Poista keskustelut..."
+msgstr "Poista keskustelut"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:45
 msgctxt "ContextMenuActionProvider|"
@@ -1198,17 +1254,17 @@ msgstr "Aiheen vaihtumiset"
 #: ../src/uisupport/contextmenuactionprovider.cpp:54
 msgctxt "ContextMenuActionProvider|"
 msgid "Set as Default..."
-msgstr "Aseta oletukseksi..."
+msgstr "Aseta oletukseksi"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:55
 msgctxt "ContextMenuActionProvider|"
 msgid "Use Defaults..."
-msgstr "Käytä oletuksia..."
+msgstr "Käytä oletuksia"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:57
 msgctxt "ContextMenuActionProvider|"
 msgid "Join Channel..."
-msgstr "Liity kanavalle..."
+msgstr "Liity kanavalle"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:59
 msgctxt "ContextMenuActionProvider|"
@@ -1248,7 +1304,7 @@ msgstr "Ohjelman tiedot"
 #: ../src/uisupport/contextmenuactionprovider.cpp:67
 msgctxt "ContextMenuActionProvider|"
 msgid "Custom..."
-msgstr "Mukautettu..."
+msgstr "Mukautettu"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:79
 msgctxt "ContextMenuActionProvider|"
@@ -1345,12 +1401,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Olemassa olevat säännöt"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
-msgstr "Yhtään tietokantamoottoria ei saatu käyntiin! Lopetetaan..."
+msgstr "Yhtään tietokantamoottoria ei saatu käyntiin! Lopetetaan"
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1358,147 +1414,93 @@ msgid ""
 "to work."
 msgstr "Tällä hetkellä Quassel tukee SQLite3- ja PostgreSQL-tietokantoja. Sinun pitää\nkääntää Qt-kirjastosi joko sqlite- tai postgres-liitännäisen kanssa, jotta quasselcore\nvoi toimia."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Kutsutaan restoreState(), vaikka aktiivisia istuntoja on olemassa!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr "Ydin on jo asennettu! Ei asenneta uudelleen…"
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Ylläpitäjän käyttäjätunnusta tai salasanaa ei ole asetettu."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Tietokantaa ei voitu alustaa!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
-msgstr "Luodaan ylläpitokäyttäjää..."
+msgstr "Luodaan ylläpitokäyttäjää"
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Virheellinen kuunteluosoite %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Odotetaan asiakasohjelmaa IPv6-osoitteen %1 portissa %2 käyttäen protokollan versiota %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Ei voitu avata IPv6-rajapintaa %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Odotetaan asiakasohjelmaa IPv4-osoitteen %1 portissa %2 käyttäen protokollan versiota %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Ei voitu avata IPv4-rajapintaa %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Virheellinen kuunteluosoite %1; tuntematon verkkoprotokolla"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Ei voitu avata yhtään verkkorajapintaa kuuntelua varten!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Asiakasohjelma yhdisti osoitteesta"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Suljetaan palvelin perusasetusten tekoa varten."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antiikkinen asiakasohjelma yrittää yhdistää... hylätään."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Quassel-käyttöliittymäsi on liian vanha!</b><br>Tämä ydin vaatii vähintään käyttöliittymä/ydin-protokollan version %1.<br>Harkitse käyttöliittymäsi päivittämistä."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Ohjelma"
+msgid "Non-authed client disconnected:"
+msgstr "Yhteys todentamattomaan asiakkaaseen katkaistu:"
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "liian vanha, hylätään."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel-ydin versio:</b> %1<br>Käännetty: %2<br>Päällä %3 d %4 h %5 m (alkaen %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Käynnistetään TLS asiakasohjelmalle:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Asiakasohjelmaa ei ole alustettu!</b><br>Ennen sisäänkirjautumisen yrittämistä täytyy lähettää alustusviesti."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "ei lähettänyt alustusviestiä ennen sisäänkirjautumisen yrittämistä, hylätään."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Virheellinen käyttäjätunnus tai salasana!</b><br>Antamaasi käyttäjätunnus/salasana-yhdistelmää ei löytynyt tietokannasta."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "alustettu ja todennettu onnistuneesti tunnuksella \"%1\" (UserId: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Yhteys todentamattomaan asiakkaaseen katkaistu."
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Istuntoa ei voitu alustaa asiakkaalle:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Istuntoa ei voitu löytää asiakkaalle:"
@@ -1607,12 +1609,12 @@ msgstr "Ydintilit"
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:45
 msgctxt "CoreAccountSettingsPage|"
 msgid "Edit..."
-msgstr "Muokkaa..."
+msgstr "Muokkaa"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:56
 msgctxt "CoreAccountSettingsPage|"
 msgid "Add..."
-msgstr "Lisää..."
+msgstr "Lisää"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:67
 msgctxt "CoreAccountSettingsPage|"
@@ -1639,17 +1641,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Etäytimet"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Ohjelma"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "liian vanha, hylätään."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr "<b>Quassel-asiakkaasi on liian vanha!</b><br>Tämä ydin vaatii vähintään asiakas/ydin-protokollan version %1 (asiakkaan versio: %2).<br>Harkitse asiakkaasi päivittämistä."
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr "Käynnistetään salaus asiakkaalle:"
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "ei lähettänyt alustusviestiä ennen sisäänkirjautumisen yrittämistä, hylätään."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Asiakasohjelmaa ei ole alustettu!</b><br>Ennen sisäänkirjautumisen yrittämistä täytyy lähettää alustusviesti."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr "<b>SSL tarvitaan!</b><br>SSL tarvitaan tähän ytimeen yhdistämiseksi."
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Virheellinen käyttäjätunnus tai salasana!</b><br>Antamaasi käyttäjätunnus/salasana-yhdistelmää ei löytynyt tietokannasta."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr "Asiakas %1 alustettu ja todennettu onnistuneesti tunnuksella ”%2” (UserId: %3)."
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Ohjattu ytimen asetusten teko"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
-msgstr "Ytimesi asetusten tekeminen onnistui. Kirjaudutaan sisään..."
+msgstr "Ytimesi asetusten tekeminen onnistui. Kirjaudutaan sisään"
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1657,7 +1716,7 @@ msgid ""
 "over."
 msgstr "Ytimesi asetusten tekeminen epäonnistui:<br><b>%1</b><br>Aloita alusta painamalla <em>Seuraava</em>."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1706,46 +1765,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Tämä ohjattu toiminto avustaa Quassel-ytimen käyttöönotossa."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Luo ylläpitokäyttäjä"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Ensiksi luomme ytimeen käyttäjän. Tästä ensimmäisestä käyttäjästä tulee ylläpitäjä."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Esittely"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Valitse tietokantamoottori"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Valitse tietokantamoottori, jota Quassel-ydin käyttää viestihistorian ja muun datan tallennukseen."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Yhteyden ominaisuudet"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Asetuksiesi tallennus"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1805,7 +1864,7 @@ msgstr "bar"
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:102
 msgctxt "CoreConfigWizardSyncPage|"
 msgid "Please wait while your settings are being transmitted to the core..."
-msgstr "Asetuksiasi siirretään ytimeen. Odota hetki..."
+msgstr "Asetuksiasi siirretään ytimeen. Odota hetki"
 
 #: ../src/qtui/ui/coreconnectauthdlg.ui:14
 msgctxt "CoreConnectAuthDlg|"
@@ -1843,103 +1902,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Yhdistä ytimeen"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Verkkoyhteys katkennut"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Ei yhteyttä"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
-msgstr "Selvitetään verkkonimeä %1..."
+msgstr "Selvitetään verkkonimeä %1"
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
-msgstr "Yhdistetään ytimeen %1..."
+msgstr "Yhdistetään ytimeen %1"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Yhdistetty ytimeen %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
-msgstr "Katkaistaan yhteyttä ytimeen %1..."
-
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Yrität yhdistää liian vanhaan Quassel-ytimeen! Harkitse sen päivittämistä."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Ytimeltä vastaanotettiin virheellistä dataa"
+msgstr "Katkaistaan yhteyttä ytimeen %1…"
 
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Yhteys ytimeen katkesi."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Salaamaton yhteys peruutettu"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synkronoidaan ytimen kanssa..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Yrität yhdistää liian vanhaan Quassel-ytimeen!</b>Yhdistämiseen tarvitaan vähintään käyttöliittymä/asiakas-protokolla v%1."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Kirjaudutaan sisään..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Sisäänkirjautuminen peruutettu"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Vastaanotetaan istunnon tilaa"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
-msgstr "Synkronoidaan ytimen %1 kanssa..."
+msgstr "Synkronoidaan ytimen %1 kanssa"
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Vastaanotetaan verkkojen tiloja"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2119,52 +2137,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (alkaen %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Yhdistäminen epäonnistui. Siirrytään seuraavalle palvelimelle"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
-msgstr "Yhdistetään palvelimeen %1:%2..."
+msgstr "Yhdistetään palvelimeen %1:%2"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Katkaistaan yhteys. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Ytimen sammutus"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Ei voitu yhdistää verkkoon %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Yhteysvirhe: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Ohjelma"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "yhteys katkaistu (UserId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2172,7 +2190,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Sai virheellisen networkId:n ytimeltä yrittäessään luoda verkkoa %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2220,8 +2238,8 @@ msgstr "lähetetään CTCP-%1-pyyntö käyttäjälle %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2236,7 +2254,7 @@ msgid ""
 msgstr "[käyttö] /delkey <nimimerkki/kanava> poistaa salausavaimen nimimerkiltä tai kanavalta; kanavalla tai yksityiskeskustelussa riittää kirjoittaa ”/delkey”."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2249,7 +2267,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Kohteen %1 avain on poistettu."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2282,7 +2300,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Aloitettiin avainten vaihto kohteen %1 kanssa."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2291,13 +2309,13 @@ msgid ""
 "with QCA present."
 msgstr "Virhe: Salausavaimen asettaminen vaatii Qt Cryptocraphic Architecture (QCA2)  -kirjaston Quasselia käännettäeissä. Ota yhteys jakelijaasi saadaksesi Quasselin QCA2-tuella, tai käännä Quassel uudestaan QCA2:n kanssa."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Aloitetaan yksityiskeskustelu käyttäjän %1 kanssa"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2305,26 +2323,26 @@ msgid ""
 "it."
 msgstr "[käyttö] /setkey <nimimerkki/kanava> <avain> asettaa salausavaimen nimimerkille tai kanavalle; kanavalla tai yksityiskeskustelussa riittää kirjoittaa ”/setkey <avain>”."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Kohteen %1 avain on asetettu."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[käyttö] /showkey <nimimerkki/kanava> näyttää nimimerkin tai kanavan salausavaimen; kanavalla tai yksityiskeskustelussa riittää kirjoittaa ”/showkey”."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr "Kohteen %1 avain on %2:%3"
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2713,7 +2731,7 @@ msgstr "Skripti ”%1” aiheutti virheen %2."
 #: ../src/uisupport/fontselector.cpp:32
 msgctxt "FontSelector|"
 msgid "Choose..."
-msgstr "Valitse..."
+msgstr "Valitse"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:14
 msgctxt "HighlightSettingsPage|"
@@ -2802,7 +2820,7 @@ msgid "highlight rule"
 msgstr "korostussääntö"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Muuta henkilöllisyyden nimeä"
@@ -2811,7 +2829,7 @@ msgstr "Muuta henkilöllisyyden nimeä"
 #: ../src/qtui/settingspages/identitiessettingspage.ui:77
 msgctxt "IdentitiesSettingsPage|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:51
 msgctxt "IdentitiesSettingsPage|"
@@ -2821,7 +2839,7 @@ msgstr "Lisää henkilöllisyys"
 #: ../src/qtui/settingspages/identitiessettingspage.ui:54
 msgctxt "IdentitiesSettingsPage|"
 msgid "Add..."
-msgstr "Lisää..."
+msgstr "Lisää"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:74
 msgctxt "IdentitiesSettingsPage|"
@@ -2838,55 +2856,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Henkilöllisyydet"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Seuraavat ongelmat tarvitsee korjata, ennen kuin muutoksia voidaan käyttää:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Jokaisella henkilöllisyydellä tarvitsee olla nimi</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Jokainen henkilöllisyys tarvitsee vähintään yhden nimimerkin</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Oikea nimi tarvitsee olla määritettynä jokaisessa henkilöllisyydessä</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Jokaisella henkilöllisyydellä tarvitsee olla ident</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Yksi tai useampi henkilöllisyys on virheellinen"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Poistetaanko henkilöllisyys?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Haluatko varmasti poistaa henkilöllisyyden ”%1”?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -2915,7 +2933,7 @@ msgstr "Ei täällä. Muualla. Poissa!"
 #: ../src/common/identity.cpp:190
 msgctxt "Identity|"
 msgid "All Quassel clients vanished from the face of the earth..."
-msgstr "Kaikki Quassel-asiakkaat ovat kadonneet maan pinnalta..."
+msgstr "Kaikki Quassel-asiakkaat ovat kadonneet maan pinnalta"
 
 #: ../src/common/identity.cpp:193
 msgctxt "Identity|"
@@ -2955,7 +2973,7 @@ msgstr "Lisää nimimerkki"
 #: ../src/qtui/settingspages/identityeditwidget.ui:93
 msgctxt "IdentityEditWidget|"
 msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:116
 msgctxt "IdentityEditWidget|"
@@ -2975,7 +2993,7 @@ msgstr "Muuta henkilöllisyyden nimeä"
 #: ../src/qtui/settingspages/identityeditwidget.ui:139
 msgctxt "IdentityEditWidget|"
 msgid "Re&name..."
-msgstr "Muuta &nimeä..."
+msgstr "Muuta &nimeä"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:165
 msgctxt "IdentityEditWidget|"
@@ -2986,7 +3004,7 @@ msgstr "Siirrä ylemmäs listassa"
 #: ../src/qtui/settingspages/identityeditwidget.ui:182
 msgctxt "IdentityEditWidget|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:179
 msgctxt "IdentityEditWidget|"
@@ -3753,7 +3771,7 @@ msgstr "Vakio:"
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:345
 msgctxt "ItemViewSettingsPage|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:142
 msgctxt "ItemViewSettingsPage|"
@@ -3917,379 +3935,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Aseta uudelleen"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr "Virheellinen kättelyviesti!"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr "Tuntematon %1 -tyyppinen protokollaviesti"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel-ydin versio:</b> %1<br>Käännetty: %2<br>Päällä %3 d %4 h %5 m (alkaen %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Yleiset"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
-msgstr "&Yhdistä ytimeen..."
+msgstr "&Yhdistä ytimeen"
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Katkaise yhteys ytimeen"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
-msgstr "Ytimen &tiedot..."
+msgstr "Ytimen &tiedot"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
-msgstr "&Verkkojen asetukset..."
+msgstr "&Verkkojen asetukset"
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Lopeta"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
-msgstr "&Keskustelulistojen asetukset..."
+msgstr "&Keskustelulistojen asetukset"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Lukitse asettelu"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Näytä &hakurivi"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Näytä poissa-loki"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Näytä &valikkorivi"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Näytä &tilarivi"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Koko &näytön tila"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
-msgstr "Muokkaa &pikanäppäimiä..."
+msgstr "Muokkaa &pikanäppäimiä"
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
-msgstr "&Quasselin asetukset..."
+msgstr "&Quasselin asetukset"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Tietoja Quasselista"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Tietoja &Qt:stä"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debuggaa &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Debuggaa &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debuggaa &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Debuggaa &HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debuggaa &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Lataa tyylisivu uudelleen"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Piilota nykyinen puskuri"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Selaus"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Hyppää aktiiviseen keskusteluun"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Aseta pikavalinta #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Aseta pikavalinta #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Aseta pikavalinta #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Aseta pikavalinta #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Aseta pikavalinta #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Aseta pikavalinta #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Aseta pikavalinta #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Aseta pikavalinta #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Aseta pikavalinta #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Aseta pikavalinta #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Pikavalinta #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Pikavalinta #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Pikavalinta #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Pikavalinta #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Pikavalinta #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Pikavalinta #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Pikavalinta #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Pikavalinta #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Pikavalinta #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Pikavalinta #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktivoi seuraava keskustelulista"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Aktivoi edellinen keskustelulista"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Siirry seuraavaan keskusteluun"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Siirry edelliseen keskusteluun"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Tiedosto"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Verkot"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Näytä"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Keskustelulistat"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Työkalurivit"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Asetukset"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "O&hje"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Kehittäjille"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Nimimerkit"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Näytä nimimerkkilista"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Keskusteluvahti"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Näytä keskusteluvahti"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Syöterivi"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Näytä syöterivi"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Aihe"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Näytä aiherivi"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Päätyökalurivi"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Yhdistetty ytimeen."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Ei yhteyttä ytimeen."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Salaamaton yhteys"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Asiakasohjelmasi ei tue SSL-salausta</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Arkaluontoista dataa, kuten salasanoja, lähetetään Quassel-ytimelle salaamattomana."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Ytimesi ei tue SSL-salausta</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Varmenne ei luotettu"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4297,33 +4332,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Ytimen %1 tarjoama SSL-varmenne ei ole luotettu seuraavista syistä:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Jatka"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Näytä varmenne"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Haluatko hyväksyä tämän varmenteen aina?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Vain nykyisen istunnon ajaksi"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Aina"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Virhe yhteydessä ytimeen"
@@ -4461,7 +4496,7 @@ msgstr[1] "Haluatko poistaa seuraavat puskurit pysyvästi?"
 #, qt-format
 msgctxt "NetworkModelController|"
 msgid "...and <b>%1</b> more<br><br>"
-msgstr "...ja <b>%1</b> lisää<br><br>"
+msgstr "ja <b>%1</b> lisää<br><br>"
 
 #: ../src/uisupport/networkmodelcontroller.cpp:191
 msgctxt "NetworkModelController|"
@@ -4514,13 +4549,13 @@ msgstr "Lomake"
 #: ../src/qtui/settingspages/networkssettingspage.ui:48
 msgctxt "NetworksSettingsPage|"
 msgid "Re&name..."
-msgstr "Muuta &nimeä..."
+msgstr "Muuta &nimeä"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:65
 #: ../src/qtui/settingspages/networkssettingspage.ui:235
 msgctxt "NetworksSettingsPage|"
 msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:88
 #: ../src/qtui/settingspages/networkssettingspage.ui:252
@@ -4543,7 +4578,7 @@ msgstr "Henkilöllisyys:"
 #: ../src/qtui/settingspages/networkssettingspage.ui:295
 msgctxt "NetworksSettingsPage|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:190
 msgctxt "NetworksSettingsPage|"
@@ -4558,7 +4593,7 @@ msgstr "Hallitse tämän verkon palvelimia"
 #: ../src/qtui/settingspages/networkssettingspage.ui:217
 msgctxt "NetworksSettingsPage|"
 msgid "&Edit..."
-msgstr "&Muokkaa..."
+msgstr "&Muokkaa"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:278
 msgctxt "NetworksSettingsPage|"
@@ -4802,7 +4837,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Kelvollinen nimimerkki voi sisältää kirjaimia A-Z, numeroita, sekä erikoismerkkejä {, }, [, ], \\, |, `, ^, _ ja -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Lisää nimimerkki"
@@ -4817,7 +4852,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Ilmoitukset"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Valitse äänitiedosto"
@@ -5095,7 +5130,7 @@ msgstr "Synkronointi ytimen kanssa"
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:21
 msgctxt "SaveIdentitiesDlg|"
 msgid "Syncing data with core, please wait..."
-msgstr "Synkronoidaan dataa ytimen kanssa. Odota hetki..."
+msgstr "Synkronoidaan dataa ytimen kanssa. Odota hetki"
 
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:81
 msgctxt "SaveIdentitiesDlg|"
@@ -5208,7 +5243,7 @@ msgstr "Salasana:"
 #: ../src/qtui/ui/settingsdlg.ui:14
 msgctxt "SettingsDlg|"
 msgid "Configure Quassel"
-msgstr "Quasselin asetukset..."
+msgstr "Quasselin asetukset"
 
 #: ../src/qtui/ui/settingsdlg.ui:35 ../src/qtui/ui/settingsdlg.ui:50
 #: ../src/qtui/settingsdlg.cpp:111
@@ -5375,7 +5410,7 @@ msgstr "Muokkaa tätä palvelinta"
 #: ../src/qtui/ui/simplenetworkeditor.ui:99
 msgctxt "SimpleNetworkEditor|"
 msgid "&Edit..."
-msgstr "&Muokkaa..."
+msgstr "&Muokkaa"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:116
 msgctxt "SimpleNetworkEditor|"
@@ -5385,7 +5420,7 @@ msgstr "Lisää IRC-palvelin"
 #: ../src/qtui/ui/simplenetworkeditor.ui:119
 msgctxt "SimpleNetworkEditor|"
 msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:136
 msgctxt "SimpleNetworkEditor|"
@@ -5406,7 +5441,7 @@ msgstr "Siirrä ylemmäs listassa"
 #: ../src/qtui/ui/simplenetworkeditor.ui:182
 msgctxt "SimpleNetworkEditor|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:179
 msgctxt "SimpleNetworkEditor|"
@@ -5425,6 +5460,42 @@ msgid ""
 "network"
 msgstr "Lista IRC-kanavista, joille liityt automaattisesti yhdistettyäsi verkkoon"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr "Yksityisviesti"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Lomake"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr "Snore"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr "Taustajärjestelmä:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr "Aikakatkaisu:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr "s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr "0 tarkoittaa ääretöntä"
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
@@ -5742,7 +5813,7 @@ msgstr "Lomake"
 #: ../src/qtui/ui/topicwidget.ui:79
 msgctxt "TopicWidget|"
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../src/qtui/topicwidget.cpp:120
 #, qt-format
index 8819f38..a9eca6f 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: French (http://www.transifex.com/projects/p/quassel/language/fr/)\n"
 "MIME-Version: 1.0\n"
@@ -73,7 +73,7 @@ msgstr "<b>Version :</b> %1<br><b>Version du protocole :</b> %2<br><b>Compilat
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -84,7 +84,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Un Client IRC distribué moderne</b><br><br>&copy;2005-2009 par le projet Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> sur <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC est sous double licence <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> et <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>La majorité des icônes proviennent de l'<a href=\"http://www.oxygen-icons.org\">équipe Oxygen</a> &copy; et sont utilisées sous licence <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Veuillez utiliser <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> pour signaler les bogues."
+msgstr "<b>Un Client IRC distribué moderne</b><br><br>&copy;%1 par le projet Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> sur <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC est sous double licence <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> et <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>La majorité des icônes proviennent de l'<a href=\"http://www.oxygen-icons.org\">équipe Oxygen</a> &copy; et sont utilisées sous licence <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Veuillez utiliser <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> pour signaler les bogues."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -98,7 +98,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Nous voulons aussi remercier les contributeurs suivants (par ordre alphabétique) et toute personne que nous avons oublié de mentionner ici :"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -811,7 +811,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurer..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copier la sélection"
@@ -1030,6 +1030,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "L'identité existe déjà dans l'application !"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Connexion non chiffrée annulée"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Connexion à %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synchronisation avec le composant central..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Connecté à %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Identification..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Identification annulée"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1345,12 +1401,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Règles existantes"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Impossible d'initialiser une base de données ! Fin de l'opération..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1358,147 +1414,93 @@ msgid ""
 "to work."
 msgstr "Actuellement, Quassel prend en charge uniquement SQLite3 et PostgreSQL.\nVotre bibliothèque Qt doit être construite avec un module sqlite ou postgres activé pour que le composant central Quassel puisse fonctionner."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Appel de restoreState() alors que des sessions actives existent !"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "L'identifiant ou le mot de passe administrateur ne sont pas renseignés."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Impossible de configurer la base de données !"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Création de l'utilisateur administrateur..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Adresse d'écoute %1 erronée"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "À l'écoute de clients à l'adresse IPv6 %1 port %2 avec la version %3 du protocole"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Impossible d'ouvrir l'interface IPv6 %1:%2 : %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "À l'écoute de clients à l'adresse IPv4 %1 port %2 avec la version %3 du protocole"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Impossible d'ouvrir l'interface IPv4 %1:%2 : %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Adresse d'écoute %1 erronée, protocole réseau inconnu"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Impossible de se mettre en écoute sur une interface réseau !"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client connecté depuis"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Arrêt du serveur pour une configuration de base."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Un client archaïque essaye de se connecter... refusé."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Votre client Quassel est trop ancien !</b><br>Le composant central requiert au minimum la version %1 du protocole client/composant central.<br>Veuillez mettre à jour votre client."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "trop ancien, rejeté."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Composant central Quassel version %1</b><br>Compilation : %2<br>En fonction pendant %3 j %4 h %5 min (depuis %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Lancement de TLS pour le client :"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Client non initialisé !</b><br>Vous devez envoyer un message d'initialisation avant d'essayer de vous connecter."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "n'a pas envoyé de message d'initialisation avant d'essayer de se connecter, rejet."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>identifiant ou mot de passe erroné !</b><br>Impossible de trouver a combinaison identifiant/mot de passe que vous avez fourni, dans la base de données."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "initialisé et authentifié avec succès en tant que « %1 » (ID utilisateur : %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Client non-authentifié déconnecté."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Impossible d'initialiser la session pour le client :"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Impossible de trouver une session pour le client :"
@@ -1639,17 +1641,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Composants centraux distants"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "trop ancien, rejeté."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "n'a pas envoyé de message d'initialisation avant d'essayer de se connecter, rejet."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Client non initialisé !</b><br>Vous devez envoyer un message d'initialisation avant d'essayer de vous connecter."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>identifiant ou mot de passe erroné !</b><br>Impossible de trouver a combinaison identifiant/mot de passe que vous avez fourni, dans la base de données."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Assistant de configuration du composant central"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Votre composant central a été configuré avec succès. Connexion à celui-ci..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1657,7 +1716,7 @@ msgid ""
 "over."
 msgstr "Échec de la configuration du composant central :<br><b>%1</b><br>Cliquez sur <em>Suivant</em> pour recommencer."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1706,46 +1765,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Cet assistant va vous guider dans la configuration de votre composant central Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Créer l'utilisateur administrateur"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Nous allons d'abord créer un utilisateur pour le composant central. Le premier utilisateur aura les privilèges d'administrateur."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduction"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Sélectionnez le type de base de données"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Veuillez sélectionner une base de données pour le stockage de l'historique ainsi que des autres données pour le composant central Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Paramètres de connexion"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Enregistrement de vos paramètres"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1843,103 +1902,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Se connecter au composant central"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Le réseau est inactif"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Déconnecté"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Recherche de %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Connexion à %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Connecté à %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Déconnexion de %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Le composant central Quassel auquel vous vous connectez est trop ancien ! Veuillez le mettre à jour."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Données erronées reçues du composant central"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Se déconnecter du composant central."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Connexion non chiffrée annulée"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synchronisation avec le composant central..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Le composant central auquel vous essayez de vous connecter est trop ancien  !</b><br>Vous devez avoir au minimum la version %1 du protocole de composant central/client pour vous connecter."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Identification..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Identification annulée"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Réception de l'état de la session"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synchronisation avec %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Réception de l'état des réseaux..."
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2119,52 +2137,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (depuis %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Échec de la connexion. Passage sur le serveur suivant"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Connexion à %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Déconnexion. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Arrêt du composant central"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Impossible de se connecter à %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Échec de la connexion : %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "déconnecté (IdUtilisateur: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2172,7 +2190,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork() : le composant central a renvoyé un identifiant réseau erroné lors de la création du réseau %1 !"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2220,8 +2238,8 @@ msgstr "envoi d'une requête CTCP-%1 à %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2236,7 +2254,7 @@ msgid ""
 msgstr "[utilisation] /delkey <pseudo|canal> supprime la clé de chiffrement pour le pseudo ou le canal ou simplement /delkey dans un canal ou une requête."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2249,7 +2267,7 @@ msgid "The key for %1 has been deleted."
 msgstr "La clé pour %1 a été supprimée."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2282,7 +2300,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Initiation de l'échange de clés avec %1."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2291,13 +2309,13 @@ msgid ""
 "with QCA present."
 msgstr "Erreur : définir une clé de chiffrement nécessite que Quassel ait été compilé avec la prise en charge de la bibliothèque QCA. Veuillez contacter votre distributeur concernant un paquet Quassel prenant en charge QCA, ou re-compilez Quassel avec QCA."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Début du dialogue avec %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2305,26 +2323,26 @@ msgid ""
 "it."
 msgstr "[utilisation] /setkey <pseudo|canal> <key> définit la clé de chiffrement pour un pseudo ou un canal. /setkey <key> dans un canal ou une requête définit la clé pour celui-ci."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "La clé pour %1 a été définie."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[utilisation] /delkey <pseudo|canal> supprime la clé de chiffrement pour le pseudo ou le canal ou simplement /delkey dans un canal ou une requête."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2802,7 +2820,7 @@ msgid "highlight rule"
 msgstr "règle de surlignage"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Renommer l'identité"
@@ -2838,55 +2856,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identités"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Les problèmes suivants doivent être corrigés avant que vos changements puissent être appliqués :</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Toutes les identités ont besoin qu'un nom d'identité soit défini</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Chaque identité doit avoir au moins un pseudo défini</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Vous devez saisir un nom réel pour chaque identité</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Vous devez renseigner « ident » pour chaque identité</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Une ou plusieurs identités sont erronées"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Supprimer l'Identité ?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Voulez-vous vraiment supprimer l'identité « %1 » ?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3917,379 +3935,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Réassigner"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Composant central Quassel version %1</b><br>Compilation : %2<br>En fonction pendant %3 j %4 h %5 min (depuis %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Général"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Se &connecter au composant central..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "Se &déconnecter du composant central"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Info sur le composant central..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configurer les &réseaux..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Quitter"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurer les listes de discussion..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Bloquer la disposition"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Afficher la barre de &recherche"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Afficher l'historique d'absence"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Afficher la barre des &menus"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Afficher la &barre d'état"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Pl&ein écran"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configurer les &raccourcis..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurer Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&À propos de Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "À propos de &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Débogage du modèle &réseau"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Débogage des &tampons d'affichage"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Débogage du modèle &message"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Débogage &Hotlist"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "&Journalisation du débogage"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Recharger la feuille de style"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Masquer la mémoire tampon"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigation"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Aller à la conversation active"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Définir l'accès rapide n°0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Définir l'accès rapide n°1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Définir l'accès rapide n°2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Définir l'accès rapide n°3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Définir l'accès rapide n°4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Définir l'accès rapide n°5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Définir l'accès rapide n°6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Définir l'accès rapide n°7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Définir l'accès rapide n°8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Définir l'accès rapide n°9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Accès rapide n°0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Accès rapide n°1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Accès rapide n°2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Accès rapide n°3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Accès rapide n°4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Accès rapide n°5 "
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Accès rapide n°6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Accès rapide n°7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Accès rapide n°8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Accès rapide n°9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activer la liste de conversations suivantes"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activer la liste de conversations précédentes"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Aller à la conversation suivante"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Aller à la conversation précédente"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fichier"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Réseaux"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Affichage"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Listes de conversations"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Barres d'outils"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Configuration"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Aide"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Débogage"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Pseudos"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Afficher la liste des pseudos"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Moniteur de discussion"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Afficher le moniteur de discussion"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Ligne de saisie"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Afficher la ligne de saisie"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Sujet"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Afficher la ligne de sujet"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barre d'outils principale"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Connecté au composant central."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Déconnecté du composant central."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Connexion non chiffrée"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Votre client ne prend pas en charge le chiffrement SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Les données sensibles, telles que les mots de passe, seront transmises en clair à votre composant central Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Votre composant central ne prend pas en charge le chiffrement SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificat non digne de confiance"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4297,33 +4332,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Le certificat SSL fourni par le composant central sur %1 n'est pas digne de confiance pour les raisons suivantes :</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuer"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Afficher le certificat"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Voulez-vous accepter définitivement ce certificat et que la question ne soit plus posée ?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Pour la session actuelle uniquement"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Pour toujours"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Erreur de connexion au composant central"
@@ -4802,7 +4837,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Un pseudo valable peut contenir des lettres de l'alphabet anglais, des chiffres, et les caractères spéciaux {, }, [, ], \\, |, `, ^, _ et -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Ajouter un pseudo"
@@ -4817,7 +4852,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notifications"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Sélectionner le fichier audio"
@@ -5425,6 +5460,42 @@ msgid ""
 "network"
 msgstr "Liste des canaux IRC que vous voulez rejoindre automatiquement après connexion au réseau"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulaire"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 3929336..de8051a 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Galician (http://www.transifex.com/projects/p/quassel/language/gl/)\n"
 "MIME-Version: 1.0\n"
@@ -71,7 +71,7 @@ msgstr "<b>Versión:</b> %1<br><b>Versión do protocolo:</b> %2<br><b>Compilaci
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -82,7 +82,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Un modero cliente de IRC distribuido</b><br><br>&copy;2005-2012 polo Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> en <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC está baixo a dobre licenza <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>a maioría das iconas teñen &copy; polo <a href=\"http://www.oxygen-icons.org\">Equipo Oxygen</a> e son empregadas baixo a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Empregue <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para informar de erros."
+msgstr "<b>Un modero cliente de IRC distribuido</b><br><br>&copy;%1 polo Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> en <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC está baixo a dobre licenza <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>a maioría das iconas teñen &copy; polo <a href=\"http://www.oxygen-icons.org\">Equipo Oxygen</a> e son empregadas baixo a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Empregue <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para informar de erros."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -96,7 +96,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Gustaríanos darlle as grazas aos seguintes colaboradores (en orde alfabética) e a todas as persoas que esquecemos nomear aquí:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -809,7 +809,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurar..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiar selección"
@@ -1028,6 +1028,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "A identidade xa existe no cliente!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Conexión non cifrada cancelada"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Conectando a %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Sincronizando co núcleo..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Conectado a %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Accedendo..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Acceso cancelado"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1343,12 +1399,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Regras existentes"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Non se puido iniciar a infraestrutura de almacenamento! Saíndo..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1356,147 +1412,93 @@ msgid ""
 "to work."
 msgstr "Actualmente, Quassel admite SQLite3 e PostgreSQL. Precisa compilar\n a biblioteca Qt co complemento de sqlite ou postgres activado para que quasselcore\nfuncione."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Chamando a restoreState() aínda que existe unha sesión activa!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Non foi estabelecido o usuario administrador ou o contrasinal."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Non se puido configurar o almacenamento!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Creando usuario administrador..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "O enderezo de escoita non é válido %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Agardando por algún IGU de cliente en IPv6 %1 porto %2 empregando o protocolo versión %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Non se puido abrir a interface IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Agardando por algún IGU de cliente en IPv4 %1 porto %2 empregando o protocolo versión %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Non se puido abrir a interface IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Enderezo de escoita non válido %1, protocolo de rede descoñecido"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Non se puido abrir ningunha interface de rede na que escoitar!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Cliente conectado desde"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Pechando o servidor para configuración básica."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Cliente antigo tentando conectar... rexeitando."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>O seu cliente de Quassel é moi antigo!</b><br>Este núcleo precisa polo menos da versión do protocolo de cliente/núcleo %1.<br>Considere anovar o seu cliente."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Cliente"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "demasiado antigo, rexeitando."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Versión do núcleo de Quassel %1</b><br>Compilación: %2<br>Activo %3d%4h%5m (desde %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Comezando TLS para o cliente:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Cliente non inicializado!</b><br>Vostede necesita enviar unha mensaxe de inicialización (init) antes de tentar iniciar sesión."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "non enviou unha mensaxe de inicio antes de conectar, rexeitando."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Nome de usuario ou contrasinal non válido!</b><br>A combinación de nome de usuario e contrasinal que vostede forneceu non está na base de datos."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "inicializado e identificado correctamente como «%1» (ID de usuario: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Cliente non autenticado, desconectado."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Non se puido comezar sesión para o cliente:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Non se puido atopar unha sesión para o cliente:"
@@ -1637,17 +1639,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Núcleos remotos"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Cliente"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "demasiado antigo, rexeitando."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "non enviou unha mensaxe de inicio antes de conectar, rexeitando."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Cliente non inicializado!</b><br>Vostede necesita enviar unha mensaxe de inicialización (init) antes de tentar iniciar sesión."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Nome de usuario ou contrasinal non válido!</b><br>A combinación de nome de usuario e contrasinal que vostede forneceu non está na base de datos."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Asistente de configuración do núcleo"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "O seu núcleo foi configurado correctamente. Accedendo..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1655,7 +1714,7 @@ msgid ""
 "over."
 msgstr "Fallou a configuración do núcleo:<br><b>%1</b><br>Prema <em>Seguinte</em> para comezar de novo."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1704,46 +1763,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Este asistente guiarao a través da configuración do seu núcleo de Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Crear usuario administrador"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Primeiro, crearemos un usuario no núcleo. Este primeiro usuario terá permisos de administrador."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introdución"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Seleccione a infraestrutura de almacenamento"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Seleccione unha infraestrutura de almacenamento para que o núcleo de Quassel poida almacenar o rexistro e outros datos."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Propiedades da conexión"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Almacenando a súa configuración"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1841,103 +1900,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Conectar ao núcleo"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "A rede non funciona"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Desconectado"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Buscando %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Conectando a %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Conectado a %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Desconectando de %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "O núcleo Quassel ao que tenta conectar é demasiado antigo! Considere anovalo."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Os datos recibidos do núcleo non son válidos"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Desconectado do núcleo."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Conexión non cifrada cancelada"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Sincronizando co núcleo..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>O núcleo Quassel ao que tenta conectar é demasiado antigo!</b><br>Necesitase, polo menos, un protocolo v%1 de cliente/núcleo para conectarse."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Accedendo..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Acceso cancelado"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Recibindo o estado da sesión"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Sincronizando con %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Recibindo o estado das redes"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2117,52 +2135,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (desde %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Fallou a conexión. Probando o seguinte servidor"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Conectando a %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Desconectando. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Apagar o núcleo"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Non se puido conectar a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Fallo de conexión: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Cliente"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "desconectado (UserID: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2170,7 +2188,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): obtivo un ID de rede non válido do núcleo cando tentaba crear a rede %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2218,8 +2236,8 @@ msgstr "enviando petición CTCP-%1 a %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2234,7 +2252,7 @@ msgid ""
 msgstr "[uso] /delkey <alcume|canle> elimina a chave de cifrado para o alcume ou a canle indicada ou /delkey cando se atope nunha canle ou nunha consulta."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2247,7 +2265,7 @@ msgid "The key for %1 has been deleted."
 msgstr "A chave para %1 foi eliminada."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2280,7 +2298,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2289,13 +2307,13 @@ msgid ""
 "with QCA present."
 msgstr "Erro: Configurar unha chave de cifrado require que Quassel teña sido compilado con compatibilidade para a biblioteca de arquitectura de cifrado Qt (QCA polas súa siglas en inglés). Consulte co seu distribuidor sobre algún paquete Quassel con compatibilidade QCA, ou recompile Quassel con QCA presente."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2303,26 +2321,26 @@ msgid ""
 "it."
 msgstr "[uso] /setkey <alcume|canle> <chave> estabelece a chave de cifrado para o alcume ou a canle indicada. /setkey <chave> estabelece a chave cando se atope nunha canle ou nunha consulta."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Foi estabelecida a chave para %1"
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[uso] /delkey <alcume|canle> elimina a chave de cifrado para o alcume ou a canle indicada ou /delkey cando se atope nunha canle ou nunha consulta."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2800,7 +2818,7 @@ msgid "highlight rule"
 msgstr "regra de resalte"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Renomear a identidade"
@@ -2836,55 +2854,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identidades"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Os seguintes problemas precisan ser corrixidos antes de que se poidan aplicar os cambios:</b> <ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Todas as identidades precisan dun nome de identidade definido</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Todas as identidades precisan de polo menos un alcume definido</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Debe especificar un nome real para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Debe especificar un nome real para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Unha ou máis identidades non son válidas"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Eliminar identidade?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Ten certeza de que quere eliminar a identidade «%1»?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reasignar"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Versión do núcleo de Quassel %1</b><br>Compilación: %2<br>Activo %3d%4h%5m (desde %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Xeral"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Conectar ao núcleo..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Desconectar do núcleo"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Información do núcleo..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configurar &redes..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Saír"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurar listas de canles..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "B&loquear a distribución das xanelas"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Mostrar a barra de bu&sca"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Mostrar o rexistro de ausencia"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Mostrar a barra de &menú"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Mostrar a &barra de estado"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Modo de &pantalla completa"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Con&figurar accesos directos..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurar Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Sobre Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Sobre &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Depurar &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Depurar &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Depurar &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Depurar &HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Depurar &Log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Recargar folla de estilos"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navegación"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Pasar á conversa seguinte"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Estabelecer o acceso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Estabelecer o acceso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Estabelecer o acceso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Estabelecer o acceso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Estabelecer o acceso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Estabelecer o acceso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Estabelecer o acceso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Estabelecer o acceso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Estabelecer o acceso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Estabelecer o acceso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Acceso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Acceso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Acceso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Acceso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Acceso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Acceso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Acceso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Acceso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Acceso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Acceso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activar a seguinte lista de conversas"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activar a lista de conversas anterior"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Ir á seguinte conversa"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Ir á conversa anterior"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Ficheiro"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Redes"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Vista"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Lista de conversas"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Barras de ferramentas"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Configuración"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Axuda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Depurar"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Alcumes"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Mostrar a lista de alcumes"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de conversa:"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Mostrar o monitor de conversas"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Liña de entrada de texto"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Mostrar a liña de entrada"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tema"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Mostrar a liña do tema"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra de ferramentas principal"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Non conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Conexión sen cifrar"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>O seu cliente non admite o cifrado SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "A información confidencial, como os contrasinais, será transmitida sen cifrar ao seu núcleo Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>O seu núcleo non admite o cifrado SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "O certificado de seguranza non é de confianza"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>O certificado SSL fornecido polo núcleo en %1 non é de confianza polas razóns seguintes:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuar"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Mostrar certificado"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Desexa aceptar este certificado para sempre sen que se lle volva a preguntar?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Só durante a sesión actual"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Para sempre"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Produciuse un error de conexión co núcleo"
@@ -4800,7 +4835,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Un alcume válido pode conter letras do alfabeto inglés, díxitos numéricos, e os caracteres especiais {, }, [, ], \\, |, `, ^, _ e -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Engadir alcume"
@@ -4815,7 +4850,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificacións"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Seleccione un ficheiro de son"
@@ -5423,6 +5458,42 @@ msgid ""
 "network"
 msgstr "Unha lista de canles de IRC ás que unirse automaticamente despois de conectarse á rede"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulario"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index f0b14c5..b4f5f10 100644 (file)
--- a/po/hi.po
+++ b/po/hi.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
-"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
+"PO-Revision-Date: 2013-12-15 11:00+0000\n"
+"Last-Translator: libregeekingkid <rajuvindane@gmail.com>\n"
 "Language-Team: Hindi (http://www.transifex.com/projects/p/quassel/language/hi/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -68,7 +68,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "हम इन सभी सहयोगियो को धन्यवाद देना चाहेंगे ( अक्षरात्मक अनुक्रमानुसार)  और उन सबका भी जिनका हम यहा उल्लेख करना भुल गये।"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -120,7 +120,7 @@ msgstr ""
 #: ../src/core/abstractsqlstorage.cpp:129
 msgctxt "AbstractSqlStorage|"
 msgid "Upgrade failed..."
-msgstr ""
+msgstr "सुधारना असफल हई"
 
 #: ../src/qtui/settingspages/aliasesmodel.cpp:57
 msgctxt "AliasesModel|"
@@ -148,27 +148,27 @@ msgstr ""
 #: ../src/qtui/settingspages/aliasesmodel.cpp:185
 msgctxt "AliasesModel|"
 msgid "Alias"
-msgstr ""
+msgstr "कल्पित नाम"
 
 #: ../src/qtui/settingspages/aliasesmodel.cpp:186
 msgctxt "AliasesModel|"
 msgid "Expansion"
-msgstr ""
+msgstr "विस्तार"
 
 #: ../src/qtui/settingspages/aliasessettingspage.ui:13
 msgctxt "AliasesSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/aliasessettingspage.ui:27
 msgctxt "AliasesSettingsPage|"
 msgid "New"
-msgstr ""
+msgstr "नया"
 
 #: ../src/qtui/settingspages/aliasessettingspage.ui:41
 msgctxt "AliasesSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "मिटाना"
 
 #: ../src/qtui/settingspages/aliasessettingspage.cpp:29
 msgctxt "AliasesSettingsPage|"
@@ -178,12 +178,12 @@ msgstr ""
 #: ../src/qtui/settingspages/aliasessettingspage.cpp:29
 msgctxt "AliasesSettingsPage|"
 msgid "Aliases"
-msgstr ""
+msgstr "दुसरे नाम"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:14
 msgctxt "AppearanceSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:22
 msgctxt "AppearanceSettingsPage|"
@@ -309,7 +309,7 @@ msgstr ""
 #: ../src/qtui/settingspages/backlogsettingspage.ui:14
 msgctxt "BacklogSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/backlogsettingspage.ui:22
 msgctxt "BacklogSettingsPage|"
@@ -473,7 +473,7 @@ msgstr ""
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:14
 msgctxt "BufferViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:31
 msgctxt "BufferViewSettingsPage|"
@@ -705,7 +705,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:14
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:22
 msgctxt "ChatMonitorSettingsPage|"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -814,7 +814,7 @@ msgstr ""
 #: ../src/qtui/ui/chatviewsearchbar.ui:13
 msgctxt "ChatViewSearchBar|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/chatviewsearchbar.ui:19
 #: ../src/qtui/ui/chatviewsearchbar.ui:33
@@ -846,7 +846,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:14
 msgctxt "ChatViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:22
 msgctxt "ChatViewSettingsPage|"
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr ""
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
 msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1612,7 +1614,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:67
 msgctxt "CoreAccountSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "मिटाना"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:96
 msgctxt "CoreAccountSettingsPage|"
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1662,7 +1721,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
 msgctxt "CoreConfigWizardAdminUserPage|"
@@ -1694,53 +1753,53 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:13
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:19
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1750,7 +1809,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
 msgctxt "CoreConfigWizardStorageSelectionPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
 msgctxt "CoreConfigWizardStorageSelectionPage|"
@@ -1770,7 +1829,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
 msgctxt "CoreConfigWizardSyncPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
 msgctxt "CoreConfigWizardSyncPage|"
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -1943,7 +1961,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
 msgctxt "CoreConnectionSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
 msgctxt "CoreConnectionSettingsPage|"
@@ -2017,7 +2035,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
 msgctxt "CoreConnectionStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
 msgctxt "CoreConnectionStatusWidget|"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2713,7 +2731,7 @@ msgstr ""
 #: ../src/qtui/settingspages/highlightsettingspage.ui:14
 msgctxt "HighlightSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:20
 msgctxt "HighlightSettingsPage|"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3408,17 +3426,17 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:14
 msgctxt "IgnoreListSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:28
 msgctxt "IgnoreListSettingsPage|"
 msgid "New"
-msgstr ""
+msgstr "नया"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:42
 msgctxt "IgnoreListSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "मिटाना"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:56
 msgctxt "IgnoreListSettingsPage|"
@@ -3452,7 +3470,7 @@ msgstr ""
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
 msgctxt "IndicatorNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
 msgctxt "IndicatorNotificationConfigWidget|"
@@ -3469,7 +3487,7 @@ msgstr ""
 #: ../src/qtui/ui/inputwidget.ui:26
 msgctxt "InputWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
@@ -3564,7 +3582,7 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
 msgctxt "InputWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
 msgctxt "InputWidgetSettingsPage|"
@@ -3702,7 +3720,7 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:14
 msgctxt "ItemViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:22
 msgctxt "ItemViewSettingsPage|"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4332,7 +4367,7 @@ msgstr ""
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
 msgctxt "MsgProcessorStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
 msgctxt "MsgProcessorStatusWidget|"
@@ -4504,7 +4539,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:14
 msgctxt "NetworksSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:48
 msgctxt "NetworksSettingsPage|"
@@ -4797,7 +4832,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4812,7 +4847,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -4820,7 +4855,7 @@ msgstr ""
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
 msgctxt "PhononNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
 msgctxt "PhononNotificationConfigWidget|"
@@ -5298,7 +5333,7 @@ msgstr ""
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:14
 msgctxt "ShortcutsSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:22
 msgctxt "ShortcutsSettingsPage|"
@@ -5420,6 +5455,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "फार्म"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
@@ -5732,7 +5803,7 @@ msgstr ""
 #: ../src/qtui/ui/topicwidget.ui:32
 msgctxt "TopicWidget|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/ui/topicwidget.ui:79
 msgctxt "TopicWidget|"
@@ -5754,7 +5825,7 @@ msgstr ""
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
 msgctxt "TopicWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "फार्म"
 
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
 msgctxt "TopicWidgetSettingsPage|"
index 4b43c9a..c1ce752 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Hungarian (http://www.transifex.com/projects/p/quassel/language/hu/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Verzió:</b> %1<br><b>Protokollverzió:</b> %2<br><b>Összeállítva:
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -80,7 +80,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Egy modern, elosztott IRC-kliens<b><br><br>&copy; A Quassel projekt, 2005-2012.<br><a href=\"http://quassel-irc.org\">#quassel</a> a <a href=\" http://www.freenode.net\">Freenode</a> hálózaton.</a><br><br>A Quassel IRC a <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> és <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> kettős licencek szerint érhető el.<br>A legtöbb ikon tulajdonosai az <a href=\" http://www.oxygen-icons.org\">Oxygen fejlesztői</a>, és a <a href=\"http:// www.gnu.org/licenses/lgpl.html\">LGPL</a> licenc alatt érhetők el.<br><br> Kérjük a hibákat a <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel- irc.org</a> oldalon jelentsék."
+msgstr "<b>Egy modern, elosztott IRC-kliens<b><br><br>&copy; A Quassel projekt, %1.<br><a href=\"http://quassel-irc.org\">#quassel</a> a <a href=\" http://www.freenode.net\">Freenode</a> hálózaton.</a><br><br>A Quassel IRC a <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> és <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> kettős licencek szerint érhető el.<br>A legtöbb ikon tulajdonosai az <a href=\" http://www.oxygen-icons.org\">Oxygen fejlesztői</a>, és a <a href=\"http:// www.gnu.org/licenses/lgpl.html\">LGPL</a> licenc alatt érhetők el.<br><br> Kérjük a hibákat a <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel- irc.org</a> oldalon jelentsék."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Szeretnénk köszönetet mondani a következő közreműködőknek, és mindazoknak akiket elfelejtettünk itt megemlíteni:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Beállítás…"
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kijelölés másolása"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "A profil már létezik!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Biztonsági Kapcsolat Használata"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Kapcsolódás %1 hálózathoz..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "&Csatlakozás..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Kapcsolódva %1 hálózathoz"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Bejelentkezés…"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Nem lehet a háttértárolót előkészíteni! Kilépés..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "restoreState() hívása amíg az aktív munkafolyamat él!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Admin felhasználót vagy jelszót nem állítottak be."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "A tárolót nem lehet beállítani!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Adminisztrátor Felhasználó Létrehozása..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Nem érvényes figyelő cím %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "GUI kliens figyelése %1 számú IPv6-on, %2 porton, %3 számú protokollal"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Nem lehet megnyitni az IPv6 csatolót %1:%2:%3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "GUI kliens figyelése %1 számú IPv4-en, %2 porton, %3 számú protokollal"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Nem lehet megnyitni az IPv4 csatolót %1:%2:%3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Nem érvényes figyelő cím %1, ismeretlen hálózati protokoll"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Nem lehet hálózati csatolót nyitni!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Kliens kapcsolódása innen"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Szerver leállítása alapbeállításokhoz."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Régi kliens próbál kapcsolódni... elutasítás."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Az Ön Quassel kliense túl régi!</b><br>A core legalább %1 számú protokoll verziót igényel.<br>Kérem fontolja meg kliensének frissítését."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
-msgstr "Kliens"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "túl régi, visszautasítás."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel Core Verziószám %1</b><br>Built: %2<br>Működési idő %3d%4h%5m (%6 óta)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "TLS Indítása a Klienshez:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>A kliens nem előkészített!</b><br>Indítási üzenet küldése szükséges a bejelentkezés előtt."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "bejelentkezés előtti üzenet nem lett elküldve, visszautasítás."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Nem megfelelő felhasználói név vagy jelszó!</b><br>Az Ön által megadott felhasználói név/jelszó páros nem található az adatbázisban."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "sikeresen beállított és azonosított mint \"%1\" (UserId: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Nem azonosított kliens bontotta a kapcsolatot."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Nem lehet a munkamenetet előkészíteni a kliens számára:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Nem lehet a munkamenetet előkészíteni a kliens számára:"
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Kliens"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "túl régi, visszautasítás."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "bejelentkezés előtti üzenet nem lett elküldve, visszautasítás."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>A kliens nem előkészített!</b><br>Indítási üzenet küldése szükséges a bejelentkezés előtt."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Nem megfelelő felhasználói név vagy jelszó!</b><br>Az Ön által megadott felhasználói név/jelszó páros nem található az adatbázisban."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Mag Konfiguráció Varázsló"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "A magot sikeresen beállítottuk. Bejelentkezés..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr "Mag konfiguráció nem sikerült:<br><b>%1</b><br>Nyomja meg a <em>Következő gombot</em> az újraindításhoz."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Ez a varázsló segíteni fogja Önt a Quassel mag Beállításaiban."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Adminisztrátor Felhasználó Létrehozása"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Először létre fogunk hozni egy felhasználót a magon. Ennek az első felhasználónak adminisztrátor kiváltságai lesznek."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Bevezetés"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "HáttérTároló kiválasztása"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Kérem válasszon ki egy adatbázis-tárolót a Quassel mag raktárhoz, hogy tárolja tudja a restanciákat és egyéb adatokat."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Kapcsolat"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Beállítások Tárolása"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "&Csatlakozás..."
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Hálózatok"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Szétkapcsolva"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "%1 keresése…"
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Kapcsolódás %1 hálózathoz..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Kapcsolódva %1 hálózathoz"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Lekapcsolódás erről %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "A Quassel mag amihez csatlakozni próbál elavult! Frissítés Ajánlott."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "&Kapcsolat Bontása"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Biztonsági Kapcsolat Használata"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "&Csatlakozás..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>A Quassel Core, mellyel kapcslódni próbál, túl régi! </b><br>Legalább v%1 számú core/kliens protokoll szükséges a kapcsolódáshoz."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Bejelentkezés…"
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Kapcsolódás %1 hálózathoz..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (%4 óta)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Kapcsolódás Sikertelen. Kapcsolódás a következő Kiszolgálóhoz"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Kapcsolódás %1:%2 hálózatokhoz..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Lekapcsolódás. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Nem lehet csatlakozni a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Kapcsolódás sikertelen %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Kliens"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "kapcsolat bontva (Felhasználói azonosító: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Érvénytelen hálózati azonosító érkezett a Magtól a %1 hálózat létrehozása közben!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr "kiemelés szabályai"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Profil Átnevezése"
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Azonosítók"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Minden személyazonossághoz szükséges azonosító név beállítása</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Minden személyazonossághoz szükséges azonosító név beállítása</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Minden személyazonossághoz szükséges valódi név megadása</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Minden személyazonossághoz szükséges egy azonosító megadása</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Egy vagy több személyazonosság érvénytelen"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Adatlap Törlése?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Biztosan törli a \"%1\" profilt?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel Core Verziószám %1</b><br>Built: %2<br>Működési idő %3d%4h%5m (%6 óta)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Általános"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Csatlakozás..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Kapcsolat Bontása"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Mag &Info..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "&Hálózatok beállítása…"
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Kilépés"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "A Quass&el beállítása…"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Kere&sősáv megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Távollét Alatti Naplózás Megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "&Menüsor megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Álla&potsor megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Teljes képernyős mód"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "A gyor&sbillentyűk beállítása…"
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "A Quass&el beállítása…"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "A Quassel &névjegye"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "A &Qt névjegye"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Hibakeresés &HálózatiModell"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Hibakeresés &ÜzenetModell"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Hibakeresés &Naplózás"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Hibakeresés &Naplózás"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Egyéni stíluslap használata"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Szervezet:"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Törli a csevegéslistát?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fájl"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Hálózatok"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Nézet"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Csevegéslista hozzáadása"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Eszköztárak"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Beállítások"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "Sú&gó"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Hibakereső"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Becenevek"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Becenevek Megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Csevegésfigyelő"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Csevegésfigyelő"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Beviteli Mező"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Beviteli Mező Megjelenítése"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Téma"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Téma Mutatása"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Fő eszköztár"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Csatlakozva a maghoz."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Nem kapcsolódott a maghoz."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Biztonsági Kapcsolat Használata"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "SSL-tanúsítvány használata"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Folytatás"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Töltsön be egy tanúsítványt"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Kapcsolat"
@@ -4798,7 +4833,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Az érvényes becenév tartalmazhajta az angol abc betűit, számokat és a következő speciális karaktereket: {, }, [, ], \\, |, `, ^, _ és -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Álnév hozzáadása"
@@ -4813,7 +4848,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Értesítések"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Hang Fájl Kiválasztása"
@@ -5421,6 +5456,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Űrlap"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 0723120..9065d5b 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Italian (http://www.transifex.com/projects/p/quassel/language/it/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Versione:</b> %1<br><b>Versione protocollo:</b> %2<br><b>Compilato:</
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -80,7 +80,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Un Client IRC moderno. distribuito</b><br><br>&copy;2005-2012 Progetto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> su <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC è distribuito con doppia licenza: <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Molte delle icone sono &copy; del <a href=\"http://www.oxygen-icons.org\">Team Oxygen</a> e utilizzate con licenza <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Utilizzare <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> per segnalare gli errori."
+msgstr "<b>Un Client IRC moderno. distribuito</b><br><br>&copy;%1 Progetto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> su <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC è distribuito con doppia licenza: <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Molte delle icone sono &copy; del <a href=\"http://www.oxygen-icons.org\">Team Oxygen</a> e utilizzate con licenza <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Utilizzare <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> per segnalare gli errori."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Vorremmo ringraziare le persone che hanno contribuito (qui elencate, in ordine alfabetico) e chiunque avessimo dimenticato di menzionare:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configura..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copia selezione"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "L'identità esiste già nel client!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Connessione non cifrata annullata"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Connessione a %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Sincronizzazione al core..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Connesso a %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Accesso in corso..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Accesso annullato"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Regole esistenti"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Impossibile inizializzare un backend di archiviazione! In uscita..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr "Al momento, Quassel supporta solo SQLite3 e PostgreSQL. E' necessario compilare\nle librerie Qt con il plugin sqlite (o postgres) affinché quasselcore possa\nfunzionare correttamente."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Sto eseguendo restoreState() anche se le sessioni attive esistono!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Utente o password dell'amministratore non impostati."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Impossibile configurare la memorizzazione!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Creazione dell'utente amministratore..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Indirizzo di ascolto %1 non valido"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "In ascolto per i client GUI su IPv6 %1 porta %2 utilizzando la versione di protocollo %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Impossibile aprire l'interfaccia IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "In ascolto per i client GUI su IPv4 %1 porta %2 utilizzando la versione di protocollo %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Impossibile aprire l'interfaccia IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Indirizzo d'ascolto non valido %1, protocollo di rete sconosciuto"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Impossibile aprire interfacce di rete su cui ascoltare!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client connesso da"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Chiusura del server per le impostazioni di base."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Un client datato sta tentando di connettersi... rifiutato."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Il tuo client Quassel è troppo vecchio!</b><br>Questo core necessita almeno di una versione del protocollo client/core %1.<br>Per cortesia, aggiorna il client."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "troppo vecchio, rifiutato."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Versione Quassel Core %1</b><br>Compilato: %2<br>Attivo %3d%4h%5m (da %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Avvio TLS per il client:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Client non inizializzato!</b><br>Devi inviare un messaggio di init prima di provare ad accedere."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "non è stato inviato alcun messaggio di init prima dell'accesso, rifiuto in corso."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Nome utente o password non validi!</b><br>Le credenziali fornite non sono state trovate nel database."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "inizializzato e autenticato con successo come «%1» (Id utente: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Client non autenticato disconnesso."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Impossibile inizializzare la sessione per il client:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Impossibile trovare una sessione per il client:"
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Core remoti"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "troppo vecchio, rifiutato."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "non è stato inviato alcun messaggio di init prima dell'accesso, rifiuto in corso."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Client non inizializzato!</b><br>Devi inviare un messaggio di init prima di provare ad accedere."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Nome utente o password non validi!</b><br>Le credenziali fornite non sono state trovate nel database."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Configurazione guidata core"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Il tuo core è stato configurato con successo. Accesso in corso..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr "Configurazione core non riuscita:<br><b>%1</b><br>Premi <em>Avanti</em> per ricominciare."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Questa procedura ti guiderà attraverso la configurazione del core di Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Crea utente Amministratore"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Per cominciare creeremo un utente sul core. Questo primo utente avrà privilegi di amministratore."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduzione"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Seleziona un backend di archiviazione"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Seleziona un backend di database in cui il core di Quassel immagazzinerà lo storico del registro e altri dati."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Proprietà connessione"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Salvataggio delle impostazioni"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Connetti al core..."
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "La rete è inattiva"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Disconnesso"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Ricerca in corso di %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Connessione a %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Connesso a %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Disconnessione da %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Il core di Quassel cui stai tentando di connetterti è troppo vecchio! Aggiornalo il prima possibile."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Dati non validi ricevuti dal core"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Disconnesso dal core."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Connessione non cifrata annullata"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Sincronizzazione al core..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Il core di Quassel cui stai tentando di connetterti è troppo vecchio!</b><br>È necessario almeno un core/client che utilizzi il protocollo v%1 per connettersi."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Accesso in corso..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Accesso annullato"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Ricezione dello stato sessione"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Sincronizzazione con %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Ricezione degli stati della rete"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (da %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Connessione non riuscita. Passaggio al server successivo"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Connessione in corso a %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Disconnessione in corso (%1)."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Spegni core"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Impossibile connettersi a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Connessione non riuscita: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "disconnesso (UserID: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): ricevuto networkId non valido dal core al momento della creazione della rete %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr "invio richiesta CTCP-%1 a %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr "[uso] /delkey <nick|channel> elimina la chiave di cifratura per il nick o il canale, oppure solo /delkey se in un canale o durante una ricerca."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr "La chiave per %1 è stata eliminata."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr "Errore: l'impostazione di una chiave di cifratura richiede che Quassel sia compilato con il supporto per la libreria Qt Cryptographic Architecture (QCA). Contatta il distributore riguardo un pacchetto Quassel con supporto QCA oppure ricompila Quassel con QCA presente."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr "[uso] /setkey <nick|channel> <key> imposta la chiave di cifratura per il nick o il canale. /setkey <key> se in un canale, o durante il buffer di ricerca, imposta la chiave per esso."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "La chiave per %1 è stata impostata."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[uso] /delkey <nick|channel> elimina la chiave di cifratura per il nick o il canale, oppure solo /delkey se in un canale o durante una ricerca."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr "regola evidenziazione"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Rinomina identità"
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identità"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Devono essere corretti i seguenti problemi prima di poter applicare le modifiche:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Tutte le identità necessitano di un nome identità definito</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Ogni identità necessita di almeno un nick definito</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Specificare un nome reale per ogni identità</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Devi specificare un ident per ogni identità</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Una o più identità non sono valide"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Eliminare l'identità?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Vuoi davvero eliminare l'identità «%1»?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Riassegna"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Versione Quassel Core %1</b><br>Compilato: %2<br>Attivo %3d%4h%5m (da %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Generale"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Connetti al core..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Disconnetti dal core"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Informazioni core..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configura &reti..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Esci"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configura liste chat..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Blocca layout"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Mostra barra di &ricerca"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Mostra registro assenza"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Mostra &barra dei menu"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Mostra &barra di stato"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Modalità a tutto schermo"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configura &scorciatoie..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configura Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Informazioni su Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Informazioni su &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debug &ModelloRete"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Debug &SovrapposizioneVistaBuffer"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debug &ModelloMessaggio"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Debug &Hotlist"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "&Registro di debug"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Ricarica fogli di stile"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigazione"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Passa alla chat attiva"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Imposta accesso rapido #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Imposta accesso rapido #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Imposta accesso rapido #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Imposta accesso rapido #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Imposta accesso rapido #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Imposta accesso rapido #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Imposta accesso rapido #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Imposta accesso rapido #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Imposta accesso rapido #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Imposta accesso rapido #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Accesso rapido #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Accesso rapido #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Accesso rapido #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Accesso rapido #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Accesso rapido #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Accesso rapido #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Accesso rapido #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Accesso rapido #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Accesso rapido #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Accesso rapido #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Attiva lista chat successiva"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Attiva lista chat precedente"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Vai alla chat successiva"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Vai alla chat precedente"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&File"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Reti"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Visualizza"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Liste chat"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Barre degli strumenti"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Impostazioni"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Aiuto"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Nick"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Mostra lista nick"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor di chat"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Mostra monitor di chat"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Campo inserimento testo"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Mostra campo inserimento testo"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Argomento"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Mostra riga dell'argomento"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra principale"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Connesso al core."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Non connesso al core."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Connessione non cifrata"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Il tuo client non supporta la cifratura SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "I dati sensibili, come le password, verranno trasmesse in chiaro al core di Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Il core non supporta la cifratura SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificato di sicurezza non affidabile"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Il certificato SSL fornito dal core a %1 non è affidabile per i seguenti motivi:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continua"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Mostra certificato"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Vuoi accettare questo certificato per sempre senza chiederlo nuovamente?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Solo per la sessione corrente"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Per sempre"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Errore di connessione al core"
@@ -4798,7 +4833,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Un nick valido può contenere lettere dell'alfabeto inglese, numeri, e altri caratteri speciali {, }, [, ], \\, |, `, ^, _ e -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Aggiungi nick"
@@ -4813,7 +4848,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notifiche"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Seleziona file audio"
@@ -5421,6 +5456,42 @@ msgid ""
 "network"
 msgstr "Una lista di canali IRC a cui verrai connesso automaticamente dopo la connessione alla rete"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Modulo"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 9357c23..15337bf 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Japanese (http://www.transifex.com/projects/p/quassel/language/ja/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "設定..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "セレクションをコピー"
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "安全な接続を使う"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "%1 に接続中..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "コアに接続(&C)..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "%1 に接続しました"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "ログイン中..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "ログインがキャンセルしました"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "管理ユーザを作成"
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "コアから切断しました。"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "クライアント"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "”%1”のスクリプトを見つかれませんでした。"
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "リモートコア"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "クライアント"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "コアの設定ウイザード"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "コアの設定に成功しました。ログイン中..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "管理ユーザを作成"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "保存バックエンドを選択"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "接続の設定"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "設定を保存"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "コアに接続"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "ネットワーク"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "切断しました"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "%1 に接続中..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "%1 に接続中..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "%1 に接続しました"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "%1 から切断中..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "コアから切断しました。"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "安全な接続を使う"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "コアに接続(&C)..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "ログイン中..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "ログインがキャンセルしました"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "%1 に接続中..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2113,52 +2131,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (%4 から)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "接続に失敗しました:%1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "クライアント"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2166,7 +2184,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2214,8 +2232,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2230,7 +2248,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2243,7 +2261,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2276,7 +2294,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2285,13 +2303,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2299,26 +2317,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2796,7 +2814,7 @@ msgid "highlight rule"
 msgstr "強調の規則"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "個人情報名を変更"
@@ -2832,55 +2850,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "個人情報"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "個人情報を削除してもよろしいですか?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "本当に\" %1 \"のチャットリストを削除しますか?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3910,379 +3928,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "コアに接続(&C)..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "コアに切断(&D)..."
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "コア情報(&I)..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "ネットワークを設定(&N)..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "閉じる(&Q)"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "チャットリストを設定(&C)..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "検索バーを表示(&S)"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "メニューバーを表示(&M)"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "ステータスバーを表示(&B)"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "ネットワークを設定(&N)..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Quassel を設定(&C)..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "Quassel について(&A)"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Qt について(&Q)"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "新しいメッセージ"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "デバグログ(&L)"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "デバグログ(&L)"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "スタイルシートを再読み込む"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "通知"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "チャットリストを削除してもよろしいですか?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "ファイル(&F)"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "ネットワーク(&N)"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "表示(&V)"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "チャットリスト(&C)"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "ツールバー(&T)"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "設定(&S)"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "ヘルプ(&H)"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "デバグ"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "ニック"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "ニックリストを表示"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "チャットモニター"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "チャットモニタを表示"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "オンライン:"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "無視リストを表示"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "トピック"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "ニックリストを表示"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "メインツールバー"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "コアに接続"
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "コアから切断しました。"
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "安全な接続を使う"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4290,33 +4325,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "クエリを表示"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "接続の設定"
@@ -4793,7 +4828,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "ニックネームを追加"
@@ -4808,7 +4843,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "通知"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "オーディオファイルを選択"
@@ -5416,6 +5451,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "フォーム"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr "秒"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 5eaac9f..9c8b388 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Korean (http://www.transifex.com/projects/p/quassel/language/ko/)\n"
 "MIME-Version: 1.0\n"
@@ -70,7 +70,7 @@ msgstr "<b>버전:</b> %1<br><b>프로토콜 버전:</b> %2<br><b>제작:</b> %3
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -95,7 +95,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "저희는 도움을 주신 기여자분들 (가나다순) 께 감사드리며 미처 언급하지 못했던 모든 분께도 감사를 표합니다:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -808,7 +808,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "설정..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "선택된 항목 복사"
@@ -1020,13 +1020,69 @@ msgstr "채팅 창"
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:41
 msgctxt "ChatViewSettingsPage|"
 msgid "You need at least version 0.6 of quasselcore to use this feature"
-msgstr "이 기능을 사용하려면 0.6 Quassel 코어가 필요합니다"
+msgstr ""
 
 #: ../src/client/client.cpp:318
 msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "이 클라이언트의 인증은 이미 되어 있습니다!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "암호화되지 않은 연결 취소"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "%1 연결 중..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "코어에 동기화하는 중..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "%1 연결됨"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "로그인 하는 중..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "로그인 취소"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1342,12 +1398,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "기존 규칙"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "어떠한 스토리지 백엔드(backend)도 초기화할 수 없습니다! 나가는 중..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1355,147 +1411,93 @@ msgid ""
 "to work."
 msgstr "현재, Quassel은 SQLite 3와 PostgreSQL를 지원합니다.\nQuassel 코어의 작동을 위해 SQLite 혹은 Postgres 플러그인을 \n활성화한 Qt 라이브러리를 빌드해야 합니다."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "활성화된 세션이 이미 존재하더라도 restoreState()를 호출합니다."
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "관리자의 계정명 혹은 비밀번호가 설정되지 않았습니다."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "스토리지를 설정할 수 없습니다!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "관리자 계정 생성 중..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "잘못된 주소를 들었습니다 %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "IPv6로부터 듣는 GUI 클라이언트 %1 포트 %2 사용 중인 프로토콜 버전 %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "IPv6 인터페이스를 열지 못했습니다 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "IPv4로부터 듣는 GUI 클라이언트 %1 포트 %2 사용 중인 프로토콜 버전 %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "IPv4 인터페이스를 열지 못했습니다 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "잘못된 주소를 들었습니다 %1, 알려지지 않는 네트워크 프로토콜입니다"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "들을 수 있는 어떠한 네트워크 인터페이스도 열지 못했습니다!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "다음의 클라이언트로부터 접속되었습니다"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "기본 설정을 위해 서버를 종료합니다."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "오래된 클라이언트가 연결하려고 시도 중입니다... 거부 중."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Quassel 클라이언트가 너무 오래되었습니다!</b><br>이 코어는 클라이언트/코어의 프로토콜 버전이 최소 %1 이 되어야 합니다.<br>클라이언트를 업그레이드하는 것을 고려해주세요."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "클라이언트"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "너무 오래됨, 거부 중."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel 코어 버전 %1</b><br>빌드: %2<br>업 %3d%4h%5m (연도 %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "클라이언트의 TLS 시작:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>클라이언트가 초기화되지 않았습니다!</b><br>로그인을 시도하기 전에 초기화 메시지를 보내야 합니다."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "로그인하기 전에 초기화 메시지를 보내지 않았습니다, 거부 중."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>잘못된 계정명이나 비밀번호입니다!</b><br>제공한 계정명/비밀번호 조합은 데이터베이스에서 찾을 수 없습니다."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "\"%1\" (계정명: %2)로 초기화 및 인증에 성공하였습니다."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "비인증 클라이언트의 연결이 끊어졌습니다."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "클라이언트의 세션을 초기화할 수 없습니다:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "클라이언트의 세션을 찾을 수 없습니다:"
@@ -1636,17 +1638,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "원격 코어"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "클라이언트"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "너무 오래됨, 거부 중."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "로그인하기 전에 초기화 메시지를 보내지 않았습니다, 거부 중."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>클라이언트가 초기화되지 않았습니다!</b><br>로그인을 시도하기 전에 초기화 메시지를 보내야 합니다."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>잘못된 계정명이나 비밀번호입니다!</b><br>제공한 계정명/비밀번호 조합은 데이터베이스에서 찾을 수 없습니다."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "코어 구성 마법사"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "코어가 성공적으로 구성되었습니다. 로그인하는 중..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1654,7 +1713,7 @@ msgid ""
 "over."
 msgstr "코어 구성 실패:<br><b>%1</b><br>다시 시작하려면 <em>다음을</em> 누르세요."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1703,46 +1762,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "이 마법사는 Quassel 코어의 설정 과정을 안내해 드립니다."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "관리자 계정 생성"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "첫째, 우리는 코어에 계정을 생성할 것입니다. 이 첫 번째 계정이 관리자 권한을 가지게 됩니다."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "소개"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "스토리지 백엔드 선택"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "백로그와 다른 데이터를 저장할 Quassel 코어 스토리지의 데이터베이스 백엔드를 선택해주세요."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "연결 속성"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "설정 저장"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1840,103 +1899,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "코어에 연결"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "네트워크가 다운됨"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "연결 끊김"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "%1 찾는 중..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "%1 연결 중..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "%1 연결됨"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "%1 연결을 끊는 중..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "연결하려는 Quassel 코어가 너무 오래되었습니다! 업그레이드를 고려해주세요."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "코어로부터 잘못된 데이터를 받음"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "코어로부터 연결이 끊어졌습니다."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "암호화되지 않은 연결 취소"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "코어에 동기화하는 중..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>연결하려는 Quassel 코어가 너무 오래되었습니다!</b><br>최소한 프로토콜 %1 버전의 코어/클라이언트로 접속해야 합니다."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "로그인 하는 중..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "로그인 취소"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "세션 상태 받기"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "%1에 동기화하는 중..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "네트워크 상태 받기"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (%4 년)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "연결 실패. 다음 서버로 순환"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "%1:%2 연결 중..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "연결 끊김. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "코어 종료"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "%1 (%2)에 연결할 수 없음"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "연결 실패: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "클라이언트"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "연결 끊김 (사용자 계정: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): %1 네트워크를 생성하던 중 잘못된 네트워크 계정을 받았습니다!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr "CTCP-%1 전송을 %2 에 요청"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr "[사용법] /delkey <대화명|채널> 대화명 혹은 채널의 암호화 키를 삭제하며 해당 채널 혹은 쿼리에 있다면 단지 명령어 /delkey 만으로도 가능합니다."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr "%1의 키가 삭제되었습니다."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr "오류: 암호화 키 설정은 Qt 암호화 아키텍처 (QCA) 라이브러리를 지원하도록 빌드된 Quassel을 필요로 합니다. 배급자에게 QCA를 지원하는 Quassel 패키지를 문의하거나, 혹은 QCA가 제공되는 Quassel을 다시 빌드하세요."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "%1로 쿼리 시작하는 중"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr "[사용법] /setkey <대화명|채널> <키> 대화명이나 채널에 대한 암호화 키를 설정합니다. 현재 채널 혹은 쿼리 버퍼에서 명령어 /setkey <키> 만 사용해도 키가 설정됩니다."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "%1의 키가 설정되었습니다."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[사용법] /showkey <대화명|채널> 대화명이나 채널에 대한 암호화 키를 보여주며 해당 채널 혹은 쿼리에 있다면 단지 명령어 /showkey 만으로도 가능합니다."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr "강조표시 규칙"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "신원 이름 바꾸기"
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "신원"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>다음 문제는 변경 사항이 적용되기 전에 수정해야 함:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>모든 신원은 신원 이름 설정이 필요함</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>모든 신원은 최소한 하나의 명확한 별명이 필요함</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>모든 신원에 대해 실제 이름을 명시해야 함</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>모든 신원에 대해 Ident를 명시해야 함</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "하나 이상의 신원이 올바르지 않음"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "신원을 삭제하시겠습니까?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "정말로 \"%1\" 신원을 삭제하시겠습니까?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel 코어 버전 %1</b><br>빌드: %2<br>업 %3d%4h%5m (연도 %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "일반"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "코어에 연결(&C)..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "코어에서 연결 해제(&D)"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "코어 정보(&I)"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "네트워크 구성(&N)..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "종료(&Q)"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "채팅 목록 구성(&C)..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "레이아웃 잠금(&L)"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "검색 바 보여주기(&S)"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "메뉴바 보이기(&M)"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "상태바 보여주기(&B)"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "전체 화면 모드(&F)"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "단축키 구성(&S)..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Quassel 구성(&C)..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "Quassel 정보(&A)"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Qt 정보(&Q)"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "네비게이션"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "빠른 접속 설정 #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "빠른 접속 설정 #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "빠른 접속 설정 #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "빠른 접속 설정 #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "빠른 접속 설정 #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "빠른 접속 설정 #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "빠른 접속 설정 #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "빠른 접속 설정 #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "빠른 접속 설정 #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "빠른 접속 설정 #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "빠른 접속 #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "빠른 접속 #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "빠른 접속 #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "빠른 접속 #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "빠른 접속 #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "빠른 접속 #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "빠른 접속 #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "빠른 접속 #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "빠른 접속 #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "빠른 접속 #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "채팅 모니터"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "계속"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4795,7 +4830,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "별명 추가"
@@ -4810,7 +4845,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5418,6 +5453,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "형태"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 457acf9..2b10aa1 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Lithuanian (http://www.transifex.com/projects/p/quassel/language/lt/)\n"
 "MIME-Version: 1.0\n"
@@ -67,7 +67,7 @@ msgstr "<b>Versija:</b> %1<br><b>Protokolo versija:</b> %2<br><b>Sukompiliuota:<
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -78,7 +78,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Modernus, platinamas IRC klientas</b><br><br>&copy;2005-2012 Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> serveryje <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC yra su dviguba licenzija pagal <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> ir <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Didžioji dalis ženkliukų yra &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> ir panaudotos pagal <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Prašome naudoti <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a>, kad pranešti apie klaidas."
+msgstr "<b>Modernus, platinamas IRC klientas</b><br><br>&copy;%1 Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> serveryje <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC yra su dviguba licenzija pagal <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> ir <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Didžioji dalis ženkliukų yra &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> ir panaudotos pagal <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Prašome naudoti <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a>, kad pranešti apie klaidas."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -92,7 +92,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Norime padėkoti šiems pagalbininkams (pagal alfabetą) ir visiems, kuriuos pamišome čia paminėti:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -805,7 +805,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfigūruoti..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopijuoti pažymėjimą"
@@ -1024,6 +1024,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Tapatybė kliente jau egzistuoja!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Nešifruotas ryšys atšauktas"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Jungiamasi prie %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Prisijungta prie %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Prisijungiama..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Prisijungimas atšauktas"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1339,12 +1395,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Egzistuojančios taisyklės"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1352,147 +1408,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Administratoriaus vardas ar slaptažodis nenustatyti."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Nepavyko nustatyti talpyklos!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Kuriamas admin naudotojas..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Netinkamas pasiklausymo adresas %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Netinkamas pasiklausymo adresas %1, nežinomas tinklo protokolas"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Nepavyksta atverti jokios tinklo sąsajos pasiklausymui!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Klientas prisijungė iš"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Klientas"
-
-#: ../src/core/core.cpp:564
 msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "per senas, atmetama."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Paleidžiamas TLS klientui:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "Inicijuota ir sėkmingai nustatyta tapatybė kaip „%1“ (NaudotojoId: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Nepavyko pradėti sesijos klientui:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Nepavyko rasti sesijos klientui:"
@@ -1633,17 +1635,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Nutolę branduoliai"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Klientas"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "per senas, atmetama."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Branduolio konfigūravimo vedlys"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Branduolys buvo sėkmingai sukonfigūruotas. Prijungiu Jus..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1651,7 +1710,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1700,46 +1759,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Kurti admin naudotoją"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Įvadas"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Pasirinkti talpyklos programinę sąsają"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Prašome pasirinkti duomenų bazės sąsają, kurioje Quassel branduolio talpyklai saugoti istorinius įrašus ir kitus duomenis."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Ryšio savybės"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Saugomi Jūsų nustatymai"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1837,103 +1896,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Prisijungti prie branduolio"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Tinklas išjungtas"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Atsijungta"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Ieškoma %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Jungiamasi prie %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Prisijungta prie %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Atsijungiama nuo „%1...“"
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Neteisingi duomenys gauti iš branduolio"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Atsijungta nuo branduolio."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Nešifruotas ryšys atšauktas"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Prisijungiama..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Prisijungimas atšauktas"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Gaunama sesijos būsena"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Sinchronizuojama su %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Gaunamos tinklo būklės"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (nuo %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Jungiamasi prie %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Atsijungiama. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Branduolio išjungimas"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Ryšio problema: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Klientas"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr "%1 raktas buvo ištrintas."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Paleidžiama užklausa su %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr "paryškinimo taisyklė"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Pervadinti tapatybę"
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Tapatybės"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Pašalinti tapatybę?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Priskirti iš naujo"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Bendri"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Prisijungti prie branduolio..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Konfigūruoti &tinklus..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Baigti"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Konfigūruoti pokalbių sąrašą..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Užrakinti išdėstymą"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Rodyti paieškos juostą"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Rodyti pasitraukimo žurnalą"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Rodyti &meniu juostą"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Rodyti &būsenos juostą"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Viso &ekrano veiksena"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Konfigūruoti &sparčiuosius klavišus..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Konfigūruoti Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Apie Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Apie &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Įkelti iš naujo stiliaus aprašą"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Slėpti dabartinį buferį"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Žvalgymas"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Šokti į karštą pokalbį"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktyvuoti kitą pokalbių sąrašą"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Aktyvuoti ankstesnį pokalbių sąrašą"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Eiti į kitą pokalbį"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Eiti į ankstesnį pokalbį"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Failas"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Tinklai"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Rodymas"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Pokalbių sąrašai"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Priemonių juostos"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Nustatymai"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Pagalba"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Derinti"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Slapyvardžiai"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Rodyti slapyvardžių sąrašą"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Pokalbio monitorius"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Rodyti pokalbio monitorių"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Įvesties eilutė"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Rodyti įvesties eilutę"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tema"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Rodyti temos eilutę"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Pagrindinė įrankinė"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Prisijungta prie branduolio."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Nepatikimas saugos liudijimas"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>SSL liudijimas pateiktas branduolio %1 yra nepatikimas dėl šių priežasčių:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Tęsti"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Rodyti liudijimą"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Ar Jūs norėtumėte priimti šį liudijimą visam laikui neklausiant kiekvieną kartą?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Tik dabartinė sesija"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Visada"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4800,7 +4835,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Tinkamas slapyvardis gali turėti lotyniškas raides, skaičius ir specialiuosius simbolius {, }, [, ], \\, |, `, ^, _ ir -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Pridėti slapyvardį"
@@ -4815,7 +4850,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Pranešimai"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5423,6 +5458,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Forma"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 63a3270..2a17ac9 100644 (file)
--- a/po/mr.po
+++ b/po/mr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:08+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Marathi (http://www.transifex.com/projects/p/quassel/language/mr/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4797,7 +4832,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4812,7 +4847,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5420,6 +5455,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 62f8804..52bdd80 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/quassel/language/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -72,7 +72,7 @@ msgstr "<b>Versjon<b> %1<br><b>Protokoll versjon:</b> %2<br>Bygget:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -83,7 +83,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>En moderne, distribuert IRC-klient</b><br><br>&copy;2005-2010 Quassel-projektet<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> på <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC er dobbelt-lisensiert under<a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> og <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De fleste ikonene er &copy; av <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> og brukes under <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Bruk <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> for å rapportere feil."
+msgstr "<b>En moderne, distribuert IRC-klient</b><br><br>&copy;%1 Quassel-projektet<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> på <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC er dobbelt-lisensiert under<a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> og <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De fleste ikonene er &copy; av <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> og brukes under <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Bruk <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> for å rapportere feil."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -97,7 +97,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Vi vil takke følgende bidragsytere (i alfabetisk rekkefølge) og alle vi glemte å nevne her:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -810,7 +810,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfigurér..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopier valgt tekst"
@@ -1022,13 +1022,69 @@ msgstr "Samtalevisning"
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:41
 msgctxt "ChatViewSettingsPage|"
 msgid "You need at least version 0.6 of quasselcore to use this feature"
-msgstr "Du trenger versjon 0.6 av Quassel-kjernen for å benytte denne funksjonen"
+msgstr ""
 
 #: ../src/client/client.cpp:318
 msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identiteten finnes allerede i klienten!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Ukryptert tilkobling avbrutt"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Kobler til %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synkroniserer med kjernen..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Koblet til %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Logger inn..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Innlogging avbrutt"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1344,12 +1400,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Eksisterende regler"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Kunne ikke initialisere lagringsstøtte! Avslutter..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1357,147 +1413,93 @@ msgid ""
 "to work."
 msgstr "Quassel støtter SQLite3 og PostgreSQL. Du må ha Qt med støtte\nfor sqlite og/eller postgresql tilgjengelig for at Quassel-kjernen skal\nfungere."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Kaller restoreState() selv om aktive sesjoner finnes!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Administratorbrukernavn eller -passord er ikke satt."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Kunne ikke sette opp lagring!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Oppretter administrasjonsbruker..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Ugyldig lytteadresse %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Lytter for GUI-klienter på IPv6-adresse %1 og port %2 med protokollversjon %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Kunne ikke åpne IPv6-grensesnittet %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Lytter etter klienter på IPv4 %1 port %2 med protokollversjon %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Kunne ikke åpne IPv4-grensesnittet %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Ugyldig lytteadresse %1, ukjent nettverksprotokoll"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Kunne ikke velge noen nettverksgrensesnitt for lytting!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Klient koblet til fra"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Lukker tjener for grunnleggende oppsett."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Utdatert klient prøver å koble til, nekter tilgang."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Quasselklienten din er for gammel!</b><br>Denne kjernen trenger minst klient/kjerne-protokollversjon %1.<br> Vennligst oppgradér klienten din."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Klient"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "for gammel, avviser."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quasselkjerneversjon %1</b><br>Bygget: %2<br>Oppetid %3d%4h%5m (siden %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Starter TLS for klient:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Klienten er ikke initialisert!</b><br>Du må sende en init-beskjed før du prøver å logge inn."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "Avviser klienten siden den ikke sendte noen init-beskjed før den prøvde å logge på."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Ugyldig brukernavn eller passord!</b><br>Brukernavn/passord-kombinasjonen ble ikke funnet i databasen."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "initiert og autentisert som \"%1\" (BrukerID: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Uautorisert klient koblet fra."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Kunne ikke initiere sesjon for klient:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Kan ikke finne en sesjon for klient:"
@@ -1638,17 +1640,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Eksterne kjerner"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Klient"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "for gammel, avviser."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "Avviser klienten siden den ikke sendte noen init-beskjed før den prøvde å logge på."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Klienten er ikke initialisert!</b><br>Du må sende en init-beskjed før du prøver å logge inn."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Ugyldig brukernavn eller passord!</b><br>Brukernavn/passord-kombinasjonen ble ikke funnet i databasen."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Kjernekonfigurasjon"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Kjernen har blitt satt opp. Logger inn..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1656,7 +1715,7 @@ msgid ""
 "over."
 msgstr "Kjernekonfigurasjon feilet:<br><b>%1</b><br>Trykk <em>Neste</em> for å starte på nytt."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1705,46 +1764,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Denne veiviseren vil hjelpe deg å konfigurere Quassel-kjernen din."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Opprett administrasjonsbruker"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Først lager vi en bruker på Quassel-kjernen. Denne første brukeren vil ha administrasjonsrettigheter."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduksjon"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Velg lagringsmotor"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Vennligst velg en databasemotor som Quassel-kjernen skal bruke for å lagre samtalehistorikk og andre data i."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Tilkoblingsinnstillinger"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Lagrer innstillinger"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1842,103 +1901,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Koble til Quassel-kjerne"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Nettverkstilkoblingen er utilgjengelig"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Frakoblet"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Slår opp %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Kobler til %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Koblet til %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Kobler fra %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Quassel-kjernen du forsøker å koble til er for gammel! Vennligst vurder å oppgradere."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Mottok ugyldige data fra Quassel-kjernen."
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Koblet fra Quassel-kjernen."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Ukryptert tilkobling avbrutt"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synkroniserer med kjernen..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Quasselkjernen du forsøker å koble til er for gammel!</b><br>Trenger minst kjerne-/klientprotokoll v%1 for å koble til."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Logger inn..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Innlogging avbrutt"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Mottar sesjonstilstand"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synkroniserer med %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Mottar nettverkstilstander"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2118,52 +2136,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (siden %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Greide ikke å koble til. Prøver neste tjener"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Kobler til %1:%2:..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Kobler fra (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Kjerne avslutting"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Kunne ikke koble til %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Tilkoblingsfeil: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Klient"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "Frakoblet (BrukerID: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2171,7 +2189,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Fikk ugyldig nettverksID fra kjernen under forsøket på å opprette nettverket %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2219,8 +2237,8 @@ msgstr "sender CTCP-%1-forespørsel til %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2235,7 +2253,7 @@ msgid ""
 msgstr "[bruk] /delkey <kallenavn|kanal> sletter krypteringsnøkkelen for kallenavnet, eller kanalen, eller bare /delkey i en kanal, eller spørring."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2248,7 +2266,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Nøkkelen for %1 har blitt slettet."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2281,7 +2299,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Startet nøkkeltutveksling med %1."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2290,13 +2308,13 @@ msgid ""
 "with QCA present."
 msgstr "Feil: Påføring av krypteringsnøkkel krever at Quassel er blitt bygget med støtte for Qt Cryptographic Architecture (QCA2) biblioteket. Kontakt din distributør angående en Quassel pakke med støtte for QCA2, eller bygg Quassel på nytt med QCA2 støtte."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Åpner samtale med %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2304,26 +2322,26 @@ msgid ""
 "it."
 msgstr "[bruk] /setkey <kallenavn|kanal> <nøkkel> setter krypteringsnøkkelen for kallenavn, eller kanal. /setkey <nøkkel> når du er i en kanal, eller spørringsbuffer, setter da nøkkelen for den."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Nøkkelen for %1 har blitt satt."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[bruk] /delkey <kallenavn|kanal> sletter krypteringsnøkkelen for kallenavnet, eller kanalen, eller bare /delkey i en kanal, eller spørring."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2801,7 +2819,7 @@ msgid "highlight rule"
 msgstr "Uthev regel"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Omdøp Identitet"
@@ -2837,55 +2855,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identiteter"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Følgende problemer må fikses før endringene dine blir lagret:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Alle identiteter trenger et identitetsnavnesett</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Hver identitet trenger minst ett kallenavn definert</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Du må spesifiere et ekte navn for hver identitet</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Du må spesifisere én ident for hver identitet</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "En, eller flere identiteter er ugyldig"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Slette identitet?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Vil du virkelig slette identiteten \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3916,379 +3934,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Tilordne på nytt"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quasselkjerneversjon %1</b><br>Bygget: %2<br>Oppetid %3d%4h%5m (siden %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Generelt"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Koble til kjerne..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "K&oble fra kjernen"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Kjerne&info"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Rediger &Nettverk..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Avslutt"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Konfigurer Samtalelistene..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Lås oppsett"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Vis &Søkelinje"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Vis Borte-loggen"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Vis &Menylinje"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Vis &Statuslinje"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "Fu&llskjerm"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Konfigurer &Snarveier..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Konfi&gurere Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Om Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "About &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debug &NettverksModell"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Feilsøk &Buffer visningsoverlegget"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debug &Beskjedmodell"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Feilsøk &Hotlisten"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debug &Logg"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Gjeninnles stilsettet (CSS)"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Skjul vist samtale"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigering"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Hopp til aktiv snakking"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Angi Hurtig Aksess #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Angi Hurtig Aksess #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Angi Hurtig Aksess #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Angi Hurtig Aksess #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Angi Hurtig Aksess #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Angi Hurtig Aksess #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Angi Hurtig Aksess #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Angi Hurtig Aksess #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Angi Hurtig Aksess #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Angi Hurtig Aksess #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Hurtig Aksess #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Hurtig Aksess #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Hurtig Aksess #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Hurtig Aksess #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Hurtig Aksess #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Hurtig Aksess #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Hurtig Aksess #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Hurtig Aksess #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Hurtig Aksess #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Hurtig Aksess #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktiver neste samtaleliste"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Aktiver forrige samtaleliste"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Gå til neste samtale"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Gå til forrige samtale"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fil"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Nettverk"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Vis"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Samtalelister"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Verktøylinjer"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Innstillinger"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Hjelp"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Feilsøk"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Kallenavn"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Vis &kallenavnliste"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Samtaleovervåker"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Vis &Samtaleovervåker"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Skrivelinje"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Vis &Innskrivningslinjen"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Emne"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Vis &Emnelinjen"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Hovedverktøylinje"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Koblet til kjernen."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Ikke koblet til kjernen."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Ukryptert forbindelse"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Klienten din støtter ikke SSL kryptering</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Sensitive data, som passord, vil bli overført ukryptert til din Quassel Kjerne."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Kjernen din støtter ikke SSL kryptering</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Ikke tillitsverdig sikkerhetssertifikat"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4296,33 +4331,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>SSL sertifikatet gitt av Kjernen %1 er ikke tillitsverdig av følgende grunner:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Fortsett"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Vis sertifikatet"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Vil du akseptere dette sertifikatet for alltid og aldri bli spurt igjen?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Kun for nåværende sesjon"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "For alltid"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Kjerne tilkoblingsfeil"
@@ -4801,7 +4836,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Et gyldig kallenavn kan inneholde bokstaver fra det engelske alfabetet, tall, og spesialtegnene {, }, [, ], \\, |, `, ^, _ og -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Legg til Kallenavn"
@@ -4816,7 +4851,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Informative beskjeder"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Velg Lydfil"
@@ -5424,6 +5459,42 @@ msgid ""
 "network"
 msgstr "En liste over IRC kanaler du ønsker å koble til automatisk etter oppkobling til nettverket"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Skjema"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index e101d0e..1bb86de 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -3,13 +3,13 @@
 # Daniel Albers <daniel@lbe.rs>, 2012
 # Daniel Albers <daniel@lbers.com>, 2011
 # redmar <redmar@ubuntu-nl.org>, 2010
-# simonphilips <simon.philips@gmail.com>, 2012
-# simonphilips <simon.philips@gmail.com>, 2012
+# Simon Philips <simon.philips@gmail.com>, 2012
+# Simon Philips <simon.philips@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Dutch (http://www.transifex.com/projects/p/quassel/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -71,7 +71,7 @@ msgstr "<b>Versie:</b> %1<br><b>Protocol versie:</b> %2<br><b>Built:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -82,7 +82,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Een moderne, gedistribueerde IRC-client</b><br><br>&copy;2005-2012 het Quassel project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> op <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel-IRC valt onder twee licenties: <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> en <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De meeste pictogrammen zijn &copy; van het <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> en vallen onder de <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Gebruik <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> om bugs te melden."
+msgstr "<b>Een moderne, gedistribueerde IRC-client</b><br><br>&copy;%1 het Quassel project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> op <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel-IRC valt onder twee licenties: <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> en <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De meeste pictogrammen zijn &copy; van het <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> en vallen onder de <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Gebruik <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> om bugs te melden."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -96,7 +96,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "We willen de volgende personen (in alfabetische volgorde) bedanken die een steentje bijgedragen hebben, naast iedereen die we hier vergeten zijn:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -809,7 +809,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Instellen…"
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Selectie kopiëren"
@@ -1028,6 +1028,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identiteit bestaat al in client!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Onversleutelde verbinding afgebroken"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Met %1 verbinden…"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Met de core synchroniseren…"
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Verbonden met %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Aanmelden…"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Aanmelden afgebroken"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1343,12 +1399,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Bestaande regels"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Kon geen opslag-backend starten! Afsluiten..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1356,147 +1412,93 @@ msgid ""
 "to work."
 msgstr "Quassel ondersteunt momenteel SQLite3 en PostgreSQL. U moet uw\nQt-bibliotheek met de sqlite of postgres plug-in bouwen, anders zal quasselcore\nniet werken."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "restoreState() wordt aangeroepen, hoewel een sessie actief is!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Beheerderaccount of wachtwoord niet ingesteld."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Kan opslag niet starten!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Beheerderaccount instellen..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Ongeldig luisteradres %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Op IPv6 %1 poort %2 naar GUI-clients luisteren met protocol versie %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Kan IPv6-interface niet openen %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Op IPv4 %1 poort %2 naar GUI-clients luisteren met protocol versie %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Kan IPv4-interface niet openen %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Ongeldig luisteradres %1, onbekend netwerkprotocol"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Kan geen enkele netwerkinterface openen om bij te luisteren!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client verbindt vanaf"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Server afsluiten voor standaard set-up."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Verouderde client probeert te verbinden... weiger."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Uw Quassel client is te oud!</b><br>Deze core heeft minstens client/core protocol versie %1 nodig.<br>Upgrade uw client."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "te oud, weigeren."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel-core versie %1</b><br>Built: %2<br>Op %3d%4h%5m (sinds %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "TLS voor client starten:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Client niet geïnitialiseerd!</b><br>U moet een init-bericht sturen voordat u probeert in te loggen."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "verstuurde geen init-bericht voordat er werd aangemeld, weigeren."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Ongeldige gebruikersnaam of wachtwoord!</b><br>De gebruikersnaam/wachtwoord-combinatie die u opgaf kan niet in de database gevonden worden."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "initialisatie en authenticatie succesvol als \"%1\"(Userid: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Verbinding zonder authenticatie verbroken."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Kan geen sessie voor client initialiseren:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Kan geen sessie voor client vinden:"
@@ -1637,17 +1639,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Remote-cores"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "te oud, weigeren."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "verstuurde geen init-bericht voordat er werd aangemeld, weigeren."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Client niet geïnitialiseerd!</b><br>U moet een init-bericht sturen voordat u probeert in te loggen."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Ongeldige gebruikersnaam of wachtwoord!</b><br>De gebruikersnaam/wachtwoord-combinatie die u opgaf kan niet in de database gevonden worden."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Core-configuratie"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Uw core is succesvol geconfigureerd. Bezig me aanmelden…"
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1655,7 +1714,7 @@ msgid ""
 "over."
 msgstr "Core-configuratie mislukt:<br><b>%1</b><br>Druk op <em>Volgende</em> om opnieuw te beginnen."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1704,46 +1763,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Deze wizard helpt u bij het opzetten van uw Quassel-core."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Beheerder aanmaken"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Eerst zullen we een gebruiker op de core aanmaken. Deze eerste gebruiker zal beheerdersrechten hebben."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introductie"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Selecteer opslag-backend"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Selecteer een database-backend voor de Quassel-core opslag om het backlog en andere data in op te slaan."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Eigenschappen verbinding"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Uw instellingen opslaan"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1841,103 +1900,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Met core verbinden"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Netwerk is niet actief"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Verbinding verbroken"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "%1 opzoeken…"
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Met %1 verbinden…"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Verbonden met %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Verbinding met %1 verbreken…"
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "De Quassel-core waarmee u wilt verbinden is te oud! Probeer een nieuwere versie te installeren."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Ongeldige data van de core ontvangen"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Verbinding met de core verbroken."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Onversleutelde verbinding afgebroken"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Met de core synchroniseren…"
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>De Quassel-core waarmee u wilt verbinden is te oud!</b><br>Core/client protocol v%1 of hoger is vereist om te verbinden."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Aanmelden…"
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Aanmelden afgebroken"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Sessiestatus ontvangen"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Met %1 synchroniseren…"
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Netwerkstatus ontvangen"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2117,52 +2135,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (sinds %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Verbinden mislukt. Volgende server proberen"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Met %1:%2 verbinden…"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Verbinding verbreken. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Core uitschakelen"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Kan niet met %1 (%2) verbinden"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Verbinden mislukt: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "verbinding verbroken (Userid: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2170,7 +2188,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Got invalid networkId from Core when trying to create network %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2218,8 +2236,8 @@ msgstr "CTCP-%1 request naar %2 versturen"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2234,7 +2252,7 @@ msgid ""
 msgstr "[gebruik] /delkey <bijnaam|kanaal> verwijdert de encryptiesleutel voor bijnaam of kanaal, gebruik /delkey wanneer het in een kanaal of query wordt gebruikt."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2247,7 +2265,7 @@ msgid "The key for %1 has been deleted."
 msgstr "De sleutel voor %1 is verwijderd."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2280,7 +2298,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2289,13 +2307,13 @@ msgid ""
 "with QCA present."
 msgstr "Fout: Om een encryptiesleutel in te kunnen stellen moet Quassel Qt Cryptographic Architecture (QCA) ondersteunen. Neem contact op met uw distributeur voor een Quassel pakket met QCA ondersteuning, of compileer Quassel met QCA."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Query starten met %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2303,26 +2321,26 @@ msgid ""
 "it."
 msgstr "[gebruik] /setkey <bijnaam|kanaal> <key> stelt de encryptiesleutel in voor bijnaam of kanaal. /setkey <key> wanneer in een kanaal of query buffer stelt de sleutel in"
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "De sleutel voor %1 is nu ingesteld."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[gebruik] /delkey <bijnaam|kanaal> verwijdert de encryptiesleutel voor bijnaam of kanaal, gebruik /delkey wanneer het in een kanaal of query wordt gebruikt."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2800,7 +2818,7 @@ msgid "highlight rule"
 msgstr "markeringsregel"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Identiteit hernoemen"
@@ -2836,55 +2854,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identiteiten"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>De volgende problemen moeten opgelost worden voordat uw wijzigingen toegepast kunnen worden:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>U moet voor alle identiteiten een naam instellen</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Voor elke identiteit moet minstens één bijnaam ingesteld zijn</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>U moet voor elke identiteit een echte naam opgeven</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>U moet voor elke identiteit een ident opgeven</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Een of meer identiteiten zijn niet geldig"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Identiteit verwijderen?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Wilt u identiteit ‘%1’ echt verwijderen?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Opnieuw toewijzen"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel-core versie %1</b><br>Built: %2<br>Op %3d%4h%5m (sinds %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Algemeen"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Met &core verbinden…"
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "Verbinding met core &verbreken"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Informatie over core…"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "&Netwerken configureren…"
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Afsluiten"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "Chatlijsten configureren…"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "Inde&ling vastzetten"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "&Zoekbalk weergeven"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Afwezigheidslog weergeven"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "&Menubalk weergeven"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Status&balk weergeven"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Schermvullend"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "&Sneltoetsen instellen…"
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Quassel configureren…"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Over Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Over &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Debug &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Debug &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Debug &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Debug &HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Debug &log"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Stijlblad herladen"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Huidige buffer verbergen"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigatie"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Open het kanaal met oudste ongelezen bericht"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Stel snel-wisselen #0 in"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Stel snel-wisselen #1 in"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Stel snel-wisselen #2 in"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Stel snel-wisselen #3 in"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Stel snel-wisselen #4 in"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Stel snel-wisselen #5 in"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Stel snel-wisselen #6 in"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Stel snel-wisselen #7 in"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Stel snel-wisselen #8 in"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Stel snel-wisselen #9 in"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Snel-wisselen #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Snel-wisselen #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Snel-wisselen #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Snel-wisselen #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Snel-wisselen #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Snel-wisselen #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Snel-wisselen #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Snel-wisselen #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Snel-wisselen #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Snel-wisselen #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activeer volgende chatlijst"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activeer vorige chatlijst"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Ga naar de volgende chatlijst"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Ga naar de vorige chatlijst"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Bestand"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Netwerken"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Weergave"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Chatlijsten"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Werkbalken"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Instellingen"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Hulp"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Debug"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Nicks"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Nicklijst weergeven"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Chatmonitor"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Chatmonitor weergeven"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Invoerregel"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Invoerregel weergeven"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Onderwerp"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Onderwerpregel weergeven"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Hoofdwerkbalk"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Met core verbonden."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Niet met core verbonden."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Onversleutelde verbinding"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>U client ondersteunt geen SSL-versleuteling</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Gevoelige gegevens, zoals wachtwoorden, zullen onversleuteld naar uw Quassel-core verzonden worden."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Uw core ondersteunt geen SSL-versleuteling</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Onbetrouwbaar beveiligingscertificaat"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Het door de core op %1 opgegeven beveiligingscertificaat is om de volgende redenen onbetrouwbaar:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Doorgaan"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Certificaat weergeven"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Wilt u dit certificaat permanent accepteren, zonder hierom gevraagd te worden?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Alleen deze sessie"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Permanent"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Core-verbinding fout"
@@ -4800,7 +4835,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Een geldige bijnaam mag letters uit het alfabet bevatten, cijfers en de volgende speciale tekens: {, }, [, ], \\, |, `, ^, _ en -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Bijnaam toevoegen"
@@ -4815,7 +4850,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificaties"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Audiobestand selecteren"
@@ -5423,6 +5458,42 @@ msgid ""
 "network"
 msgstr "Een lijst van IRC-kanalen die u automatisch zult binnengaan wanneer u met het netwerk verbindt"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulier"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index fd72a5f..6553378 100644 (file)
--- a/po/oc.po
+++ b/po/oc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/quassel/language/oc/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Version:</b> %1<br><b>Version del protocòl:</b> %2<br><b>Compilacion
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurar..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiar la Seleccion"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Utilizar una connexion securizada"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Connexion a %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Connectat a %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Connexion en cors…"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Règlas existentas"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Format de nom invalid : %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client connectat per"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Impossible de trobar l'escript \"%1\""
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduccion"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Banca de donadas :"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Proprietats de la connexion"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Salvar vòstres paramètres"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Connectar a l'IRC"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Rets"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Desconnectat"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Recèrca de %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Connexion a %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Connectat a %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Connexion a %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Desconnectar de l'IRC"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Utilizar una connexion securizada"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Connexion en cors…"
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Connexion a %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (%4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Desconnècta. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Impossible de se connectar a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Fracàs de connexion : %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "desconnectat (IdUtilizaire : %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr "Susbrilhança"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Identitat per defaut"
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identitats"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Identitat per defaut"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "General"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Connexion a %1..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "Desconnectar de l'IRC"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configurar las &Rets..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Quitar"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurar las Vistas..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Blocar la disposicion"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Afichar la barra de &recèrca"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Istoric d'abséncia"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Afichar la barra de &menuts"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Afichar la Barra d'&Estat"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configurar las &Rets..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurar Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&A prepaus de Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "A prepaus de &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Messatge novèl"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Desbugatge"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Recargar los paramètres"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Organizacion :"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Anar al Hot Chat"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Suprimir la Vista ?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Dialogar"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Dialogar"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fichièr"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Rets"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "Aficha&tge"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Vistas"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Barra d'espleches"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Configuracion"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Ajuda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Desbugatge"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Escaisses"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Afichar lo selector d'escais"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de discussion"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Monitor de discussion"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Widget de picada"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Subjècte"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Afichar las icònas"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra d'espleches principala"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Connectat a %1"
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Connectat a %1"
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Utilizar una connexion securizada"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Utilizar un certificat SSL"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Contunhar"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Cargar un Certificat"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Indefinidament"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Proprietats de la connexion"
@@ -4798,7 +4833,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Escaisses"
@@ -4813,7 +4848,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificacions"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5421,6 +5456,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulari"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index b843caf..e91e1b6 100644 (file)
--- a/po/pa.po
+++ b/po/pa.po
@@ -1,11 +1,13 @@
 # 
 # Translators:
+# A S Alam <aalam@users.sf.net>, 2013
+# A S Alam <apreet.alam@gmail.com>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
-"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
+"PO-Revision-Date: 2014-02-02 02:50+0000\n"
+"Last-Translator: A S Alam <apreet.alam@gmail.com>\n"
 "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/quassel/language/pa/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,7 +19,7 @@ msgstr ""
 #: ../src/qtui/ui/aboutdlg.ui:17
 msgctxt "AboutDlg|"
 msgid "About Quassel"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਬਾਰੇ"
 
 #: ../src/qtui/ui/aboutdlg.ui:59
 msgctxt "AboutDlg|"
@@ -26,7 +28,7 @@ msgid ""
 "p, li { white-space: pre-wrap; }\n"
 "</style></head><body style=\" font-family:'DejaVu Sans'; font-size:15pt; font-weight:600; font-style:normal;\">\n"
 "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Quassel IRC</p></body></html>"
-msgstr ""
+msgstr "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\n</style></head><body style=\" font-family:'DejaVu Sans'; font-size:15pt; font-weight:600; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">ਕੁਅੱਸੇਲ IRC</p></body></html>"
 
 #: ../src/qtui/ui/aboutdlg.ui:75
 msgctxt "AboutDlg|"
@@ -40,22 +42,22 @@ msgstr ""
 #: ../src/qtui/ui/aboutdlg.ui:115
 msgctxt "AboutDlg|"
 msgid "&About"
-msgstr ""
+msgstr "ਇਸ ਬਾਰੇ(&A)"
 
 #: ../src/qtui/ui/aboutdlg.ui:135
 msgctxt "AboutDlg|"
 msgid "A&uthors"
-msgstr ""
+msgstr "ਲੇਖਕ(&u)"
 
 #: ../src/qtui/ui/aboutdlg.ui:155
 msgctxt "AboutDlg|"
 msgid "&Contributors"
-msgstr ""
+msgstr "ਯੋਗਦਾਨੀ(&C)"
 
 #: ../src/qtui/ui/aboutdlg.ui:175
 msgctxt "AboutDlg|"
 msgid "&Thanks To"
-msgstr ""
+msgstr "ਧੰਨਵਾਦ(&T)"
 
 #: ../src/qtui/aboutdlg.cpp:33
 #, qt-format
@@ -66,7 +68,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -91,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -118,7 +120,7 @@ msgstr ""
 #: ../src/core/abstractsqlstorage.cpp:129
 msgctxt "AbstractSqlStorage|"
 msgid "Upgrade failed..."
-msgstr ""
+msgstr "...ਅੱਪਗਰੇਡ ਫੇਲ੍ਹ ਹੈ"
 
 #: ../src/qtui/settingspages/aliasesmodel.cpp:57
 msgctxt "AliasesModel|"
@@ -146,7 +148,7 @@ msgstr ""
 #: ../src/qtui/settingspages/aliasesmodel.cpp:185
 msgctxt "AliasesModel|"
 msgid "Alias"
-msgstr ""
+msgstr "ਏਲੀਆਸ"
 
 #: ../src/qtui/settingspages/aliasesmodel.cpp:186
 msgctxt "AliasesModel|"
@@ -156,32 +158,32 @@ msgstr ""
 #: ../src/qtui/settingspages/aliasessettingspage.ui:13
 msgctxt "AliasesSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/aliasessettingspage.ui:27
 msgctxt "AliasesSettingsPage|"
 msgid "New"
-msgstr ""
+msgstr "ਨਵਾਂ"
 
 #: ../src/qtui/settingspages/aliasessettingspage.ui:41
 msgctxt "AliasesSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/aliasessettingspage.cpp:29
 msgctxt "AliasesSettingsPage|"
 msgid "IRC"
-msgstr ""
+msgstr "IRC"
 
 #: ../src/qtui/settingspages/aliasessettingspage.cpp:29
 msgctxt "AliasesSettingsPage|"
 msgid "Aliases"
-msgstr ""
+msgstr "ਏਲੀਆਸ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:14
 msgctxt "AppearanceSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:22
 msgctxt "AppearanceSettingsPage|"
@@ -196,7 +198,7 @@ msgstr ""
 #: ../src/qtui/settingspages/appearancesettingspage.ui:36
 msgctxt "AppearanceSettingsPage|"
 msgid "Language:"
-msgstr ""
+msgstr "ਭਾਸ਼ਾ:"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:43
 msgctxt "AppearanceSettingsPage|"
@@ -206,13 +208,13 @@ msgstr ""
 #: ../src/qtui/settingspages/appearancesettingspage.ui:47
 msgctxt "AppearanceSettingsPage|"
 msgid "<Untranslated>"
-msgstr ""
+msgstr "<Untranslated>"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:52
 #: ../src/qtui/settingspages/appearancesettingspage.cpp:76
 msgctxt "AppearanceSettingsPage|"
 msgid "<System Default>"
-msgstr ""
+msgstr "<System Default>"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:75
 msgctxt "AppearanceSettingsPage|"
@@ -222,27 +224,27 @@ msgstr ""
 #: ../src/qtui/settingspages/appearancesettingspage.ui:109
 msgctxt "AppearanceSettingsPage|"
 msgid "Path:"
-msgstr ""
+msgstr "ਮਾਰਗ:"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:141
 msgctxt "AppearanceSettingsPage|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:150
 msgctxt "AppearanceSettingsPage|"
 msgid "Show system tray icon"
-msgstr ""
+msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ ਵੇਖੋ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:184
 msgctxt "AppearanceSettingsPage|"
 msgid "Hide to tray on close button"
-msgstr ""
+msgstr "ਬੰਦ ਬਟਨ ਨਾਲ ਟਰੇ ਵਿਚ ਭੇਜੋ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:216
 msgctxt "AppearanceSettingsPage|"
 msgid "Enable animations"
-msgstr ""
+msgstr "ਐਨੀਮੇਸ਼ਨ ਚਾਲੂ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:231
 msgctxt "AppearanceSettingsPage|"
@@ -257,7 +259,7 @@ msgstr ""
 #: ../src/qtui/settingspages/appearancesettingspage.ui:280
 msgctxt "AppearanceSettingsPage|"
 msgid "Server Notices:"
-msgstr ""
+msgstr "ਸਰਵਰ ਨੋਟਿਸ:"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:294
 msgctxt "AppearanceSettingsPage|"
@@ -267,22 +269,22 @@ msgstr ""
 #: ../src/qtui/settingspages/appearancesettingspage.ui:301
 msgctxt "AppearanceSettingsPage|"
 msgid "Status Window"
-msgstr ""
+msgstr "ਹਾਲਤ ਵਿੰਡੋ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:308
 msgctxt "AppearanceSettingsPage|"
 msgid "Current Chat"
-msgstr ""
+msgstr "ਮੌਜੂਦਾ ਗੱਲਬਾਤ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.ui:315
 msgctxt "AppearanceSettingsPage|"
 msgid "Errors:"
-msgstr ""
+msgstr "ਗਲਤੀਆਂ:"
 
 #: ../src/qtui/settingspages/appearancesettingspage.cpp:35
 msgctxt "AppearanceSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/appearancesettingspage.cpp:242
 msgctxt "AppearanceSettingsPage|"
@@ -297,7 +299,7 @@ msgstr ""
 #: ../src/qtui/awaylogview.cpp:46
 msgctxt "AwayLogView|"
 msgid "Show Network Name"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ ਵੇਖਾਓ"
 
 #: ../src/qtui/awaylogview.cpp:51
 msgctxt "AwayLogView|"
@@ -307,7 +309,7 @@ msgstr ""
 #: ../src/qtui/settingspages/backlogsettingspage.ui:14
 msgctxt "BacklogSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/backlogsettingspage.ui:22
 msgctxt "BacklogSettingsPage|"
@@ -379,13 +381,13 @@ msgstr ""
 #: ../src/qtui/settingspages/backlogsettingspage.ui:347
 msgctxt "BacklogSettingsPage|"
 msgid "Limit:"
-msgstr ""
+msgstr "ਹੱਦ:"
 
 #: ../src/qtui/settingspages/backlogsettingspage.ui:235
 #: ../src/qtui/settingspages/backlogsettingspage.ui:357
 msgctxt "BacklogSettingsPage|"
 msgid "Unlimited"
-msgstr ""
+msgstr "ਬੇਅੰਤ"
 
 #: ../src/qtui/settingspages/backlogsettingspage.ui:260
 #: ../src/qtui/settingspages/backlogsettingspage.ui:270
@@ -422,7 +424,7 @@ msgstr ""
 #: ../src/qtui/settingspages/backlogsettingspage.cpp:27
 msgctxt "BacklogSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/backlogsettingspage.cpp:27
 msgctxt "BacklogSettingsPage|"
@@ -433,7 +435,7 @@ msgstr ""
 #, qt-format
 msgctxt "BufferItem|"
 msgid "<p> %1 - %2 </p>"
-msgstr ""
+msgstr "<p> %1 - %2 </p>"
 
 #: ../src/uisupport/bufferview.cpp:272
 msgctxt "BufferView|"
@@ -451,7 +453,7 @@ msgstr ""
 #: ../src/qtui/settingspages/buffervieweditdlg.ui:14
 msgctxt "BufferViewEditDlg|"
 msgid "Dialog"
-msgstr ""
+msgstr "ਡਾਈਲਾਗ"
 
 #: ../src/qtui/settingspages/buffervieweditdlg.ui:22
 msgctxt "BufferViewEditDlg|"
@@ -466,27 +468,27 @@ msgstr ""
 #: ../src/uisupport/bufferviewfilter.cpp:54
 msgctxt "BufferViewFilter|"
 msgid "Show / Hide Chats"
-msgstr ""
+msgstr "ਗੱਲਬਾਤ ਵੇਖਾਓ/ਓਹਲੇ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:14
 msgctxt "BufferViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:31
 msgctxt "BufferViewSettingsPage|"
 msgid "Re&name..."
-msgstr ""
+msgstr "...ਨਾਂ ਬਦਲੋ(&n)"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:48
 msgctxt "BufferViewSettingsPage|"
 msgid "&Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ(&A)"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:71
 msgctxt "BufferViewSettingsPage|"
 msgid "De&lete"
-msgstr ""
+msgstr "ਹਟਾਓ(&l)"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:84
 msgctxt "BufferViewSettingsPage|"
@@ -496,13 +498,13 @@ msgstr ""
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:92
 msgctxt "BufferViewSettingsPage|"
 msgid "Network:"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ:"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:100
 #: ../src/qtui/settingspages/bufferviewsettingspage.cpp:123
 msgctxt "BufferViewSettingsPage|"
 msgid "All"
-msgstr ""
+msgstr "ਸਭ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:110
 msgctxt "BufferViewSettingsPage|"
@@ -514,12 +516,12 @@ msgstr ""
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:114
 msgctxt "BufferViewSettingsPage|"
 msgid "Show status window"
-msgstr ""
+msgstr "ਹਾਲਤ ਵਿੰਡੋ ਵੇਖਾਓ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:121
 msgctxt "BufferViewSettingsPage|"
 msgid "Show channels"
-msgstr ""
+msgstr "ਚੈਨਲ ਵੇਖਾਓ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:128
 msgctxt "BufferViewSettingsPage|"
@@ -539,7 +541,7 @@ msgstr ""
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:149
 msgctxt "BufferViewSettingsPage|"
 msgid "Sort alphabetically"
-msgstr ""
+msgstr "ਵਰਣਮਾਲਾ ਨਾਲ ਲੜੀਬੱਧ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:156
 msgctxt "BufferViewSettingsPage|"
@@ -559,22 +561,22 @@ msgstr ""
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:174
 msgctxt "BufferViewSettingsPage|"
 msgid "New Message"
-msgstr ""
+msgstr "ਨਵਾਂ ਸੁਨੇਹਾ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:179
 msgctxt "BufferViewSettingsPage|"
 msgid "Highlight"
-msgstr ""
+msgstr "ਹਾਈਲਾਈਟ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:205
 msgctxt "BufferViewSettingsPage|"
 msgid "Preview:"
-msgstr ""
+msgstr "ਝਲਕ:"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.cpp:36
 msgctxt "BufferViewSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.cpp:36
 msgctxt "BufferViewSettingsPage|"
@@ -600,17 +602,17 @@ msgstr ""
 #: ../src/qtui/bufferwidget.cpp:78
 msgctxt "BufferWidget|"
 msgid "Zoom In"
-msgstr ""
+msgstr "ਜ਼ੂਮ ਇਨ"
 
 #: ../src/qtui/bufferwidget.cpp:84
 msgctxt "BufferWidget|"
 msgid "Zoom Out"
-msgstr ""
+msgstr "ਜ਼ੂਮ ਆਉਟ"
 
 #: ../src/qtui/bufferwidget.cpp:89
 msgctxt "BufferWidget|"
 msgid "Actual Size"
-msgstr ""
+msgstr "ਅਸਲੀ ਸਾਈਜ਼"
 
 #: ../src/qtui/bufferwidget.cpp:93
 msgctxt "BufferWidget|"
@@ -626,25 +628,25 @@ msgstr ""
 #, qt-format
 msgctxt "ChannelBufferItem|"
 msgid "<b>Channel %1</b>"
-msgstr ""
+msgstr "<b>ਚੈਨਲ %1</b>"
 
 #: ../src/client/networkmodel.cpp:569
 #, qt-format
 msgctxt "ChannelBufferItem|"
 msgid "<b>Users:</b> %1"
-msgstr ""
+msgstr "<b>ਯੂਜ਼ਰ:</b> %1"
 
 #: ../src/client/networkmodel.cpp:573
 #, qt-format
 msgctxt "ChannelBufferItem|"
 msgid "<b>Mode:</b> %1"
-msgstr ""
+msgstr "<b>ਮੋਡ:</b> %1"
 
 #: ../src/client/networkmodel.cpp:584
 #, qt-format
 msgctxt "ChannelBufferItem|"
 msgid "<b>Topic:</b> %1"
-msgstr ""
+msgstr "<b>ਵਿਸ਼ਾ:</b> %1"
 
 #: ../src/client/networkmodel.cpp:589
 msgctxt "ChannelBufferItem|"
@@ -655,12 +657,12 @@ msgstr ""
 #, qt-format
 msgctxt "ChannelBufferItem|"
 msgid "<p> %1 </p>"
-msgstr ""
+msgstr "<p> %1 </p>"
 
 #: ../src/qtui/ui/channellistdlg.ui:14
 msgctxt "ChannelListDlg|"
 msgid "Channel List"
-msgstr ""
+msgstr "ਚੈਨਲ ਲਿਸਟ"
 
 #: ../src/qtui/ui/channellistdlg.ui:38
 msgctxt "ChannelListDlg|"
@@ -682,12 +684,12 @@ msgstr ""
 #: ../src/qtui/ui/channellistdlg.ui:86
 msgctxt "ChannelListDlg|"
 msgid "Filter:"
-msgstr ""
+msgstr "ਫਿਲਟਰ:"
 
 #: ../src/qtui/ui/channellistdlg.ui:98
 msgctxt "ChannelListDlg|"
 msgid "Errors Occurred:"
-msgstr ""
+msgstr "ਗਲਤੀਆਂ ਆਈਆਂ:"
 
 #: ../src/qtui/ui/channellistdlg.ui:132
 msgctxt "ChannelListDlg|"
@@ -703,7 +705,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:14
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:22
 msgctxt "ChatMonitorSettingsPage|"
@@ -725,7 +727,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:61
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Available:"
-msgstr ""
+msgstr "ਉਪਲੱਬਧ:"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:88
 msgctxt "ChatMonitorSettingsPage|"
@@ -741,7 +743,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:258
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Show:"
-msgstr ""
+msgstr "ਵੇਖੋ:"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:147
 msgctxt "ChatMonitorSettingsPage|"
@@ -762,12 +764,12 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:35
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:35
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Chat Monitor"
-msgstr ""
+msgstr "ਗੱਲਬਾਤ ਨਿਗਰਾਨ"
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:59
 msgctxt "ChatMonitorSettingsPage|"
@@ -782,7 +784,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:261
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Ignore:"
-msgstr ""
+msgstr "ਅਣਡਿੱਠਾ:"
 
 #: ../src/qtui/chatmonitorview.cpp:54
 msgctxt "ChatMonitorView|"
@@ -792,7 +794,7 @@ msgstr ""
 #: ../src/qtui/chatmonitorview.cpp:61
 msgctxt "ChatMonitorView|"
 msgid "Show Network Name"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ ਵੇਖਾਓ"
 
 #: ../src/qtui/chatmonitorview.cpp:66
 msgctxt "ChatMonitorView|"
@@ -802,9 +804,9 @@ msgstr ""
 #: ../src/qtui/chatmonitorview.cpp:73
 msgctxt "ChatMonitorView|"
 msgid "Configure..."
-msgstr ""
+msgstr "...ਸੰਰਚਨਾ"
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -812,19 +814,19 @@ msgstr ""
 #: ../src/qtui/ui/chatviewsearchbar.ui:13
 msgctxt "ChatViewSearchBar|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/chatviewsearchbar.ui:19
 #: ../src/qtui/ui/chatviewsearchbar.ui:33
 #: ../src/qtui/ui/chatviewsearchbar.ui:44
 msgctxt "ChatViewSearchBar|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/ui/chatviewsearchbar.ui:55
 msgctxt "ChatViewSearchBar|"
 msgid "case sensitive"
-msgstr ""
+msgstr "ਆਕਾਰ ਪ੍ਰਤੀ ਸੰਵੇਦਨਸ਼ੀਲ"
 
 #: ../src/qtui/ui/chatviewsearchbar.ui:62
 msgctxt "ChatViewSearchBar|"
@@ -844,12 +846,12 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:14
 msgctxt "ChatViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:22
 msgctxt "ChatViewSettingsPage|"
 msgid "Timestamp format:"
-msgstr ""
+msgstr "ਸਮਾਂ-ਮੋਹਰ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:29
 msgctxt "ChatViewSettingsPage|"
@@ -867,7 +869,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:42
 msgctxt "ChatViewSettingsPage|"
 msgid "[hh:mm:ss]"
-msgstr ""
+msgstr "[hh:mm:ss]"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:69
 msgctxt "ChatViewSettingsPage|"
@@ -910,12 +912,12 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:159
 msgctxt "ChatViewSettingsPage|"
 msgid "Custom Colors"
-msgstr ""
+msgstr "ਪਸੰਦੀਦਾ ਰੰਗ"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:177
 msgctxt "ChatViewSettingsPage|"
 msgid "Action:"
-msgstr ""
+msgstr "ਕਾਰਵਾਈ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:184
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:208
@@ -946,52 +948,52 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:736
 msgctxt "ChatViewSettingsPage|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:201
 msgctxt "ChatViewSettingsPage|"
 msgid "Timestamp:"
-msgstr ""
+msgstr "ਸਮਾਂ-ਮੋਹਰ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:225
 msgctxt "ChatViewSettingsPage|"
 msgid "Channel message:"
-msgstr ""
+msgstr "ਚੈਨਲ ਸੁਨੇਹਾ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:262
 msgctxt "ChatViewSettingsPage|"
 msgid "Highlight foreground:"
-msgstr ""
+msgstr "ਫਾਰਗਰਾਊਂਡ ਹਾਈਲਾਇਟ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:286
 msgctxt "ChatViewSettingsPage|"
 msgid "Command message:"
-msgstr ""
+msgstr "ਕਮਾਂਡ ਸੁਨੇਹਾ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:310
 msgctxt "ChatViewSettingsPage|"
 msgid "Highlight background:"
-msgstr ""
+msgstr "ਹਾਈਲਾਇਟ ਬੈਕਗਰਾਊਂਡ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:317
 msgctxt "ChatViewSettingsPage|"
 msgid "Server message:"
-msgstr ""
+msgstr "ਸਰਵਰ ਸੁਨੇਹਾ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:341
 msgctxt "ChatViewSettingsPage|"
 msgid "Marker line:"
-msgstr ""
+msgstr "ਮਾਰਕਰ ਲਾਈਨਾਂ"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:365
 msgctxt "ChatViewSettingsPage|"
 msgid "Error message:"
-msgstr ""
+msgstr "ਗਲਤੀ ਸੁਨੇਹਾ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:389
 msgctxt "ChatViewSettingsPage|"
 msgid "Background:"
-msgstr ""
+msgstr "ਬੈਕਗਰਾਊਂਡ:"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:433
 msgctxt "ChatViewSettingsPage|"
@@ -1006,7 +1008,7 @@ msgstr ""
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
 msgctxt "ChatViewSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
 msgctxt "ChatViewSettingsPage|"
@@ -1015,7 +1017,7 @@ msgstr ""
 
 #: ../src/qtui/settingspages/chatviewsettingspage.cpp:41
 msgctxt "ChatViewSettingsPage|"
-msgid "You need at 0.6 quasselcore to use this feature"
+msgid "You need at least version 0.6 of quasselcore to use this feature"
 msgstr ""
 
 #: ../src/client/client.cpp:318
@@ -1023,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "...%1 ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "%1 ਨਾਲ ਕੁਨੈਕਟ ਹੈ"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1064,7 +1122,7 @@ msgstr ""
 #: ../src/qtui/settingspages/connectionsettingspage.ui:213
 msgctxt "ConnectionSettingsPage|"
 msgid " seconds"
-msgstr ""
+msgstr " ਸਕਿੰਟ"
 
 #: ../src/qtui/settingspages/connectionsettingspage.ui:80
 msgctxt "ConnectionSettingsPage|"
@@ -1091,7 +1149,7 @@ msgstr ""
 #: ../src/qtui/settingspages/connectionsettingspage.ui:148
 msgctxt "ConnectionSettingsPage|"
 msgid "Update interval:"
-msgstr ""
+msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ:"
 
 #: ../src/qtui/settingspages/connectionsettingspage.ui:177
 msgctxt "ConnectionSettingsPage|"
@@ -1101,7 +1159,7 @@ msgstr ""
 #: ../src/qtui/settingspages/connectionsettingspage.ui:184
 msgctxt "ConnectionSettingsPage|"
 msgid " users"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ"
 
 #: ../src/qtui/settingspages/connectionsettingspage.ui:206
 msgctxt "ConnectionSettingsPage|"
@@ -1116,32 +1174,32 @@ msgstr ""
 #: ../src/qtui/settingspages/connectionsettingspage.cpp:27
 msgctxt "ConnectionSettingsPage|"
 msgid "IRC"
-msgstr ""
+msgstr "IRC"
 
 #: ../src/qtui/chatitem.cpp:803
 msgctxt "ContentsChatItem|"
 msgid "Copy Link Address"
-msgstr ""
+msgstr "ਲਿੰਕ ਐਡਰੈੱਸ ਕਾਪੀ ਕਰੋ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:39
 msgctxt "ContextMenuActionProvider|"
 msgid "Connect"
-msgstr ""
+msgstr "ਕੁਨੈਕਟ ਕਰੋ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:40
 msgctxt "ContextMenuActionProvider|"
 msgid "Disconnect"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:42
 msgctxt "ContextMenuActionProvider|"
 msgid "Join"
-msgstr ""
+msgstr "ਜੁਆਇਨ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:43
 msgctxt "ContextMenuActionProvider|"
 msgid "Part"
-msgstr ""
+msgstr "ਭਾਗ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:44
 msgctxt "ContextMenuActionProvider|"
@@ -1151,12 +1209,12 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:45
 msgctxt "ContextMenuActionProvider|"
 msgid "Go to Chat"
-msgstr ""
+msgstr "ਗੱਲ ਉੱਤੇ ਜਾਓ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:47
 msgctxt "ContextMenuActionProvider|"
 msgid "Joins"
-msgstr ""
+msgstr "ਜੁਆਇੰਨ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:48
 msgctxt "ContextMenuActionProvider|"
@@ -1191,7 +1249,7 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:54
 msgctxt "ContextMenuActionProvider|"
 msgid "Set as Default..."
-msgstr ""
+msgstr "...ਡਿਫਾਲਟ ਸੈੱਟ ਕਰੋ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:55
 msgctxt "ContextMenuActionProvider|"
@@ -1201,7 +1259,7 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:57
 msgctxt "ContextMenuActionProvider|"
 msgid "Join Channel..."
-msgstr ""
+msgstr "...ਚੈਨਲ ਜੁਆਇੰਨ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:59
 msgctxt "ContextMenuActionProvider|"
@@ -1216,22 +1274,22 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:61
 msgctxt "ContextMenuActionProvider|"
 msgid "Whois"
-msgstr ""
+msgstr "ਕੌਣ ਹੈ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:63
 msgctxt "ContextMenuActionProvider|"
 msgid "Version"
-msgstr ""
+msgstr "ਵਰਜਨ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:64
 msgctxt "ContextMenuActionProvider|"
 msgid "Time"
-msgstr ""
+msgstr "ਸਮਾਂ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:65
 msgctxt "ContextMenuActionProvider|"
 msgid "Ping"
-msgstr ""
+msgstr "ਪਿੰਗ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:66
 msgctxt "ContextMenuActionProvider|"
@@ -1241,7 +1299,7 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:67
 msgctxt "ContextMenuActionProvider|"
 msgid "Custom..."
-msgstr ""
+msgstr "...ਕਸਟਮ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:79
 msgctxt "ContextMenuActionProvider|"
@@ -1266,12 +1324,12 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:83
 msgctxt "ContextMenuActionProvider|"
 msgid "Give Voice"
-msgstr ""
+msgstr "ਆਵਾਜ਼ ਦਿਓ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:84
 msgctxt "ContextMenuActionProvider|"
 msgid "Take Voice"
-msgstr ""
+msgstr "ਆਵਾਜ਼ ਲਵੋ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:85
 msgctxt "ContextMenuActionProvider|"
@@ -1286,7 +1344,7 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:87
 msgctxt "ContextMenuActionProvider|"
 msgid "Kick && Ban"
-msgstr ""
+msgstr "ਠੁੱਡਾ ਤੇ ਪਾਬੰਦੀ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:89
 msgctxt "ContextMenuActionProvider|"
@@ -1316,17 +1374,17 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:113
 msgctxt "ContextMenuActionProvider|"
 msgid "CTCP"
-msgstr ""
+msgstr "CTCP"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:128
 msgctxt "ContextMenuActionProvider|"
 msgid "Actions"
-msgstr ""
+msgstr "ਐਕਸ਼ਨ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:132
 msgctxt "ContextMenuActionProvider|"
 msgid "Ignore"
-msgstr ""
+msgstr "ਅਣਡਿੱਠਾ"
 
 #: ../src/uisupport/contextmenuactionprovider.cpp:137
 msgctxt "ContextMenuActionProvider|"
@@ -1336,14 +1394,14 @@ msgstr ""
 #: ../src/uisupport/contextmenuactionprovider.cpp:138
 msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
-msgstr ""
+msgstr "ਮੌਜੂਦਾ ਨਿਯਮ"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1351,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr ""
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1510,77 +1514,77 @@ msgstr ""
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:20
 msgctxt "CoreAccountEditDlg|"
 msgid "Account Details"
-msgstr ""
+msgstr "ਅਕਾਊਂਟ ਵੇਰਵਾ"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:26
 msgctxt "CoreAccountEditDlg|"
 msgid "Account Name:"
-msgstr ""
+msgstr "ਅਕਾਊਂਟ ਨਾਂ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:33
 msgctxt "CoreAccountEditDlg|"
 msgid "Local Core"
-msgstr ""
+msgstr "ਲੋਕਲ ਕੋਰ"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:40
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:173
 msgctxt "CoreAccountEditDlg|"
 msgid "Hostname:"
-msgstr ""
+msgstr "ਹੋਸਟ-ਨਾਂ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:47
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:180
 msgctxt "CoreAccountEditDlg|"
 msgid "localhost"
-msgstr ""
+msgstr "ਲੋਕਲ-ਹੋਸਟ"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:54
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:187
 msgctxt "CoreAccountEditDlg|"
 msgid "Port:"
-msgstr ""
+msgstr "ਪੋਰਟ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:93
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:226
 msgctxt "CoreAccountEditDlg|"
 msgid "User:"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:103
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:236
 msgctxt "CoreAccountEditDlg|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:117
 msgctxt "CoreAccountEditDlg|"
 msgid "Remember"
-msgstr ""
+msgstr "ਯਾਦ ਰੱਖੋ"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:127
 msgctxt "CoreAccountEditDlg|"
 msgid "Use a Proxy"
-msgstr ""
+msgstr "ਪਰਾਕਸੀ ਵਰਤੋਂ"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:139
 msgctxt "CoreAccountEditDlg|"
 msgid "Proxy Type:"
-msgstr ""
+msgstr "ਪਰਾਕਸੀ ਕਿਸਮ:"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:147
 msgctxt "CoreAccountEditDlg|"
 msgid "Socks 5"
-msgstr ""
+msgstr "Socks 5"
 
 #: ../src/qtui/settingspages/coreaccounteditdlg.ui:152
 msgctxt "CoreAccountEditDlg|"
 msgid "HTTP"
-msgstr ""
+msgstr "HTTP"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.cpp:262
 msgctxt "CoreAccountEditDlg|"
 msgid "Add Core Account"
-msgstr ""
+msgstr "ਕੋਰ ਅਕਾਊਂਟ ਜੋੜੋ"
 
 #: ../src/client/coreaccountmodel.cpp:68
 msgctxt "CoreAccountModel|"
@@ -1590,7 +1594,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:20
 msgctxt "CoreAccountSettingsPage|"
 msgid "Connect to Quassel Core"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਕੋਰ ਨਾਲ ਕੁਨੈਕਟ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:30
 msgctxt "CoreAccountSettingsPage|"
@@ -1600,22 +1604,22 @@ msgstr ""
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:45
 msgctxt "CoreAccountSettingsPage|"
 msgid "Edit..."
-msgstr ""
+msgstr "...ਸੋਧ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:56
 msgctxt "CoreAccountSettingsPage|"
 msgid "Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:67
 msgctxt "CoreAccountSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:96
 msgctxt "CoreAccountSettingsPage|"
 msgid "Automatically connect on startup"
-msgstr ""
+msgstr "ਸ਼਼ੁਰੂ ਸਮੇਂ ਆਪਣੇ-ਆਪ ਹੀ ਕੁਨੈਕਟ ਕਰੋ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:136
 msgctxt "CoreAccountSettingsPage|"
@@ -1625,11 +1629,68 @@ msgstr ""
 #: ../src/qtui/settingspages/coreaccountsettingspage.ui:148
 msgctxt "CoreAccountSettingsPage|"
 msgid "Always connect to"
-msgstr ""
+msgstr "ਹਮੇਸ਼ਾ ਕੁਨੈਕਟ ਕਰੋ"
 
 #: ../src/qtui/settingspages/coreaccountsettingspage.cpp:29
 msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
+msgstr "ਰਿਮੋਟ ਕੋਰਾਂ"
+
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "ਕਲਾਇਟ"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
 msgstr ""
 
 #: ../src/qtui/coreconfigwizard.cpp:69
@@ -1637,12 +1698,12 @@ msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1650,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1660,27 +1721,27 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Username:"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ ਨਾਂ:"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:32
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:46
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Repeat password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ ਦੁਹਰਾਉ:"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:60
 msgctxt "CoreConfigWizardAdminUserPage|"
 msgid "Remember password"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
 
 #: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:69
 msgctxt "CoreConfigWizardAdminUserPage|"
@@ -1692,53 +1753,53 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:13
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/coreconfigwizardintropage.ui:19
 msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
-msgstr ""
+msgstr "ਇਹ ਸਹਾਇਕ ਤੁਹਾਡੇ ਕੁਅੱਸੇਲ ਕੋਰ ਨੂੰ ਸੈਟਅੱਪ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰੇਗਾ।"
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
-msgstr ""
+msgstr "ਜਾਣ ਪਛਾਣ"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
-msgstr ""
+msgstr "ਕੁਨੈਕਸ਼ਨ ਵਿਸ਼ੇਸ਼ਤਾ"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1748,7 +1809,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
 msgctxt "CoreConfigWizardStorageSelectionPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
 msgctxt "CoreConfigWizardStorageSelectionPage|"
@@ -1758,7 +1819,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:56
 msgctxt "CoreConfigWizardStorageSelectionPage|"
 msgid "Description"
-msgstr ""
+msgstr "ਵੇਰਵਾ"
 
 #: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:62
 msgctxt "CoreConfigWizardStorageSelectionPage|"
@@ -1768,7 +1829,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
 msgctxt "CoreConfigWizardSyncPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
 msgctxt "CoreConfigWizardSyncPage|"
@@ -1793,7 +1854,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:62
 msgctxt "CoreConfigWizardSyncPage|"
 msgid "bar"
-msgstr ""
+msgstr "ਬਾਰ"
 
 #: ../src/qtui/ui/coreconfigwizardsyncpage.ui:102
 msgctxt "CoreConfigWizardSyncPage|"
@@ -1803,7 +1864,7 @@ msgstr ""
 #: ../src/qtui/ui/coreconnectauthdlg.ui:14
 msgctxt "CoreConnectAuthDlg|"
 msgid "Authentication Required"
-msgstr ""
+msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
 
 #: ../src/qtui/ui/coreconnectauthdlg.ui:20
 msgctxt "CoreConnectAuthDlg|"
@@ -1813,17 +1874,17 @@ msgstr ""
 #: ../src/qtui/ui/coreconnectauthdlg.ui:35
 msgctxt "CoreConnectAuthDlg|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/ui/coreconnectauthdlg.ui:49
 msgctxt "CoreConnectAuthDlg|"
 msgid "Username:"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ ਨਾਂ:"
 
 #: ../src/qtui/ui/coreconnectauthdlg.ui:58
 msgctxt "CoreConnectAuthDlg|"
 msgid "Remember password"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
 
 #: ../src/qtui/coreconnectdlg.cpp:81
 #, qt-format
@@ -1836,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ ਹੈ"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
-msgstr ""
+msgstr "...%1 ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
-msgstr ""
+msgstr "%1 ਨਾਲ ਕੁਨੈਕਟ ਹੈ"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
-msgstr ""
+msgstr "ਕੋਰ ਤੋਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੈ"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -1941,7 +1961,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
 msgctxt "CoreConnectionSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
 msgctxt "CoreConnectionSettingsPage|"
@@ -1978,7 +1998,7 @@ msgstr ""
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:157
 msgctxt "CoreConnectionSettingsPage|"
 msgid " seconds"
-msgstr ""
+msgstr " ਸਕਿੰਟ"
 
 #: ../src/qtui/settingspages/coreconnectionsettingspage.ui:100
 msgctxt "CoreConnectionSettingsPage|"
@@ -2005,38 +2025,38 @@ msgstr ""
 #: ../src/qtui/settingspages/coreconnectionsettingspage.cpp:24
 msgctxt "CoreConnectionSettingsPage|"
 msgid "Remote Cores"
-msgstr ""
+msgstr "ਰਿਮੋਟ ਕੋਰਾਂ"
 
 #: ../src/qtui/settingspages/coreconnectionsettingspage.cpp:24
 msgctxt "CoreConnectionSettingsPage|"
 msgid "Connection"
-msgstr ""
+msgstr "ਕੁਨੈਕਸ਼ਨ"
 
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
 msgctxt "CoreConnectionStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
 msgctxt "CoreConnectionStatusWidget|"
 msgid "Message"
-msgstr ""
+msgstr "ਸੁਨੇਹਾ"
 
 #: ../src/qtui/coreconnectionstatuswidget.cpp:66
 msgctxt "CoreConnectionStatusWidget|seconds"
 msgid "s"
-msgstr ""
+msgstr "s"
 
 #: ../src/qtui/coreconnectionstatuswidget.cpp:66
 msgctxt "CoreConnectionStatusWidget|milliseconds"
 msgid "ms"
-msgstr ""
+msgstr "ms"
 
 #: ../src/qtui/coreconnectionstatuswidget.cpp:67
 #, qt-format
 msgctxt "CoreConnectionStatusWidget|"
 msgid "(Lag: %1 %2)"
-msgstr ""
+msgstr "(ਲੈਗ: %1 %2)"
 
 #: ../src/qtui/coreconnectionstatuswidget.cpp:83
 msgctxt "CoreConnectionStatusWidget|"
@@ -2051,12 +2071,12 @@ msgstr ""
 #: ../src/qtui/ui/coreinfodlg.ui:13
 msgctxt "CoreInfoDlg|"
 msgid "Core Information"
-msgstr ""
+msgstr "ਕੋਰ ਜਾਣਕਾਰੀ"
 
 #: ../src/qtui/ui/coreinfodlg.ui:21
 msgctxt "CoreInfoDlg|"
 msgid "Version:"
-msgstr ""
+msgstr "ਵਰਜਨ:"
 
 #: ../src/qtui/ui/coreinfodlg.ui:28
 msgctxt "CoreInfoDlg|"
@@ -2096,7 +2116,7 @@ msgstr ""
 #: ../src/qtui/ui/coreinfodlg.ui:81
 msgctxt "CoreInfoDlg|"
 msgid "Close"
-msgstr ""
+msgstr "ਬੰਦ ਕਰੋ"
 
 #: ../src/qtui/coreinfodlg.cpp:57
 #, qt-format
@@ -2110,54 +2130,54 @@ msgstr[1] ""
 #, qt-format
 msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
-msgstr ""
+msgstr " %1:%2:%3 (%4 ਤੋਂ)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
-msgstr ""
+msgstr "....%1:%2 ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
-msgstr ""
+msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੋਇਆ: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
-msgstr ""
+msgstr "ਕਲਾਇਟ"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2165,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2203,7 +2223,7 @@ msgstr ""
 #: ../src/core/coreuserinputhandler.cpp:88
 msgctxt "CoreUserInputHandler|"
 msgid "away"
-msgstr ""
+msgstr "ਦੂਰ"
 
 #: ../src/core/coreuserinputhandler.cpp:169
 #, qt-format
@@ -2213,8 +2233,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2229,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2239,10 +2259,10 @@ msgstr ""
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been deleted."
-msgstr ""
+msgstr "%1 ਲਈ ਕੁੰਜੀ ਹੁਣ ਹਟਾਈ ਗਈ ਹੈ।"
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2275,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2284,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2298,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2326,12 +2346,12 @@ msgstr ""
 #: ../src/qtui/settingspages/createidentitydlg.ui:17
 msgctxt "CreateIdentityDlg|"
 msgid "Create New Identity"
-msgstr ""
+msgstr "ਨਵੀਂ ਪਛਾਣ ਬਣਾਓ"
 
 #: ../src/qtui/settingspages/createidentitydlg.ui:25
 msgctxt "CreateIdentityDlg|"
 msgid "Identity name:"
-msgstr ""
+msgstr "ਪਛਾਣ ਨਾਂ:"
 
 #: ../src/qtui/settingspages/createidentitydlg.ui:37
 msgctxt "CreateIdentityDlg|"
@@ -2341,7 +2361,7 @@ msgstr ""
 #: ../src/qtui/settingspages/createidentitydlg.ui:49
 msgctxt "CreateIdentityDlg|"
 msgid "Duplicate:"
-msgstr ""
+msgstr "ਡੁਪਲੀਕੇਟ:"
 
 #: ../src/qtui/ui/debugbufferviewoverlay.ui:13
 msgctxt "DebugBufferViewOverlay|"
@@ -2366,17 +2386,17 @@ msgstr ""
 #: ../src/qtui/debugbufferviewoverlay.cpp:51
 msgctxt "DebugBufferViewOverlay|"
 msgid "All Networks:"
-msgstr ""
+msgstr "ਸਭ ਨੈੱਟਵਰਕ:"
 
 #: ../src/qtui/debugbufferviewoverlay.cpp:52
 msgctxt "DebugBufferViewOverlay|"
 msgid "Networks:"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ:"
 
 #: ../src/qtui/debugbufferviewoverlay.cpp:53
 msgctxt "DebugBufferViewOverlay|"
 msgid "Buffers:"
-msgstr ""
+msgstr "ਬਫ਼ਰ:"
 
 #: ../src/qtui/debugbufferviewoverlay.cpp:54
 msgctxt "DebugBufferViewOverlay|"
@@ -2411,17 +2431,17 @@ msgstr ""
 #: ../src/qtui/ui/debugconsole.ui:44
 msgctxt "DebugConsole|"
 msgid "local"
-msgstr ""
+msgstr "local"
 
 #: ../src/qtui/ui/debugconsole.ui:54
 msgctxt "DebugConsole|"
 msgid "core"
-msgstr ""
+msgstr "ਕੋਰ"
 
 #: ../src/qtui/ui/debugconsole.ui:82
 msgctxt "DebugConsole|"
 msgid "Evaluate!"
-msgstr ""
+msgstr "ਮੁੱਲਾਂਕਣ!"
 
 #: ../src/qtui/ui/debuglogwidget.ui:13
 msgctxt "DebugLogWidget|"
@@ -2431,7 +2451,7 @@ msgstr ""
 #: ../src/qtui/ui/debuglogwidget.ui:43
 msgctxt "DebugLogWidget|"
 msgid "Close"
-msgstr ""
+msgstr "ਬੰਦ ਕਰੋ"
 
 #: ../src/qtui/dockmanagernotificationbackend.cpp:184
 msgctxt "DockManagerNotificationBackend::ConfigWidget|"
@@ -2441,13 +2461,13 @@ msgstr ""
 #: ../src/core/eventstringifier.cpp:224 ../src/core/eventstringifier.cpp:370
 msgctxt "EventStringifier|"
 msgid "[Whois] "
-msgstr ""
+msgstr "[Whois] "
 
 #: ../src/core/eventstringifier.cpp:239
 #, qt-format
 msgctxt "EventStringifier|"
 msgid "%1 invited you to channel %2"
-msgstr ""
+msgstr "%1 ਨੇ ਤੁਹਾਨੂੰ %2 ਚੈਨਲ 'ਚ ਸੱਦਿਆ।"
 
 #: ../src/core/eventstringifier.cpp:341
 #, qt-format
@@ -2472,7 +2492,7 @@ msgstr ""
 #, qt-format
 msgctxt "EventStringifier|"
 msgid "%1 is away: \"%2\""
-msgstr ""
+msgstr "%1 ਦੂਰ ਹੈ: \"%2\""
 
 #: ../src/core/eventstringifier.cpp:391
 msgctxt "EventStringifier|"
@@ -2558,7 +2578,7 @@ msgstr ""
 #: ../src/core/eventstringifier.cpp:540
 msgctxt "EventStringifier|"
 msgid "End of channel list"
-msgstr ""
+msgstr "ਚੈਨਲ ਲਿਸਟ ਦਾ ਅੰਤ"
 
 #: ../src/core/eventstringifier.cpp:558
 #, qt-format
@@ -2612,7 +2632,7 @@ msgstr ""
 #, qt-format
 msgctxt "EventStringifier|"
 msgid "[Who] %1"
-msgstr ""
+msgstr "[Who] %1"
 
 #: ../src/core/eventstringifier.cpp:649
 msgctxt "EventStringifier|"
@@ -2647,7 +2667,7 @@ msgstr ""
 #: ../src/core/eventstringifier.cpp:717
 msgctxt "EventStringifier|"
 msgid "unknown"
-msgstr ""
+msgstr "ਅਣਜਾਣ"
 
 #: ../src/core/eventstringifier.cpp:718
 #, qt-format
@@ -2706,12 +2726,12 @@ msgstr ""
 #: ../src/uisupport/fontselector.cpp:32
 msgctxt "FontSelector|"
 msgid "Choose..."
-msgstr ""
+msgstr "...ਚੁਣੋ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:14
 msgctxt "HighlightSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:20
 msgctxt "HighlightSettingsPage|"
@@ -2722,12 +2742,12 @@ msgstr ""
 #: ../src/qtui/settingspages/highlightsettingspage.cpp:29
 msgctxt "HighlightSettingsPage|"
 msgid "Highlight"
-msgstr ""
+msgstr "ਹਾਈਲਾਈਟ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:38
 msgctxt "HighlightSettingsPage|"
 msgid "RegEx"
-msgstr ""
+msgstr "RegEx"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:43
 msgctxt "HighlightSettingsPage|"
@@ -2737,22 +2757,22 @@ msgstr ""
 #: ../src/qtui/settingspages/highlightsettingspage.ui:48
 msgctxt "HighlightSettingsPage|"
 msgid "Enable"
-msgstr ""
+msgstr "ਯੋਗ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:53
 msgctxt "HighlightSettingsPage|"
 msgid "Channel"
-msgstr ""
+msgstr "ਚੈਨਲ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:69
 msgctxt "HighlightSettingsPage|"
 msgid "Add"
-msgstr ""
+msgstr "ਸ਼ਾਮਲ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:76
 msgctxt "HighlightSettingsPage|"
 msgid "Remove"
-msgstr ""
+msgstr "ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:101
 msgctxt "HighlightSettingsPage|"
@@ -2772,17 +2792,17 @@ msgstr ""
 #: ../src/qtui/settingspages/highlightsettingspage.ui:124
 msgctxt "HighlightSettingsPage|"
 msgid "None"
-msgstr ""
+msgstr "ਕੋਈ ਨਹੀਂ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.ui:131
 msgctxt "HighlightSettingsPage|"
 msgid "Case sensitive"
-msgstr ""
+msgstr "ਆਕਾਰ ਪ੍ਰਤੀ ਸੰਵੇਦਨਸ਼ੀਲ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.cpp:29
 msgctxt "HighlightSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/highlightsettingspage.cpp:184
 msgctxt "HighlightSettingsPage|"
@@ -2795,91 +2815,91 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
-msgstr ""
+msgstr "ਪਛਾਣ ਨਾਂ ਬਦਲੋ"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:34
 #: ../src/qtui/settingspages/identitiessettingspage.ui:77
 msgctxt "IdentitiesSettingsPage|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:51
 msgctxt "IdentitiesSettingsPage|"
 msgid "Add Identity"
-msgstr ""
+msgstr "ਪਛਾਣ ਸੋਧ"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:54
 msgctxt "IdentitiesSettingsPage|"
 msgid "Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:74
 msgctxt "IdentitiesSettingsPage|"
 msgid "Remove Identity"
-msgstr ""
+msgstr "ਪਛਾਣ ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/identitiessettingspage.cpp:31
 msgctxt "IdentitiesSettingsPage|"
 msgid "IRC"
-msgstr ""
+msgstr "IRC"
 
 #: ../src/qtui/settingspages/identitiessettingspage.cpp:31
 msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
-msgstr ""
+msgstr "ਪਛਾਣ"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
-msgstr ""
+msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
-msgstr ""
+msgstr "ਪਛਾਣ ਹਟਾਉਣੀ ਹੈ?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -2888,7 +2908,7 @@ msgstr ""
 #: ../src/common/identity.cpp:147
 msgctxt "Identity|"
 msgid "Quassel IRC User"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਆਈਆਰਸੀ ਯੂਜ਼ਰ"
 
 #: ../src/common/identity.cpp:177
 msgctxt "Identity|"
@@ -2923,12 +2943,12 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:30
 msgctxt "IdentityEditWidget|"
 msgid "General"
-msgstr ""
+msgstr "ਆਮ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:38
 msgctxt "IdentityEditWidget|"
 msgid "Real Name:"
-msgstr ""
+msgstr "ਅਸਲੀ ਨਾਂ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:45
 msgctxt "IdentityEditWidget|"
@@ -2938,37 +2958,37 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:54
 msgctxt "IdentityEditWidget|"
 msgid "Nicknames"
-msgstr ""
+msgstr "ਨਾਂ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:90
 msgctxt "IdentityEditWidget|"
 msgid "Add Nickname"
-msgstr ""
+msgstr "ਨਾਂ ਸ਼ਾਮਿਲ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:93
 msgctxt "IdentityEditWidget|"
 msgid "&Add..."
-msgstr ""
+msgstr "ਸ਼ਾਮਲ(&A)"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:116
 msgctxt "IdentityEditWidget|"
 msgid "Remove Nickname"
-msgstr ""
+msgstr "ਨਾਂ ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:119
 msgctxt "IdentityEditWidget|"
 msgid "Remove"
-msgstr ""
+msgstr "ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:136
 msgctxt "IdentityEditWidget|"
 msgid "Rename Identity"
-msgstr ""
+msgstr "ਪਛਾਣ ਨਾਂ ਬਦਲੋ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:139
 msgctxt "IdentityEditWidget|"
 msgid "Re&name..."
-msgstr ""
+msgstr "...ਨਾਂ ਬਦਲੋ(&n)"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:165
 msgctxt "IdentityEditWidget|"
@@ -2979,7 +2999,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:182
 msgctxt "IdentityEditWidget|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:179
 msgctxt "IdentityEditWidget|"
@@ -2989,7 +3009,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:227
 msgctxt "IdentityEditWidget|"
 msgid "A&way"
-msgstr ""
+msgstr "ਦੂਰ(&w)"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:233
 msgctxt "IdentityEditWidget|"
@@ -3031,7 +3051,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:315
 msgctxt "IdentityEditWidget|"
 msgid "Not implemented yet"
-msgstr ""
+msgstr "ਹਾਲੇ ਸਥਾਪਤ ਨਹੀਂ ਹੈ।"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:318
 msgctxt "IdentityEditWidget|"
@@ -3041,7 +3061,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:332
 msgctxt "IdentityEditWidget|"
 msgid "Set away after"
-msgstr ""
+msgstr "ਇਸ ਦੇ ਬਾਅਦ ਸੈੱਟ ਕਰੋ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:342
 msgctxt "IdentityEditWidget|"
@@ -3052,12 +3072,12 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.cpp:238
 msgctxt "IdentityEditWidget|"
 msgid "Advanced"
-msgstr ""
+msgstr "ਤਕਨੀਕੀ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:407
 msgctxt "IdentityEditWidget|"
 msgid "Ident:"
-msgstr ""
+msgstr "ਪਛਾਣ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:414
 msgctxt "IdentityEditWidget|"
@@ -3069,22 +3089,22 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:423
 msgctxt "IdentityEditWidget|"
 msgid "Messages"
-msgstr ""
+msgstr "ਸੁਨੇਹੇ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:431
 msgctxt "IdentityEditWidget|"
 msgid "Part Reason:"
-msgstr ""
+msgstr "ਪਾਰਟ ਕਾਰਨ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:444
 msgctxt "IdentityEditWidget|"
 msgid "Quit Reason:"
-msgstr ""
+msgstr "ਛੱਡਣ ਕਾਰਨ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:454
 msgctxt "IdentityEditWidget|"
 msgid "Kick Reason:"
-msgstr ""
+msgstr "ਕਿੱਕ ਦਾ ਕਾਰਨ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:488
 msgctxt "IdentityEditWidget|"
@@ -3102,7 +3122,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:546
 msgctxt "IdentityEditWidget|"
 msgid "Continue"
-msgstr ""
+msgstr "ਜਾਰੀ ਰੱਖੋ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:584
 msgctxt "IdentityEditWidget|"
@@ -3112,7 +3132,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:598
 msgctxt "IdentityEditWidget|"
 msgid "Key Type:"
-msgstr ""
+msgstr "ਕੁੰਜੀ ਟਾਈਪ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:605
 #: ../src/qtui/settingspages/identityeditwidget.cpp:353
@@ -3127,7 +3147,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.cpp:408
 msgctxt "IdentityEditWidget|"
 msgid "Load"
-msgstr ""
+msgstr "ਲੋਡ"
 
 #: ../src/qtui/settingspages/identityeditwidget.ui:637
 msgctxt "IdentityEditWidget|"
@@ -3150,7 +3170,7 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.ui:690
 msgctxt "IdentityEditWidget|"
 msgid "CommonName:"
-msgstr ""
+msgstr "ਆਮ-ਨਾਂ:"
 
 #: ../src/qtui/settingspages/identityeditwidget.cpp:321
 msgctxt "IdentityEditWidget|"
@@ -3172,18 +3192,18 @@ msgstr ""
 #: ../src/qtui/settingspages/identityeditwidget.cpp:359
 msgctxt "IdentityEditWidget|"
 msgid "RSA"
-msgstr ""
+msgstr "RSA"
 
 #: ../src/qtui/settingspages/identityeditwidget.cpp:362
 msgctxt "IdentityEditWidget|"
 msgid "DSA"
-msgstr ""
+msgstr "DSA"
 
 #: ../src/qtui/settingspages/identityeditwidget.cpp:367
 #: ../src/qtui/settingspages/identityeditwidget.cpp:413
 msgctxt "IdentityEditWidget|"
 msgid "Clear"
-msgstr ""
+msgstr "ਸਾਫ਼ ਕਰੋ"
 
 #: ../src/qtui/settingspages/identityeditwidget.cpp:379
 msgctxt "IdentityEditWidget|"
@@ -3193,12 +3213,12 @@ msgstr ""
 #: ../src/qtui/ircconnectionwizard.cpp:115
 msgctxt "IdentityPage|"
 msgid "Setup Identity"
-msgstr ""
+msgstr "ਪਛਾਣ ਸੈਟਅੱਪ"
 
 #: ../src/qtui/ircconnectionwizard.cpp:120
 msgctxt "IdentityPage|"
 msgid "Default Identity"
-msgstr ""
+msgstr "ਡਿਫਾਲਟ ਪਛਾਣ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:15
 msgctxt "IgnoreListEditDlg|"
@@ -3224,12 +3244,12 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:41
 msgctxt "IgnoreListEditDlg|"
 msgid "Dynamic"
-msgstr ""
+msgstr "ਡਾਇਨਾਮਿਕ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:48
 msgctxt "IgnoreListEditDlg|"
 msgid "Permanent"
-msgstr ""
+msgstr "ਪੱਕਾ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:58
 msgctxt "IgnoreListEditDlg|"
@@ -3250,17 +3270,17 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:72
 msgctxt "IgnoreListEditDlg|"
 msgid "Sender"
-msgstr ""
+msgstr "ਭੇਜਣ ਵਾਲਾ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:79
 msgctxt "IgnoreListEditDlg|"
 msgid "Message"
-msgstr ""
+msgstr "ਸੁਨੇਹਾ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:86
 msgctxt "IgnoreListEditDlg|"
 msgid "CTCP"
-msgstr ""
+msgstr "CTCP"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:98
 msgctxt "IgnoreListEditDlg|"
@@ -3298,7 +3318,7 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:131
 msgctxt "IgnoreListEditDlg|"
 msgid "Regular expression"
-msgstr ""
+msgstr "ਨਿਯਮਿਤ ਸਮੀਕਰਨ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:143
 msgctxt "IgnoreListEditDlg|"
@@ -3315,22 +3335,22 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:152
 msgctxt "IgnoreListEditDlg|"
 msgid "Scope"
-msgstr ""
+msgstr "ਸਕੋਪ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:160
 msgctxt "IgnoreListEditDlg|"
 msgid "Global"
-msgstr ""
+msgstr "ਗਲੋਬਲ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:167
 msgctxt "IgnoreListEditDlg|"
 msgid "Network"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:174
 msgctxt "IgnoreListEditDlg|"
 msgid "Channel"
-msgstr ""
+msgstr "ਚੈਨਲ"
 
 #: ../src/qtui/settingspages/ignorelisteditdlg.ui:183
 msgctxt "IgnoreListEditDlg|"
@@ -3391,12 +3411,12 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelistmodel.cpp:208
 msgctxt "IgnoreListModel|"
 msgid "Enabled"
-msgstr ""
+msgstr "ਚਾਲੂ ਹੈ"
 
 #: ../src/qtui/settingspages/ignorelistmodel.cpp:209
 msgctxt "IgnoreListModel|"
 msgid "Type"
-msgstr ""
+msgstr "ਕਿਸਮ"
 
 #: ../src/qtui/settingspages/ignorelistmodel.cpp:210
 msgctxt "IgnoreListModel|"
@@ -3406,27 +3426,27 @@ msgstr ""
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:14
 msgctxt "IgnoreListSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:28
 msgctxt "IgnoreListSettingsPage|"
 msgid "New"
-msgstr ""
+msgstr "ਨਵਾਂ"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:42
 msgctxt "IgnoreListSettingsPage|"
 msgid "Delete"
-msgstr ""
+msgstr "ਹਟਾਓ"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.ui:56
 msgctxt "IgnoreListSettingsPage|"
 msgid "&Edit"
-msgstr ""
+msgstr "ਸੋਧ(&E)"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.cpp:34
 msgctxt "IgnoreListSettingsPage|"
 msgid "IRC"
-msgstr ""
+msgstr "IRC"
 
 #: ../src/qtui/settingspages/ignorelistsettingspage.cpp:34
 msgctxt "IgnoreListSettingsPage|"
@@ -3450,7 +3470,7 @@ msgstr ""
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
 msgctxt "IndicatorNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
 msgctxt "IndicatorNotificationConfigWidget|"
@@ -3467,17 +3487,17 @@ msgstr ""
 #: ../src/qtui/ui/inputwidget.ui:26
 msgctxt "InputWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
 msgid "White"
-msgstr ""
+msgstr "ਚਿੱਟਾ"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
 msgid "Black"
-msgstr ""
+msgstr "ਕਾਲਾ"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
@@ -3492,7 +3512,7 @@ msgstr ""
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
 msgid "Red"
-msgstr ""
+msgstr "ਲਾਲ"
 
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
@@ -3507,17 +3527,17 @@ msgstr ""
 #: ../src/qtui/inputwidget.cpp:74
 msgctxt "InputWidget|"
 msgid "Orange"
-msgstr ""
+msgstr "ਓਰੇਜ਼"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Yellow"
-msgstr ""
+msgstr "ਪੀਲਾ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Green"
-msgstr ""
+msgstr "ਹਰਾ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
@@ -3527,27 +3547,27 @@ msgstr ""
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Cyan"
-msgstr ""
+msgstr "ਨੀਲਾ-ਹਰਾ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Blue"
-msgstr ""
+msgstr "ਨੀਲਾ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Magenta"
-msgstr ""
+msgstr "ਕਿਰਮਚੀ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Dark gray"
-msgstr ""
+msgstr "ਗੂੜਾ ਸਲੇਟੀ"
 
 #: ../src/qtui/inputwidget.cpp:75
 msgctxt "InputWidget|"
 msgid "Light gray"
-msgstr ""
+msgstr "ਹਲਕਾ ਸਲੇਟੀ"
 
 #: ../src/qtui/inputwidget.cpp:85 ../src/qtui/inputwidget.cpp:86
 msgctxt "InputWidget|"
@@ -3562,17 +3582,17 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
 msgctxt "InputWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
 msgctxt "InputWidgetSettingsPage|"
 msgid "Custom font:"
-msgstr ""
+msgstr "ਕਸਟਮ ਫੋਂਟ"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:50
 msgctxt "InputWidgetSettingsPage|"
 msgid "Enable spell check"
-msgstr ""
+msgstr "ਸਪੈੱਲ ਚੈੱਕ ਚਾਲੂ:"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:63
 msgctxt "InputWidgetSettingsPage|"
@@ -3612,7 +3632,7 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:170
 msgctxt "InputWidgetSettingsPage|"
 msgid "lines"
-msgstr ""
+msgstr "ਲਾਈਨਾਂ"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:192
 msgctxt "InputWidgetSettingsPage|"
@@ -3632,7 +3652,7 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:235
 msgctxt "InputWidgetSettingsPage|"
 msgid ": "
-msgstr ""
+msgstr ""
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:262
 msgctxt "InputWidgetSettingsPage|"
@@ -3642,7 +3662,7 @@ msgstr ""
 #: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
 msgctxt "InputWidgetSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
 msgctxt "InputWidgetSettingsPage|"
@@ -3657,22 +3677,22 @@ msgstr ""
 #: ../src/qtui/ircconnectionwizard.cpp:49
 msgctxt "IrcConnectionWizard|"
 msgid "Save && Connect"
-msgstr ""
+msgstr "ਸੰਭਾਲੋ ਅਤੇ ਕੁਨੈਕਟ ਕਰੋ"
 
 #: ../src/client/irclistmodel.cpp:65
 msgctxt "IrcListModel|"
 msgid "Channel"
-msgstr ""
+msgstr "ਚੈਨਲ"
 
 #: ../src/client/irclistmodel.cpp:66
 msgctxt "IrcListModel|"
 msgid "Users"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ"
 
 #: ../src/client/irclistmodel.cpp:67
 msgctxt "IrcListModel|"
 msgid "Topic"
-msgstr ""
+msgstr "ਵਿਸ਼ਾ"
 
 #: ../src/client/networkmodel.cpp:914
 msgctxt "IrcUserItem|"
@@ -3689,33 +3709,33 @@ msgstr ""
 #, qt-format
 msgctxt "IrcUserItem|"
 msgid "login time: %1"
-msgstr ""
+msgstr "ਲਾਗਇਣ ਸਮਾਂ: %1"
 
 #: ../src/client/networkmodel.cpp:935
 #, qt-format
 msgctxt "IrcUserItem|"
 msgid "server: %1"
-msgstr ""
+msgstr "ਸਰਵਰ: %1"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:14
 msgctxt "ItemViewSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:22
 msgctxt "ItemViewSettingsPage|"
 msgid "Custom font:"
-msgstr ""
+msgstr "ਕਸਟਮ ਫੋਂਟ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:50
 msgctxt "ItemViewSettingsPage|"
 msgid "Show icons"
-msgstr ""
+msgstr "ਆਈਕਾਨ ਵੇਖਾਓ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:66
 msgctxt "ItemViewSettingsPage|"
 msgid "Chat List"
-msgstr ""
+msgstr "ਗੱਲਬਾਤ ਸੂਚੀ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:72
 msgctxt "ItemViewSettingsPage|"
@@ -3730,12 +3750,12 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:101
 msgctxt "ItemViewSettingsPage|"
 msgid "Use Custom Colors"
-msgstr ""
+msgstr "ਪਸੰਦੀਦਾ ਰੰਗ ਵਰਤੋਂ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:118
 msgctxt "ItemViewSettingsPage|"
 msgid "Standard:"
-msgstr ""
+msgstr "ਸਟੈਂਡਰਡ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:125
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:149
@@ -3746,22 +3766,22 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:345
 msgctxt "ItemViewSettingsPage|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:142
 msgctxt "ItemViewSettingsPage|"
 msgid "Inactive:"
-msgstr ""
+msgstr "ਇਨ-ਐਕਟਿਵ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:166
 msgctxt "ItemViewSettingsPage|"
 msgid "Unread messages:"
-msgstr ""
+msgstr "ਨਾ ਪੜ੍ਹੇ ਸੁਨੇਹੇ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:190
 msgctxt "ItemViewSettingsPage|"
 msgid "Highlight:"
-msgstr ""
+msgstr "ਹਾਈਲਾਈਟ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:214
 msgctxt "ItemViewSettingsPage|"
@@ -3776,17 +3796,17 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:301
 msgctxt "ItemViewSettingsPage|"
 msgid "Online:"
-msgstr ""
+msgstr "ਆਨਲਾਈਨ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.ui:338
 msgctxt "ItemViewSettingsPage|"
 msgid "Away:"
-msgstr ""
+msgstr "ਦੂਰ:"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:29
 msgctxt "ItemViewSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:29
 msgctxt "ItemViewSettingsPage|"
@@ -3796,27 +3816,27 @@ msgstr ""
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:34
 msgctxt "ItemViewSettingsPage|"
 msgid "Network"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:37
 msgctxt "ItemViewSettingsPage|"
 msgid "Inactive"
-msgstr ""
+msgstr "ਇਨ-ਐਕਟਿਵ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:38
 msgctxt "ItemViewSettingsPage|"
 msgid "Normal"
-msgstr ""
+msgstr "ਸਧਾਰਨ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:39
 msgctxt "ItemViewSettingsPage|"
 msgid "Unread messages"
-msgstr ""
+msgstr "ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:40
 msgctxt "ItemViewSettingsPage|"
 msgid "Highlight"
-msgstr ""
+msgstr "ਹਾਈਲਾਈਟ"
 
 #: ../src/qtui/settingspages/itemviewsettingspage.cpp:41
 msgctxt "ItemViewSettingsPage|"
@@ -3834,12 +3854,12 @@ msgstr[1] ""
 #: ../src/qtui/settingspages/keysequencewidget.cpp:80
 msgctxt "KeySequenceButton|"
 msgid "The key you just pressed is not supported by Qt."
-msgstr ""
+msgstr "ਸਵਿੱਚ, ਜੋ ਦੱਬੀ ਹੈ, Qt ਵਲੋਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:81
 msgctxt "KeySequenceButton|"
 msgid "Unsupported Key"
-msgstr ""
+msgstr "ਗ਼ੈਰ-ਸਹਾਇਕ ਸਵਿੱਚ"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:176
 msgctxt "KeySequenceWidget|"
@@ -3851,39 +3871,39 @@ msgstr ""
 #: ../src/qtui/settingspages/keysequencewidget.cpp:274
 msgctxt "KeySequenceWidget|Meta key"
 msgid "Meta"
-msgstr ""
+msgstr "Meta"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:275
 msgctxt "KeySequenceWidget|Ctrl key"
 msgid "Ctrl"
-msgstr ""
+msgstr "Ctrl"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:276
 msgctxt "KeySequenceWidget|Alt key"
 msgid "Alt"
-msgstr ""
+msgstr "Alt"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:277
 msgctxt "KeySequenceWidget|Shift key"
 msgid "Shift"
-msgstr ""
+msgstr "Shift"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:281
 msgctxt ""
 "KeySequenceWidget|What the user inputs now will be taken as the new shortcut"
 msgid "Input"
-msgstr ""
+msgstr "ਇੰਪੁੱਟ"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:288
 msgctxt "KeySequenceWidget|No shortcut defined"
 msgid "None"
-msgstr ""
+msgstr "ਕੋਈ ਨਹੀਂ"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:383
 #: ../src/qtui/settingspages/keysequencewidget.cpp:389
 msgctxt "KeySequenceWidget|"
 msgid "Shortcut Conflict"
-msgstr ""
+msgstr "ਸ਼ਾਰਟਕੱਟ ਟਕਰਾ"
 
 #: ../src/qtui/settingspages/keysequencewidget.cpp:384
 #, qt-format
@@ -3908,381 +3928,398 @@ msgstr ""
 #: ../src/qtui/settingspages/keysequencewidget.cpp:395
 msgctxt "KeySequenceWidget|"
 msgid "Reassign"
+msgstr "ਮੁੜ-ਜਾਰੀ"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
-msgstr ""
+msgstr "ਆਮ"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
-msgstr ""
+msgstr "ਬੰਦ ਕਰੋ(&Q)"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
-msgstr ""
+msgstr "ਲੇਆਉਟ ਲਾਕ ਕਰੋ(&L)"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
-msgstr ""
+msgstr "ਖੋਜ-ਪੱਟੀ ਵੇਖੋ(&S)"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
-msgstr ""
+msgstr "ਮੇਨੂ-ਪੱਟੀ ਵੇਖੋ(&M)"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
-msgstr ""
+msgstr "ਹਾਲਤ ਪੱਟੀ ਵੇਖੋ(&B)"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
-msgstr ""
+msgstr "ਪੂਰੀ ਸਕਰੀਨ ਮੋਡ(&F)"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
-msgstr ""
+msgstr "...ਸ਼ਾਰਟਕੱਟ ਸੰਰਚਨਾ(&S)"
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
-msgstr ""
+msgstr "...ਕੁਅੱਸੇਲ ਸੰਰਚਨਾ(&C)"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਬਾਰੇ(&A)"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
-msgstr ""
+msgstr "&Qt ਬਾਰੇ"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
-msgstr ""
+msgstr "ਨੇਵੀਗੇਸ਼ਨ"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
-msgstr ""
+msgstr "ਫਾਇਲ(&F)"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ(&N)"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
-msgstr ""
+msgstr "ਵੇਖੋ(&V)"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
-msgstr ""
+msgstr "ਟੂਲਬਾਰ(&T)"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
-msgstr ""
+msgstr "ਸੈਟਿੰਗ(&S)"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
-msgstr ""
+msgstr "ਮੱਦਦ(&H)"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
-msgstr ""
+msgstr "ਡੀਬੱਗ"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
-msgstr ""
+msgstr "ਨਾਂ"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
-msgstr ""
+msgstr "ਨਾਂ ਪੱਟੀ ਵੇਖੋ"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
-msgstr ""
+msgstr "ਗੱਲਬਾਤ ਨਿਗਰਾਨ"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
-msgstr ""
+msgstr "ਵਿਸ਼ਾ"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
-msgstr ""
+msgstr "ਮੁੱਖ ਟੂਲਬਾਰ"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
-msgstr ""
+msgstr "ਕੋਰ ਨਾਲ ਕੁਨੈਕਟਡ"
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4290,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
-msgstr ""
+msgstr "ਜਾਰੀ ਰੱਖੋ"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
-msgstr ""
+msgstr "ਕੀ ਤੁਸੀਂ ਸਰਟੀਫਿਕੇਟ ਹਮੇਸ਼ਾ ਲਈ ਬਿਨਾਂ ਪੁੱਛੇ ਹੀ ਸਵੀਕਾਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
-msgstr ""
+msgstr "ਕੇਵਲ ਮੌਜੂਦਾ ਸ਼ੈਸ਼ਨ ਲਈ"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
-msgstr ""
+msgstr "ਹਮੇਸ਼ਾ"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4330,7 +4367,7 @@ msgstr ""
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
 msgctxt "MsgProcessorStatusWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
 msgctxt "MsgProcessorStatusWidget|"
@@ -4353,7 +4390,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkadddlg.ui:14
 msgctxt "NetworkAddDlg|"
 msgid "Add Network"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਸ਼ਾਮਿਲ"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:22
 msgctxt "NetworkAddDlg|"
@@ -4368,27 +4405,27 @@ msgstr ""
 #: ../src/qtui/settingspages/networkadddlg.ui:67
 msgctxt "NetworkAddDlg|"
 msgid "Manual Settings"
-msgstr ""
+msgstr "ਦਸਤੀ ਸੈਟਿੰਗ"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:75
 msgctxt "NetworkAddDlg|"
 msgid "Network name:"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ:"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:85
 msgctxt "NetworkAddDlg|"
 msgid "Server address:"
-msgstr ""
+msgstr "ਸਰਵਰ ਐਡਰੈੱਸ:"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:95
 msgctxt "NetworkAddDlg|"
 msgid "Port:"
-msgstr ""
+msgstr "ਪੋਰਟ:"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:115
 msgctxt "NetworkAddDlg|"
 msgid "Server password:"
-msgstr ""
+msgstr "ਸਰਵਰ ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/settingspages/networkadddlg.ui:131
 msgctxt "NetworkAddDlg|"
@@ -4398,7 +4435,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkeditdlg.ui:13
 msgctxt "NetworkEditDlg|"
 msgid "Dialog"
-msgstr ""
+msgstr "ਡਾਈਲਾਗ"
 
 #: ../src/qtui/settingspages/networkeditdlg.ui:21
 msgctxt "NetworkEditDlg|"
@@ -4408,19 +4445,19 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.cpp:840
 msgctxt "NetworkEditDlg|"
 msgid "Add Network"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਸ਼ਾਮਿਲ"
 
 #: ../src/client/networkmodel.cpp:213
 #, qt-format
 msgctxt "NetworkItem|"
 msgid "Server: %1"
-msgstr ""
+msgstr "ਸਰਵਰ: %1"
 
 #: ../src/client/networkmodel.cpp:214
 #, qt-format
 msgctxt "NetworkItem|"
 msgid "Users: %1"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ: %1"
 
 #: ../src/client/networkmodel.cpp:217
 #, qt-format
@@ -4431,12 +4468,12 @@ msgstr ""
 #: ../src/client/networkmodel.cpp:963
 msgctxt "NetworkModel|"
 msgid "Chat"
-msgstr ""
+msgstr "ਗੱਲਬਾਤ"
 
 #: ../src/client/networkmodel.cpp:963
 msgctxt "NetworkModel|"
 msgid "Topic"
-msgstr ""
+msgstr "ਵਿਸ਼ਾ"
 
 #: ../src/client/networkmodel.cpp:963
 msgctxt "NetworkModel|"
@@ -4477,22 +4514,22 @@ msgstr ""
 #: ../src/uisupport/networkmodelcontroller.cpp:530
 msgctxt "NetworkModelController::JoinDlg|"
 msgid "Join Channel"
-msgstr ""
+msgstr "ਚੈਨਲ ਜੁਆਇੰਨ"
 
 #: ../src/uisupport/networkmodelcontroller.cpp:533
 msgctxt "NetworkModelController::JoinDlg|"
 msgid "Network:"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ:"
 
 #: ../src/uisupport/networkmodelcontroller.cpp:535
 msgctxt "NetworkModelController::JoinDlg|"
 msgid "Channel:"
-msgstr ""
+msgstr "ਚੈਨਲ:"
 
 #: ../src/uisupport/networkmodelcontroller.cpp:537
 msgctxt "NetworkModelController::JoinDlg|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/ircconnectionwizard.cpp:158
 msgctxt "NetworkPage|"
@@ -4502,24 +4539,24 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:14
 msgctxt "NetworksSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:48
 msgctxt "NetworksSettingsPage|"
 msgid "Re&name..."
-msgstr ""
+msgstr "...ਨਾਂ ਬਦਲੋ(&n)"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:65
 #: ../src/qtui/settingspages/networkssettingspage.ui:235
 msgctxt "NetworksSettingsPage|"
 msgid "&Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ(&A)"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:88
 #: ../src/qtui/settingspages/networkssettingspage.ui:252
 msgctxt "NetworksSettingsPage|"
 msgid "De&lete"
-msgstr ""
+msgstr "ਹਟਾਓ(&l)"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:124
 msgctxt "NetworksSettingsPage|"
@@ -4529,19 +4566,19 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:132
 msgctxt "NetworksSettingsPage|"
 msgid "Identity:"
-msgstr ""
+msgstr "ਪਛਾਣ:"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:149
 #: ../src/qtui/settingspages/networkssettingspage.ui:281
 #: ../src/qtui/settingspages/networkssettingspage.ui:295
 msgctxt "NetworksSettingsPage|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:190
 msgctxt "NetworksSettingsPage|"
 msgid "Servers"
-msgstr ""
+msgstr "ਸਰਵਰ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:193
 msgctxt "NetworksSettingsPage|"
@@ -4551,7 +4588,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:217
 msgctxt "NetworksSettingsPage|"
 msgid "&Edit..."
-msgstr ""
+msgstr "...ਸੋਧ(&E)"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:278
 msgctxt "NetworksSettingsPage|"
@@ -4566,7 +4603,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:337
 msgctxt "NetworksSettingsPage|"
 msgid "Commands"
-msgstr ""
+msgstr "ਕਮਾਂਡਾਂ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:340
 msgctxt "NetworksSettingsPage|"
@@ -4590,7 +4627,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:374
 msgctxt "NetworksSettingsPage|"
 msgid "Connection"
-msgstr ""
+msgstr "ਕੁਨੈਕਸ਼ਨ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:383
 msgctxt "NetworksSettingsPage|"
@@ -4605,12 +4642,12 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:397
 msgctxt "NetworksSettingsPage|"
 msgid "Wait"
-msgstr ""
+msgstr "ਉਡੀਕ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:404
 msgctxt "NetworksSettingsPage|"
 msgid " s"
-msgstr ""
+msgstr " s"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:420
 msgctxt "NetworksSettingsPage|"
@@ -4620,12 +4657,12 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:444
 msgctxt "NetworksSettingsPage|"
 msgid "Number of retries:"
-msgstr ""
+msgstr "ਮੁੜ ਕੋਸ਼ਿਸਾਂ ਦੀ ਗਿਣਤੀ:"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:464
 msgctxt "NetworksSettingsPage|"
 msgid "Unlimited"
-msgstr ""
+msgstr "ਬੇਅੰਤ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:489
 msgctxt "NetworksSettingsPage|"
@@ -4636,7 +4673,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:525
 msgctxt "NetworksSettingsPage|"
 msgid "Auto Identify"
-msgstr ""
+msgstr "ਆਟੋ ਪਛਾਣ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:540
 msgctxt "NetworksSettingsPage|"
@@ -4646,13 +4683,13 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:557
 msgctxt "NetworksSettingsPage|"
 msgid "Service:"
-msgstr ""
+msgstr "ਸਰਵਿਸ:"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:567
 #: ../src/qtui/settingspages/networkssettingspage.ui:615
 msgctxt "NetworksSettingsPage|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:580
 msgctxt "NetworksSettingsPage|"
@@ -4662,7 +4699,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:625
 msgctxt "NetworksSettingsPage|"
 msgid "Account:"
-msgstr ""
+msgstr "ਅਕਾਊਂਟ:"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:635
 msgctxt "NetworksSettingsPage|"
@@ -4675,7 +4712,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.ui:659
 msgctxt "NetworksSettingsPage|"
 msgid "Encodings"
-msgstr ""
+msgstr "ਇੰਕੋਡਿੰਗ"
 
 #: ../src/qtui/settingspages/networkssettingspage.ui:662
 msgctxt "NetworksSettingsPage|"
@@ -4736,12 +4773,12 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.cpp:37
 msgctxt "NetworksSettingsPage|"
 msgid "IRC"
-msgstr ""
+msgstr "IRC"
 
 #: ../src/qtui/settingspages/networkssettingspage.cpp:37
 msgctxt "NetworksSettingsPage|"
 msgid "Networks"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ"
 
 #: ../src/qtui/settingspages/networkssettingspage.cpp:184
 msgctxt "NetworksSettingsPage|"
@@ -4758,7 +4795,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.cpp:186
 msgctxt "NetworksSettingsPage|"
 msgid "</ul>"
-msgstr ""
+msgstr "</ul>"
 
 #: ../src/qtui/settingspages/networkssettingspage.cpp:187
 msgctxt "NetworksSettingsPage|"
@@ -4768,7 +4805,7 @@ msgstr ""
 #: ../src/qtui/settingspages/networkssettingspage.cpp:650
 msgctxt "NetworksSettingsPage|"
 msgid "Delete Network?"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਹਟਾਉਣਾ ਹੈ?"
 
 #: ../src/qtui/settingspages/networkssettingspage.cpp:651
 #, qt-format
@@ -4795,22 +4832,22 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
-msgstr ""
+msgstr "...ਨਾਂ ਸ਼ਾਮਿਲ"
 
 #: ../src/qtui/settingspages/notificationssettingspage.cpp:28
 msgctxt "NotificationsSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/notificationssettingspage.cpp:28
 msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
-msgstr ""
+msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -4818,12 +4855,12 @@ msgstr ""
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
 msgctxt "PhononNotificationConfigWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
 msgctxt "PhononNotificationConfigWidget|"
 msgid "Play a sound"
-msgstr ""
+msgstr "ਧੁਨੀ ਚਲਾਉ"
 
 #: ../src/qtui/ui/phononnotificationconfigwidget.ui:46
 msgctxt "PhononNotificationConfigWidget|"
@@ -4863,7 +4900,7 @@ msgstr ""
 #: ../src/qtui/ircconnectionwizard.cpp:56
 msgctxt "QObject|"
 msgid "Welcome to Quassel IRC"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ IRC ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ"
 
 #: ../src/qtui/ircconnectionwizard.cpp:58
 msgctxt "QObject|"
@@ -5034,33 +5071,33 @@ msgstr ""
 #: ../src/common/util.cpp:169
 msgctxt "Quassel::secondsToString()|"
 msgid "year"
-msgstr ""
+msgstr "ਸਾਲ"
 
 #: ../src/common/util.cpp:170
 msgctxt "Quassel::secondsToString()|"
 msgid "day"
-msgstr ""
+msgstr "ਦਿਨ"
 
 #: ../src/common/util.cpp:171
 msgctxt "Quassel::secondsToString()|"
 msgid "h"
-msgstr ""
+msgstr "h"
 
 #: ../src/common/util.cpp:172
 msgctxt "Quassel::secondsToString()|"
 msgid "min"
-msgstr ""
+msgstr "ਮਿੰਟ"
 
 #: ../src/common/util.cpp:173
 msgctxt "Quassel::secondsToString()|"
 msgid "sec"
-msgstr ""
+msgstr "ਸਕਿੰਟ"
 
 #: ../src/client/networkmodel.cpp:482
 #, qt-format
 msgctxt "QueryBufferItem|"
 msgid "<b>Query with %1</b>"
-msgstr ""
+msgstr "<b>%1 ਨਾਲ ਕਿਊਰੀ</b>"
 
 #: ../src/client/networkmodel.cpp:500
 #, qt-format
@@ -5072,13 +5109,13 @@ msgstr ""
 #, qt-format
 msgctxt "QueryBufferItem|"
 msgid "login time: %1"
-msgstr ""
+msgstr "ਲਾਗਇਣ ਸਮਾਂ: %1"
 
 #: ../src/client/networkmodel.cpp:506
 #, qt-format
 msgctxt "QueryBufferItem|"
 msgid "server: %1"
-msgstr ""
+msgstr "ਸਰਵਰ: %1"
 
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:13
 msgctxt "SaveIdentitiesDlg|"
@@ -5093,12 +5130,12 @@ msgstr ""
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:81
 msgctxt "SaveIdentitiesDlg|"
 msgid "Abort"
-msgstr ""
+msgstr "ਛੱਡੋ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:14
 msgctxt "ServerEditDlg|"
 msgid "Dialog"
-msgstr ""
+msgstr "ਡਾਈਲਾਗ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:30
 msgctxt "ServerEditDlg|"
@@ -5108,33 +5145,33 @@ msgstr ""
 #: ../src/qtui/settingspages/servereditdlg.ui:38
 msgctxt "ServerEditDlg|"
 msgid "Server address:"
-msgstr ""
+msgstr "ਸਰਵਰ ਐਡਰੈੱਸ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:45
 #: ../src/qtui/settingspages/servereditdlg.ui:227
 msgctxt "ServerEditDlg|"
 msgid "Port:"
-msgstr ""
+msgstr "ਪੋਰਟ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:72
 msgctxt "ServerEditDlg|"
 msgid "Password:"
-msgstr ""
+msgstr "ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:94
 msgctxt "ServerEditDlg|"
 msgid "Use SSL"
-msgstr ""
+msgstr "SSL ਵਰਤੋਂ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:119
 msgctxt "ServerEditDlg|"
 msgid "Advanced"
-msgstr ""
+msgstr "ਤਕਨੀਕੀ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:140
 msgctxt "ServerEditDlg|"
 msgid "SSL Version:"
-msgstr ""
+msgstr "SSL ਵਰਜਨ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:147
 msgctxt "ServerEditDlg|"
@@ -5146,37 +5183,37 @@ msgstr ""
 #: ../src/qtui/settingspages/servereditdlg.ui:151
 msgctxt "ServerEditDlg|"
 msgid "SSLv3 (default)"
-msgstr ""
+msgstr "SSLv3 (ਡਿਫਾਲਟ)"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:156
 msgctxt "ServerEditDlg|"
 msgid "SSLv2"
-msgstr ""
+msgstr "SSLv2"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:161
 msgctxt "ServerEditDlg|"
 msgid "TLSv1"
-msgstr ""
+msgstr "TLSv1"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:171
 msgctxt "ServerEditDlg|"
 msgid "Use a Proxy"
-msgstr ""
+msgstr "ਪਰਾਕਸੀ ਵਰਤੋਂ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:188
 msgctxt "ServerEditDlg|"
 msgid "Proxy Type:"
-msgstr ""
+msgstr "ਪਰਾਕਸੀ ਕਿਸਮ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:196
 msgctxt "ServerEditDlg|"
 msgid "Socks 5"
-msgstr ""
+msgstr "Socks 5"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:201
 msgctxt "ServerEditDlg|"
 msgid "HTTP"
-msgstr ""
+msgstr "HTTP"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:213
 msgctxt "ServerEditDlg|"
@@ -5186,33 +5223,33 @@ msgstr ""
 #: ../src/qtui/settingspages/servereditdlg.ui:220
 msgctxt "ServerEditDlg|"
 msgid "localhost"
-msgstr ""
+msgstr "ਲੋਕਲ-ਹੋਸਟ"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:251
 msgctxt "ServerEditDlg|"
 msgid "Proxy Username:"
-msgstr ""
+msgstr "ਪਰਾਕਸੀ ਯੂਜ਼ਰ ਨਾਂ:"
 
 #: ../src/qtui/settingspages/servereditdlg.ui:261
 msgctxt "ServerEditDlg|"
 msgid "Proxy Password:"
-msgstr ""
+msgstr "ਪਾਰਕਸੀ ਪਾਸਵਰਡ:"
 
 #: ../src/qtui/ui/settingsdlg.ui:14
 msgctxt "SettingsDlg|"
 msgid "Configure Quassel"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਸੰਰਚਨਾ"
 
 #: ../src/qtui/ui/settingsdlg.ui:35 ../src/qtui/ui/settingsdlg.ui:50
 #: ../src/qtui/settingsdlg.cpp:111
 msgctxt "SettingsDlg|"
 msgid "Settings"
-msgstr ""
+msgstr "ਸੈਟਿੰਗ"
 
 #: ../src/qtui/settingsdlg.cpp:121
 msgctxt "SettingsDlg|"
 msgid "Save changes"
-msgstr ""
+msgstr "ਬਦਲਾਅ ਸੰਭਾਲੋ"
 
 #: ../src/qtui/settingsdlg.cpp:122
 msgctxt "SettingsDlg|"
@@ -5225,12 +5262,12 @@ msgstr ""
 #, qt-format
 msgctxt "SettingsDlg|"
 msgid "Configure %1"
-msgstr ""
+msgstr "%1 ਸੰਰਚਨਾ"
 
 #: ../src/qtui/settingsdlg.cpp:220
 msgctxt "SettingsDlg|"
 msgid "Reload Settings"
-msgstr ""
+msgstr "ਸੈਟਿੰਗ ਮੁੜ-ਲੋਡ"
 
 #: ../src/qtui/settingsdlg.cpp:220
 msgctxt "SettingsDlg|"
@@ -5240,7 +5277,7 @@ msgstr ""
 #: ../src/qtui/settingsdlg.cpp:231
 msgctxt "SettingsDlg|"
 msgid "Restore Defaults"
-msgstr ""
+msgstr "ਮੂਲ ਮੁੜ-ਸਟੋਰ ਕਰੋ"
 
 #: ../src/qtui/settingsdlg.cpp:231
 msgctxt "SettingsDlg|"
@@ -5250,23 +5287,23 @@ msgstr ""
 #: ../src/qtui/ui/settingspagedlg.ui:14
 msgctxt "SettingsPageDlg|"
 msgid "Configure Quassel"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਸੰਰਚਨਾ"
 
 #: ../src/qtui/ui/settingspagedlg.ui:30
 msgctxt "SettingsPageDlg|"
 msgid "Settings"
-msgstr ""
+msgstr "ਸੈਟਿੰਗ"
 
 #: ../src/qtui/settingspagedlg.cpp:39
 #, qt-format
 msgctxt "SettingsPageDlg|"
 msgid "Configure %1"
-msgstr ""
+msgstr "%1 ਸੰਰਚਨਾ"
 
 #: ../src/qtui/settingspagedlg.cpp:120
 msgctxt "SettingsPageDlg|"
 msgid "Reload Settings"
-msgstr ""
+msgstr "ਸੈਟਿੰਗ ਮੁੜ-ਲੋਡ"
 
 #: ../src/qtui/settingspagedlg.cpp:120
 msgctxt "SettingsPageDlg|"
@@ -5276,7 +5313,7 @@ msgstr ""
 #: ../src/qtui/settingspagedlg.cpp:131
 msgctxt "SettingsPageDlg|"
 msgid "Restore Defaults"
-msgstr ""
+msgstr "ਮੂਲ ਮੁੜ-ਸਟੋਰ ਕਰੋ"
 
 #: ../src/qtui/settingspagedlg.cpp:131
 msgctxt "SettingsPageDlg|"
@@ -5286,22 +5323,22 @@ msgstr ""
 #: ../src/qtui/settingspages/shortcutsmodel.cpp:121
 msgctxt "ShortcutsModel|"
 msgid "Action"
-msgstr ""
+msgstr "ਐਕਸ਼ਨ"
 
 #: ../src/qtui/settingspages/shortcutsmodel.cpp:123
 msgctxt "ShortcutsModel|"
 msgid "Shortcut"
-msgstr ""
+msgstr "ਸ਼ਾਰਟਕੱਟ"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:14
 msgctxt "ShortcutsSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:22
 msgctxt "ShortcutsSettingsPage|"
 msgid "Search:"
-msgstr ""
+msgstr "ਖੋਜ:"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:62
 msgctxt "ShortcutsSettingsPage|"
@@ -5311,39 +5348,39 @@ msgstr ""
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:68
 msgctxt "ShortcutsSettingsPage|"
 msgid "Default:"
-msgstr ""
+msgstr "ਡਿਫਾਲਟ:"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:75
 #: ../src/qtui/settingspages/shortcutssettingspage.cpp:99
 #: ../src/qtui/settingspages/shortcutssettingspage.cpp:111
 msgctxt "ShortcutsSettingsPage|"
 msgid "None"
-msgstr ""
+msgstr "ਕੋਈ ਨਹੀਂ"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.ui:82
 msgctxt "ShortcutsSettingsPage|"
 msgid "Custom:"
-msgstr ""
+msgstr "ਕਸਟਮ:"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.cpp:65
 msgctxt "ShortcutsSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/shortcutssettingspage.cpp:65
 msgctxt "ShortcutsSettingsPage|"
 msgid "Shortcuts"
-msgstr ""
+msgstr "ਸ਼ਾਰਟਕੱਟ"
 
 #: ../src/common/signalproxy.cpp:736
 msgctxt "SignalProxy|"
 msgid "Disconnecting"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:28
 msgctxt "SimpleNetworkEditor|"
 msgid "Network name:"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ:"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:35
 msgctxt "SimpleNetworkEditor|"
@@ -5353,7 +5390,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:63
 msgctxt "SimpleNetworkEditor|"
 msgid "Servers"
-msgstr ""
+msgstr "ਸਰਵਰ"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:81
 msgctxt "SimpleNetworkEditor|"
@@ -5368,7 +5405,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:99
 msgctxt "SimpleNetworkEditor|"
 msgid "&Edit..."
-msgstr ""
+msgstr "...ਸੋਧ(&E)"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:116
 msgctxt "SimpleNetworkEditor|"
@@ -5378,7 +5415,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:119
 msgctxt "SimpleNetworkEditor|"
 msgid "&Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ(&A)"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:136
 msgctxt "SimpleNetworkEditor|"
@@ -5388,7 +5425,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:139
 msgctxt "SimpleNetworkEditor|"
 msgid "De&lete"
-msgstr ""
+msgstr "ਹਟਾਓ(&l)"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:165
 msgctxt "SimpleNetworkEditor|"
@@ -5399,7 +5436,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:182
 msgctxt "SimpleNetworkEditor|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:179
 msgctxt "SimpleNetworkEditor|"
@@ -5409,7 +5446,7 @@ msgstr ""
 #: ../src/qtui/ui/simplenetworkeditor.ui:226
 msgctxt "SimpleNetworkEditor|"
 msgid "Join Channels Automatically"
-msgstr ""
+msgstr "ਚੈਨਲ ਆਪਣੇ-ਆਪ ਹੀ ਜੁਆਇੰਨ ਕਰੋ"
 
 #: ../src/qtui/ui/simplenetworkeditor.ui:250
 msgctxt "SimpleNetworkEditor|"
@@ -5418,6 +5455,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr "ਪ੍ਰਾਈਵੇਟ ਸੁਨੇਹਾ"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "ਫਾਰਮ"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr "ਬੈਕਐਂਡ:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr "ਟਾਈਮ-ਆਉਟ:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
@@ -5431,97 +5504,97 @@ msgstr ""
 #: ../src/qtui/ui/sslinfodlg.ui:14
 msgctxt "SslInfoDlg|"
 msgid "Security Information"
-msgstr ""
+msgstr "ਸੁਰੱਖਿਆ ਜਾਣਕਾਰੀ"
 
 #: ../src/qtui/ui/sslinfodlg.ui:22
 msgctxt "SslInfoDlg|"
 msgid "<b>Hostname:</b>"
-msgstr ""
+msgstr "<b>ਹੋਸਟ-ਨਾਂ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:39
 msgctxt "SslInfoDlg|"
 msgid "<b>IP address:</b>"
-msgstr ""
+msgstr "<b>IP ਐਡਰੈੱਸ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:56
 msgctxt "SslInfoDlg|"
 msgid "<b>Encryption:</b>"
-msgstr ""
+msgstr "<b>ਇੰਕ੍ਰਿਪਸ਼ਨ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:73
 msgctxt "SslInfoDlg|"
 msgid "<b>Protocol:</b>"
-msgstr ""
+msgstr "<b>ਪਰੋਟੋਕਾਲ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:90
 msgctxt "SslInfoDlg|"
 msgid "<b>Certificate chain:</b>"
-msgstr ""
+msgstr "<b>ਸਰਟੀਫਿਕੇਟ ਚੇਨ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:120
 msgctxt "SslInfoDlg|"
 msgid "Subject"
-msgstr ""
+msgstr "ਵਿਸ਼ਾ"
 
 #: ../src/qtui/ui/sslinfodlg.ui:126 ../src/qtui/ui/sslinfodlg.ui:248
 msgctxt "SslInfoDlg|"
 msgid "<b>Common name:</b>"
-msgstr ""
+msgstr "<b>ਆਮ ਨਾਂ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:143 ../src/qtui/ui/sslinfodlg.ui:265
 msgctxt "SslInfoDlg|"
 msgid "<b>Organization:</b>"
-msgstr ""
+msgstr "<b>ਸੰਗਠਨ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:160 ../src/qtui/ui/sslinfodlg.ui:282
 msgctxt "SslInfoDlg|"
 msgid "<b>Organizational unit:</b>"
-msgstr ""
+msgstr "<b>ਸੰਗਠਨ ਯੂਨਿਟ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:177 ../src/qtui/ui/sslinfodlg.ui:299
 msgctxt "SslInfoDlg|"
 msgid "<b>Country:</b>"
-msgstr ""
+msgstr "<b>ਦੇਸ਼:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:194 ../src/qtui/ui/sslinfodlg.ui:316
 msgctxt "SslInfoDlg|"
 msgid "<b>State or province:</b>"
-msgstr ""
+msgstr "<b>ਸੂਬਾ ਜਾਂ ਖਿੱਤਾ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:231 ../src/qtui/ui/sslinfodlg.ui:353
 msgctxt "SslInfoDlg|"
 msgid "<b>Locality:</b>"
-msgstr ""
+msgstr "<b>ਟਿਕਾਣਾ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:242
 msgctxt "SslInfoDlg|"
 msgid "Issuer"
-msgstr ""
+msgstr "ਜਾਰੀ ਕਰਤਾ"
 
 #: ../src/qtui/ui/sslinfodlg.ui:367
 msgctxt "SslInfoDlg|"
 msgid "<b>Validity period:</b>"
-msgstr ""
+msgstr "<h4>ਵੈਧਤਾ ਪੀਰਿਅਡ:</h4>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:384
 msgctxt "SslInfoDlg|"
 msgid "<b>MD5 digest:</b>"
-msgstr ""
+msgstr "<b>MD5 ਡੀਜ਼ਿਟ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:401
 msgctxt "SslInfoDlg|"
 msgid "<b>SHA1 digest:</b>"
-msgstr ""
+msgstr "<b>SHA1 ਡੀਜ਼ਿਟ:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:431
 msgctxt "SslInfoDlg|"
 msgid "<b>Trusted:</b>"
-msgstr ""
+msgstr "<b>ਟਰੱਸਟ ਕੀਤੇ:</b>"
 
 #: ../src/qtui/sslinfodlg.cpp:71
 msgctxt "SslInfoDlg|"
 msgid "Yes"
-msgstr ""
+msgstr "ਹਾਂ"
 
 #: ../src/qtui/sslinfodlg.cpp:73
 msgctxt "SslInfoDlg|"
@@ -5532,7 +5605,7 @@ msgstr ""
 #, qt-format
 msgctxt "SslInfoDlg|"
 msgid "%1 to %2"
-msgstr ""
+msgstr "%1 ਤੋਂ %2"
 
 #: ../src/client/networkmodel.h:150
 msgctxt "StatusBufferItem|"
@@ -5542,12 +5615,12 @@ msgstr ""
 #: ../src/qtui/systemtray.cpp:68 ../src/qtui/systemtray.cpp:101
 msgctxt "SystemTray|"
 msgid "&Minimize"
-msgstr ""
+msgstr "ਘੱਟੋ-ਘੱਟ(&M)"
 
 #: ../src/qtui/systemtray.cpp:103
 msgctxt "SystemTray|"
 msgid "&Restore"
-msgstr ""
+msgstr "ਮੁੜ-ਸਟੋਰ(&R)"
 
 #: ../src/qtui/systraynotificationbackend.cpp:142
 #, qt-format
@@ -5560,7 +5633,7 @@ msgstr[1] ""
 #: ../src/qtui/systraynotificationbackend.cpp:156
 msgctxt "SystrayNotificationBackend::ConfigWidget|"
 msgid "Show a message in a popup"
-msgstr ""
+msgstr "ਪੋਪਅੱਪ ਲਈ ਇੱਕ ਸੁਨੇਹਾ ਵੇਖੋ(&p)"
 
 #: ../src/uisupport/tabcompleter.cpp:52
 msgctxt "TabCompleter|"
@@ -5580,17 +5653,17 @@ msgstr ""
 #: ../src/qtui/taskbarnotificationbackend.cpp:93
 msgctxt "TaskbarNotificationBackend::ConfigWidget|"
 msgid "Unlimited"
-msgstr ""
+msgstr "ਬੇਅੰਤ"
 
 #: ../src/qtui/taskbarnotificationbackend.cpp:94
 msgctxt "TaskbarNotificationBackend::ConfigWidget|"
 msgid " seconds"
-msgstr ""
+msgstr " ਸਕਿੰਟ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:31
 msgctxt "ToolBarActionProvider|"
 msgid "Connect"
-msgstr ""
+msgstr "ਕੁਨੈਕਟ ਕਰੋ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:31
 msgctxt "ToolBarActionProvider|"
@@ -5600,7 +5673,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:32
 msgctxt "ToolBarActionProvider|"
 msgid "Disconnect"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:32
 msgctxt "ToolBarActionProvider|"
@@ -5610,7 +5683,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:34
 msgctxt "ToolBarActionProvider|"
 msgid "Part"
-msgstr ""
+msgstr "ਭਾਗ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:34
 msgctxt "ToolBarActionProvider|"
@@ -5620,7 +5693,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:35
 msgctxt "ToolBarActionProvider|"
 msgid "Join"
-msgstr ""
+msgstr "ਜੁਆਇਨ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:35
 msgctxt "ToolBarActionProvider|"
@@ -5630,7 +5703,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:37
 msgctxt "ToolBarActionProvider|"
 msgid "Query"
-msgstr ""
+msgstr "ਕਿਊਰੀ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:37
 msgctxt "ToolBarActionProvider|"
@@ -5640,7 +5713,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:38
 msgctxt "ToolBarActionProvider|"
 msgid "Whois"
-msgstr ""
+msgstr "ਕੌਣ ਹੈ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:38
 msgctxt "ToolBarActionProvider|"
@@ -5650,7 +5723,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:40
 msgctxt "ToolBarActionProvider|"
 msgid "Op"
-msgstr ""
+msgstr "Op"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:40
 msgctxt "ToolBarActionProvider|"
@@ -5670,7 +5743,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:42
 msgctxt "ToolBarActionProvider|"
 msgid "Voice"
-msgstr ""
+msgstr "ਅਵਾਜ਼"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:42
 msgctxt "ToolBarActionProvider|"
@@ -5690,7 +5763,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:44
 msgctxt "ToolBarActionProvider|"
 msgid "Kick"
-msgstr ""
+msgstr "ਕਿੱਕ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:44
 msgctxt "ToolBarActionProvider|"
@@ -5710,7 +5783,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:46
 msgctxt "ToolBarActionProvider|"
 msgid "Kick/Ban"
-msgstr ""
+msgstr "ਠੁੱਡਾ/ਪਾਬੰਦੀ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:46
 msgctxt "ToolBarActionProvider|"
@@ -5720,7 +5793,7 @@ msgstr ""
 #: ../src/uisupport/toolbaractionprovider.cpp:51
 msgctxt "ToolBarActionProvider|"
 msgid "Connect to all"
-msgstr ""
+msgstr "ਸਭ ਨਾਲ ਕੁਨੈਕਟ"
 
 #: ../src/uisupport/toolbaractionprovider.cpp:58
 msgctxt "ToolBarActionProvider|"
@@ -5730,18 +5803,18 @@ msgstr ""
 #: ../src/qtui/ui/topicwidget.ui:32
 msgctxt "TopicWidget|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/ui/topicwidget.ui:79
 msgctxt "TopicWidget|"
 msgid "..."
-msgstr ""
+msgstr "..."
 
 #: ../src/qtui/topicwidget.cpp:120
 #, qt-format
 msgctxt "TopicWidget|"
 msgid "Users: %1"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ: %1"
 
 #: ../src/qtui/topicwidget.cpp:121
 #, qt-format
@@ -5752,12 +5825,12 @@ msgstr ""
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
 msgctxt "TopicWidgetSettingsPage|"
 msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
 
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
 msgctxt "TopicWidgetSettingsPage|"
 msgid "Custom font:"
-msgstr ""
+msgstr "ਕਸਟਮ ਫੋਂਟ:"
 
 #: ../src/qtui/settingspages/topicwidgetsettingspage.ui:50
 msgctxt "TopicWidgetSettingsPage|"
@@ -5772,7 +5845,7 @@ msgstr ""
 #: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
 msgctxt "TopicWidgetSettingsPage|"
 msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
 
 #: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
 msgctxt "TopicWidgetSettingsPage|"
@@ -5799,14 +5872,14 @@ msgstr ""
 #, qt-format
 msgctxt "UiStyle::StyledMessage|"
 msgid "%1"
-msgstr ""
+msgstr "%1"
 
 #. Action Message
 #: ../src/uisupport/uistyle.cpp:671
 #, qt-format
 msgctxt "UiStyle::StyledMessage|"
 msgid "%DN%1%DN %2"
-msgstr ""
+msgstr "%DN%1%DN %2"
 
 #. Nick Message
 #: ../src/uisupport/uistyle.cpp:675
@@ -5891,13 +5964,13 @@ msgstr ""
 #, qt-format
 msgctxt "UiStyle::StyledMessage|"
 msgid "[%1]"
-msgstr ""
+msgstr "[%1]"
 
 #: ../src/uisupport/uistyle.cpp:806
 #, qt-format
 msgctxt "UiStyle::StyledMessage|"
 msgid "<%1>"
-msgstr ""
+msgstr "<%1>"
 
 #: ../src/client/networkmodel.cpp:786
 #, qt-format
index 6752359..aa22d23 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:08+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Polish (http://www.transifex.com/projects/p/quassel/language/pl/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Wersja:</b> %1<br><b>Wersja protokołu:</b> %2<br><b>Built:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Pragniemy podziękować następującym kontrybutorom (w kolejności alfabetycznej) oraz wszystkim, których zapomnieliśmy wspomnieć tutaj:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2116,52 +2134,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2169,7 +2187,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2217,8 +2235,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2233,7 +2251,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2246,7 +2264,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2279,7 +2297,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2288,13 +2306,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2302,26 +2320,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2799,7 +2817,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2835,55 +2853,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4802,7 +4837,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4817,7 +4852,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5425,6 +5460,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index acfbbb2..b468e30 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Portuguese (http://www.transifex.com/projects/p/quassel/language/pt/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr "<b>Versão:</b> %1<br><b>Versão do Protocolo:</b> %2<br><b>Compilado:</
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -79,7 +79,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Um cliente de IRC moderno distribuído</b><br><br>&copy;2005-2012 pelo projecto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> no <a href=\"http://www.freenode.net\">Freenode</a><br><br>O Quassel IRC está duplamente licenciado em <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>A maioria dos ícones são &copy; pela <a href=\"http://www.oxygen-icons.org\">Equipa Oxygen</a> e usado sob a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Por favor use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para reportar os erros."
+msgstr "<b>Um cliente de IRC moderno distribuído</b><br><br>&copy;%1 pelo projecto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> no <a href=\"http://www.freenode.net\">Freenode</a><br><br>O Quassel IRC está duplamente licenciado em <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>A maioria dos ícones são &copy; pela <a href=\"http://www.oxygen-icons.org\">Equipa Oxygen</a> e usado sob a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Por favor use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para reportar os erros."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Gostaríamos de agradecer aos seguintes contribuidores (por ordem alfabética) e a todos que esquecemos de aqui mencionar:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurar..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiar Selecção"
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "A identidade já existe no cliente!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Conexão não encriptada cancelada"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "A conectar em %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "A sincronizar com o núcleo..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Conectado em %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "A autenticar..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Autenticação cancelada"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Regras Existentes"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Não foi possível inicializar qualquer núcleo de armazenamento! A sair ..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr "Actualmente, o Quassel suporta o SQLite3 e o PostgreSQL. Precisa compilar a\nsua biblioteca Qt com o 'plugin' sqlite ou postgres activado para que o quasselcore\nfuncione."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "A chamar restoreState() ainda que as sessões activas ainda existam!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Utilizador ou senha de administrador não definidos."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Não é possível configurar o armazenamento!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "A criar utilizador administrador..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Endereço de escuta inválido %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "A escutar para os clientes GUI em IPv6 %1 porto %2 usando o protocolo versão %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Não foi possível abrir o interface IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "A escutar para os clientes GUI em IPv4 %1 porto %2 usando o protocolo versão %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Não foi possível abrir o interface IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Endereço de escuta inválido %1, protocolo de rede desconhecido"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Não foi possível abrir qualquer interface de rede para escutar!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Cliente conectado de"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "A fechar servidor para configuração básica."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Cliente antigo a tentar conectar... a recusar."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>O seu Cliente Quassel é muito antigo!</b><br>Este núcleo precisa de pelo menos o cliente/núcleo com versão do protocolo %1.<br>Por favor considere actualizar o seu cliente."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Cliente"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "muito antigo, a rejeitar."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Núcleo Quassel versão %1</b><br>Compilado: %2<br>Up %3d%4h%5m (desde %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "A iniciar TLS para o Cliente:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Cliente não inicializado!</b><br>Precisa enviar uma mensagem de inicialização antes de se tentar autenticar."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "não enviou uma mensagem de inicialização antes de tentar autenticar, a rejeitar."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Nome de utilizador ou senha inválido!</b><br>O nome de utilizador/senha que indicou não pôde ser encontrado na base de dados."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "Inicializado e autenticados com sucesso como \"%1\" (Id do utilizador: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Cliente não autenticado desconectado."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Não foi possível inicializar a sessão para o cliente:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Não foi possível encontrar uma sessão para o cliente:"
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Cliente"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "muito antigo, a rejeitar."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "não enviou uma mensagem de inicialização antes de tentar autenticar, a rejeitar."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Cliente não inicializado!</b><br>Precisa enviar uma mensagem de inicialização antes de se tentar autenticar."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Nome de utilizador ou senha inválido!</b><br>O nome de utilizador/senha que indicou não pôde ser encontrado na base de dados."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Assistente de Configuração do Núcleo"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "O seu núcleo foi configurado com sucesso. A registá-lo em..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr "Configuração do núcleo falhada:<br><b>%1</b><br>Prima <em>Próximo</em> para começar novamente."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Este assistente irá guiá-lo através da configuração do seu Núcleo Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Criar Utilizador Administrador"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Primeiro, iremos criar um utilizador no núcleo. Este primeiro utilizador terá privilégios de administrador."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introdução"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Seleccionar Infraestrutura de Armazenamento"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Por favor seleccione uma infraestrutura de base de dados para o armazenamento do Núcleo Quassel  para guardar o histórico e outros dados."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Propriedades da Conexão"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Guardar As Suas Definições"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Conectar ao Núcleo"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "A rede está desligada"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Desconectado"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "A procurar %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "A conectar em %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Conectado em %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "A desconectar de %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "O Núcleo Quassel que está a tentar conectar é muito antigo! Por favor actualize."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Dados inválidos recebidos do núcleo"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Desconectado do núcleo."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Conexão não encriptada cancelada"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "A sincronizar com o núcleo..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>O Núcleo Quassel que está a tentar conectar é muito antigo!</b><br>Precisa de pelo menos um núcleo/cliente protocolo v%1 para conectar."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "A autenticar..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Autenticação cancelada"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "A receber estado da sessão"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "A sincronizar com %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "A receber estados da rede"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (desde %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Falha na conexão. A passar para o próximo servidor"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "A desconectar. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Encerramento do Núcleo"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Não foi possível conectar a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Falha na conexão: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Cliente"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "Desconectado (Id do utilizador: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr "Sessão do núcleo::criar rede(): Tenho identidade de rede inválida do núcleo  ao tentar criar rede %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr "enviar CTCP-%1 solicitar a %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr "destacar regra"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Renomear a Identidade"
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identidades"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Todas as identidades precisam definir um nome de identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Cada identidade precisa de pelo menos uma alcunha definida</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Precisa especificar um nome real para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Precisa especificar uma identificação para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Uma ou mais identidades são inválidas"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Apagar identidade?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Deseja realmente apagar a identidade \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reatribuir"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Núcleo Quassel versão %1</b><br>Compilado: %2<br>Up %3d%4h%5m (desde %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Geral"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Conectar ao Núcleo..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Desconectar do Núcleo"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Info do Núcleo..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configurar &Redes..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Sair"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurar Listas de Conversas..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Trancar Disposição"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Mostrar Barra de &Procura"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Mostrar Registo de Ausência"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Mostrar Barra de &Menus"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Mostrar &Barra de Estado"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Modo Ecrã Completo"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configurar o&s Atalhos..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurar Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Acerca do Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Acerca do &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Depurar Modelo da &Rede"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Depurar &BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Depurar &Modelo da Mensagem"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Depurar Lista &Preferida"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Depurar Re&gisto"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Recarregar Folha de Estilo"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navegação"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Saltar para a conversa preferida"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Definir Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Acesso Rápido #0"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Acesso Rápido #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Acesso Rápido #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Acesso Rápido #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Acesso Rápido #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Apagar Lista de Conversa?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Ir Para a Conversa"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Ir Para a Conversa"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Ficheiro"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Redes"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Ver"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Listas de &Conversa"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "Barras de &Ferramentas"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Definições"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "A&juda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Depurar"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Alcunhas"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Mostrar Lista de Alcunhas"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de Conversa"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Mostrar Monitorização da Conversa"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Linha de entrada"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Mostrar Linha de Entrada"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tópico"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Mostrar Linha do Tópico"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra de Ferramentas Principal"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Não conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Conexão Não Encriptada"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>O seu cliente não suporta encriptação SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Dados sensitivos, como as senhas, serão transmitidos desencriptados para o seu núcleo Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>O seu núcleo não suporta encriptação SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificado de Segurança Não Confiável"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>O certificado SSL fornecido pelo núcleo em %1 não é confiável pelas seguintes razões:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuar"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Mostrar Certificado"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Deseja aceitar este certificado para sempre sem ser solicitado?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Apenas Sessão Actual"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Para Sempre"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Erro de Conexão do Núcleo"
@@ -4797,7 +4832,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Uma alcunha válida pode conter letras do alfabeto Inglês, dígitos, e caracteres especiais {, }, [, ], \\, |, `, ^, _ e -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Adicionar Alcunha"
@@ -4812,7 +4847,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificações"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Selecionar arquivo de áudio"
@@ -5420,6 +5455,42 @@ msgid ""
 "network"
 msgstr "Uma lista de canais IRC em que irá entrar automaticamente após se conectar à rede"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulário"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " e"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 5040ce8..fee288f 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/quassel/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
@@ -71,7 +71,7 @@ msgstr "<b>Versão:</b> %1<br><b>Versão do Protocolo:</b> %2<br><b>Built:</b> %
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -82,7 +82,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Um moderno, cliente de IRC distribuído</b><br><br>&copy;2005-2012 pelo projeto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> no <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC está duplamente licenciado sobre <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>A maioria dos ícones são &copy; pelo <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> e utilizado sob a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Por favor use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para relatar um erro."
+msgstr "<b>Um moderno, cliente de IRC distribuído</b><br><br>&copy;%1 pelo projeto Quassel<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> no <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC está duplamente licenciado sobre <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> e <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>A maioria dos ícones são &copy; pelo <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> e utilizado sob a <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Por favor use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> para relatar um erro."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -96,7 +96,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Gostaríamos de agradecer aos seguintes colaboradores (em ordem alfabética) e a todos que esquecemos de mencionar aqui:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -809,7 +809,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurar..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiar seleção"
@@ -1028,6 +1028,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identidade já existe no cliente!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Conexão criptografada cancelada"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Conectando em %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Sincronizando com o núcleo..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Conectado a %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Entrando..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Sessão cancelada"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1343,12 +1399,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Regras existentes"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Não foi possível inicializar qualquer núcleo de armazenamento! sair ..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1356,147 +1412,93 @@ msgid ""
 "to work."
 msgstr "Atualmente, Quassel suporta SQLite3 e PostgreSQL. Você precisa construir a sua  \nbiblioteca Qt com o sqlite ou plug-in postgres ativado para quasselcore\nfuncionar."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Chamando restoreState() mas sessões ativas ainda existem!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Usuário ou senha de administrador não foram determinados."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Não podia configurar o armazenamento!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Criando usuário administrador..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Endereço de escuta inválido %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Ouvindo para GUI clientes de IPv6 %1 porta %2 usando o protocolo versão %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Não foi possível abrir interface IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Ouvindo para GUI clientes de IPv4 %1 porta %2 usando o protocolo versão %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Não foi possível abrir interface IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Endereço de escuta inválido %1, protocolo de rede desconhecido"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Não foi possível abrir qualquer interfaces de rede para escutar!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Cliente conectado a partir de"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Fechar servidor para configuração básica."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Cliente antigo tentando conectar...recusado."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Seu Quassel cliente é muito velho!</b><br>Este núcleo precisa de pelo menos cliente/núcleo versão do protocolo  %1.<br>Por favor considere atualizando seu cliente."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Cliente"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "muito velho, rejeitando."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Núcleo Quassel versão %1</b><br>Built: %2<br>Up %3d%4h%5m (desde %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Iniciando TLS para clientes:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Cliente não inicializado!</b><br>Você precisa enviar uma mensagem de inicialização antes de tentar fazer o login."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "não enviou uma mensagem de inicialização antes de tentar fazer o login, rejeitando."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Nome de usuário ou senha inválido!</b><br>O nome de usuário/senha que você forneceu não pôde ser encontrado no banco de dados."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "inicializado e autenticados com sucesso como \"%1\" (Identificação do usuário: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Não autenticado cliente desconectado."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Não foi possível inicializar sessão para o cliente:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Não foi possível encontrar uma sessão para o cliente:"
@@ -1637,17 +1639,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Núcleos remotos"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Cliente"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "muito velho, rejeitando."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "não enviou uma mensagem de inicialização antes de tentar fazer o login, rejeitando."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Cliente não inicializado!</b><br>Você precisa enviar uma mensagem de inicialização antes de tentar fazer o login."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Nome de usuário ou senha inválido!</b><br>O nome de usuário/senha que você forneceu não pôde ser encontrado no banco de dados."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Assistente de configuração de núcleo"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Seu núcleo foi configurado com sucesso. Registrando em..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1655,7 +1714,7 @@ msgid ""
 "over."
 msgstr "Configuração do núcleo falhou:<br><b>%1</b><br>pressione <em>próximo</em> para começar de novo."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1704,46 +1763,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Este assistente irá guiá-lo através da configuração do seu núcleo Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Criar usuário administrador"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Primeiro, vamos criar um usuário no núcleo. Este primeiro usuário terá privilégios de administrador."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introdução"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Selecionar infraestrutura de armazenamento"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Por favor selecione uma infraestrutura de banco de dados para o armazenamento do núcleo Quassel  para armazenar o histórico e outros dados dentro."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Propriedades da conexão"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Armazenar suas configurações"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1841,103 +1900,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Conectar ao núcleo"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "A rede não responde"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Desconectado"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Olhando para cima %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Conectando em %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Conectado a %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Desconectando de %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "O núcleo Quassel que você está tentando conectar é muito velho! Por favor faça atualização."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Dados inválidos recebidos do núcleo"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Desconectado do núcleo."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Conexão criptografada cancelada"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Sincronizando com o núcleo..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>O núcleo Quassel que você está tentando conectar é muito velho!</b><br>Necessita de pelo menos núcleo/cliente protocolo v%1 para conectar."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Entrando..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Sessão cancelada"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Recebendo estado da sessão"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Sincronização com %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Recebendo estados da rede"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2117,52 +2135,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (desde %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Falha na conexão. Passando para o próximo servidor"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Desconectando. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Desligando núcleo"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Não foi possível conectar a %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Falha na conexão: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Cliente"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "Desconectado (identidade do usuário: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2170,7 +2188,7 @@ msgid ""
 " create network %1!"
 msgstr "Sessão do núcleo::criar rede(): Tenho identidade de rede inválida do núcleo  ao tentar criar rede %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2218,8 +2236,8 @@ msgstr "enviar CTCP-%1 solicitar a %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2234,7 +2252,7 @@ msgid ""
 msgstr "[uso] /delkey <apelido|canal> remove a chave de encriptação para um apelido ou canal ou apenas /delkey quando em um canal ou consulta."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2247,7 +2265,7 @@ msgid "The key for %1 has been deleted."
 msgstr "A chave para %1 foi excluída."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2280,7 +2298,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2289,13 +2307,13 @@ msgid ""
 "with QCA present."
 msgstr "Erro: Definir uma chave de encriptação requer que o Quassel tenha sido construído com suporte para a biblioteca de arquitetura criptográfica do QT (QCA). Contate o seu distribuidor sobre um pacote com suporte a QCA, ou recompile o Quassel com QCA presente."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2303,26 +2321,26 @@ msgid ""
 "it."
 msgstr "[uso] /setkey <apelido|canal> <chave> define a chave de encriptação para um apelido ou canal. /setkey <chave> quando em um canal ou buffer de consulta define a chave para ele."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "A senha para %1 foi definida."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[uso] /delkey <apelido|canal> remove a chave de encriptação para um apelido ou canal ou apenas /delkey quando em um canal ou consulta."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2800,7 +2818,7 @@ msgid "highlight rule"
 msgstr "destacar regra"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Renomear identidade"
@@ -2836,55 +2854,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identidades"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Os seguintes problemas precisam ser corrigidos para que as alterações possam ser aplicadas :</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Todas as identidades precisam definir um nome de identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Cada identidade precisa de pelo menos um apelido definido</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Você precisa especificar um nome real para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Você precisa especificar uma identificação para cada identidade</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Uma ou mais identidades são inválidas"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Apagar identidade?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Você realmente quer apagar a identidade \" %1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reatribuir"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Núcleo Quassel versão %1</b><br>Built: %2<br>Up %3d%4h%5m (desde %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Geral"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Conectar-se ao núcleo..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Disconectar-se do núcleo"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Núcleo &informação..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Configurar &redes..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Sair"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurar listas de bate-papos..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "B&loquear leiaute"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Mostrar barra de pe&squisa"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Mostrar registro de ausência"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Mostrar barra de &menus"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Mostras status &barra"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Tela cheia"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Configurar atalho&s..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurar Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Sobre Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Sobre o &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Depuração &modelo de rede"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Depurar o BufferView Overlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Depuração &Modelo de mensagem"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Depuração &Lista de Servidores"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Depuração &Registro"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Recarregar folha de estilo"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navegação"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Ir para uma conversa"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Definir acesso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Definir acesso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Definir acesso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Definir acesso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Definir acesso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Definir acesso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Definir acesso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Definir acesso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Definir acesso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Definir acesso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Acesso rápido #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Acesso rápido #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Acesso rápido #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Acesso rápido #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Acesso rápido #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Acesso rápido #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Acesso rápido #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Acesso rápido #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Acesso rápido #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Acesso rápido #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Ativar lista de conversação seguinte"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Ativar lista de conversação anterior"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Ir para pŕoxima conversa"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Ir para conversa anterior"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Arquivo"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Redes"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Visualizar"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Listas de &bate-papo"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Barras de ferramentas"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Configurações"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "A&juda"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Depurar"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Apelidos"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Mostra lista de apelidos"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de conversa"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Mostrar monitor de bate-papo"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Linha de entrada"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Mostrar linha de entrada"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tópico"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Mostrar linha de tópico"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Barra de ferramentas principal"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Não conectado ao núcleo."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Conexão descriptografada"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Seu cliente não suporta encriptação SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Dados sensíveis, com senha, serão transmitidos não criptografados para seu núcleo Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Seu núcleo não suporta encriptação SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificado de segurança não confiável"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>O certificado SSL provido pelo núcleo em %1 não é confiável pelas seguintes razões:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuar"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Mostrar certificado"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Deseja sempre aceitar este certificado, sem que uma confirmação lhe seja pedida?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Apenas sessão atual"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Para sempre"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Erro de conexão ao núcleo"
@@ -4800,7 +4835,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Um apelido pode conter letras do alfabeto inglês, dígitos e caracteres especiais {, }, [, ], \\, |, `, ^, _ e -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Adicionar apelido"
@@ -4815,7 +4850,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificações"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Selecionar arquivo de áudio"
@@ -5423,6 +5458,42 @@ msgid ""
 "network"
 msgstr "Um lista de canais IRC que você ira entrar automaticamente após conectar a rede"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulário"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " e"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 44b9766..a0fc017 100755 (executable)
@@ -23,6 +23,13 @@ git add po/*.po po/LINGUAS && (
 
   git commit -em "Update translations from Transifex
 
+  $(for i in po/*.po; do
+      msgfmt --statistics $i
+    done |&
+    perl -ne '/([0-9]+) translated/ and $translated+=$1;
+              END { printf("%d translated messages", $translated); }'
+  )
+
 Many thanks to:
 ${translators}"
 )
index d6f146a..bef8205 100644 (file)
@@ -30,35 +30,22 @@ msgid ""
 "html>"
 msgstr ""
 
-#: ../src/qtui/ui/aboutdlg.ui:75
-msgctxt "AboutDlg|"
-msgid ""
-"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css"
-"\">\n"
-"p, li { white-space: pre-wrap; }\n"
-"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:10pt; "
-"font-weight:600; font-style:normal;\">\n"
-"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-"
-"right:0px; -qt-block-indent:0; text-indent:0px;\">Version 0.2.0-pre, Build "
-"&gt;= 474 (2008-02-08)</p></body></html>"
-msgstr ""
-
-#: ../src/qtui/ui/aboutdlg.ui:115
+#: ../src/qtui/ui/aboutdlg.ui:112
 msgctxt "AboutDlg|"
 msgid "&About"
 msgstr ""
 
-#: ../src/qtui/ui/aboutdlg.ui:135
+#: ../src/qtui/ui/aboutdlg.ui:132
 msgctxt "AboutDlg|"
 msgid "A&uthors"
 msgstr ""
 
-#: ../src/qtui/ui/aboutdlg.ui:155
+#: ../src/qtui/ui/aboutdlg.ui:152
 msgctxt "AboutDlg|"
 msgid "&Contributors"
 msgstr ""
 
-#: ../src/qtui/ui/aboutdlg.ui:175
+#: ../src/qtui/ui/aboutdlg.ui:172
 msgctxt "AboutDlg|"
 msgid "&Thanks To"
 msgstr ""
@@ -70,18 +57,19 @@ msgid "<b>Version:</b> %1<br><b>Protocol version:</b> %2<br><b>Built:</b> %3"
 msgstr ""
 
 #: ../src/qtui/aboutdlg.cpp:49
+#, qt-format
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
-"Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc."
-"org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a "
-"href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
-"licensed under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> "
-"and <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Most "
-"icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</"
-"a> and used under the <a href=\"http://www.gnu.org/licenses/lgpl.html"
-"\">LGPL</a>.<br><br>Please use <a href=\"http://bugs.quassel-irc.org"
-"\">http://bugs.quassel-irc.org</a> to report bugs."
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the Quassel "
+"Project<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</"
+"a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href="
+"\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-licensed "
+"under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> and <a "
+"href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Most icons "
+"are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> "
+"and used under the <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</"
+"a>.<br><br>Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs."
+"quassel-irc.org</a> to report bugs."
 msgstr ""
 
 #: ../src/qtui/aboutdlg.cpp:67
@@ -96,7 +84,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:201
+#: ../src/qtui/aboutdlg.cpp:206
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-eye.png\">&nbsp;"
@@ -468,7 +456,7 @@ msgctxt "BufferViewEditDlg|"
 msgid "Please enter a name for the chat list:"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:575
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:582
 msgctxt "BufferViewEditDlg|"
 msgid "Add Chat List"
 msgstr ""
@@ -509,7 +497,7 @@ msgid "Network:"
 msgstr ""
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:100
-#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:123
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:128
 msgctxt "BufferViewSettingsPage|"
 msgid "All"
 msgstr ""
@@ -543,40 +531,45 @@ msgstr ""
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:142
 msgctxt "BufferViewSettingsPage|"
-msgid "Add new chats automatically"
+msgid "Hide inactive networks"
 msgstr ""
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:149
 msgctxt "BufferViewSettingsPage|"
-msgid "Sort alphabetically"
+msgid "Add new chats automatically"
 msgstr ""
 
 #: ../src/qtui/settingspages/bufferviewsettingspage.ui:156
 msgctxt "BufferViewSettingsPage|"
+msgid "Sort alphabetically"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:163
+msgctxt "BufferViewSettingsPage|"
 msgid "Minimum Activity:"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.ui:164
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:171
 msgctxt "BufferViewSettingsPage|"
 msgid "No Activity"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.ui:169
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:176
 msgctxt "BufferViewSettingsPage|"
 msgid "Other Activity"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.ui:174
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:181
 msgctxt "BufferViewSettingsPage|"
 msgid "New Message"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.ui:179
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:186
 msgctxt "BufferViewSettingsPage|"
 msgid "Highlight"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.ui:205
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:212
 msgctxt "BufferViewSettingsPage|"
 msgid "Preview:"
 msgstr ""
@@ -591,12 +584,12 @@ msgctxt "BufferViewSettingsPage|"
 msgid "Custom Chat Lists"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:378
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:383
 msgctxt "BufferViewSettingsPage|"
 msgid "Delete Chat List?"
 msgstr ""
 
-#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:379
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:384
 #, qt-format
 msgctxt "BufferViewSettingsPage|"
 msgid "Do you really want to delete the chat list \"%1\"?"
@@ -607,27 +600,27 @@ msgctxt "BufferViewWidget|"
 msgid "BufferView"
 msgstr ""
 
-#: ../src/qtui/bufferwidget.cpp:78
+#: ../src/qtui/bufferwidget.cpp:79
 msgctxt "BufferWidget|"
 msgid "Zoom In"
 msgstr ""
 
-#: ../src/qtui/bufferwidget.cpp:84
+#: ../src/qtui/bufferwidget.cpp:85
 msgctxt "BufferWidget|"
 msgid "Zoom Out"
 msgstr ""
 
-#: ../src/qtui/bufferwidget.cpp:89
+#: ../src/qtui/bufferwidget.cpp:90
 msgctxt "BufferWidget|"
 msgid "Actual Size"
 msgstr ""
 
-#: ../src/qtui/bufferwidget.cpp:93
+#: ../src/qtui/bufferwidget.cpp:94
 msgctxt "BufferWidget|"
 msgid "Set Marker Line"
 msgstr ""
 
-#: ../src/qtui/bufferwidget.cpp:97
+#: ../src/qtui/bufferwidget.cpp:98
 msgctxt "BufferWidget|"
 msgid "Go to Marker Line"
 msgstr ""
@@ -768,7 +761,7 @@ msgid "Move selected buffers to the right"
 msgstr ""
 
 #: ../src/qtui/settingspages/chatmonitorsettingspage.ui:133
-#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:258
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:272
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Show:"
 msgstr ""
@@ -789,6 +782,26 @@ msgctxt "ChatMonitorSettingsPage|"
 msgid "Show own messages"
 msgstr ""
 
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:164
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Display messages from backlog on reconnect"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:167
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Show messages from backlog"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:192
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Include read messages from backlog on reconnect"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:195
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Include read messages"
+msgstr ""
+
 #: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:35
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Interface"
@@ -809,7 +822,7 @@ msgctxt "ChatMonitorSettingsPage|"
 msgid "Opt Out"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:261
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:275
 msgctxt "ChatMonitorSettingsPage|"
 msgid "Ignore:"
 msgstr ""
@@ -834,11 +847,17 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:813
+#: ../src/qtui/chatscene.cpp:815
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
 
+#: ../src/qtui/chatscene.cpp:822
+#, qt-format
+msgctxt "ChatScene|"
+msgid "Search '%1'"
+msgstr ""
+
 #: ../src/qtui/ui/chatviewsearchbar.ui:13
 msgctxt "ChatViewSearchBar|"
 msgid "Form"
@@ -939,96 +958,138 @@ msgstr ""
 
 #: ../src/qtui/settingspages/chatviewsettingspage.ui:159
 msgctxt "ChatViewSettingsPage|"
+msgid ""
+"Set the marker line to the bottom of the current chat window when Quassel "
+"loses focus."
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:162
+msgctxt "ChatViewSettingsPage|"
+msgid "Set marker line automatically when Quassel loses focus"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:168
+msgctxt "ChatViewSettingsPage|"
+msgid "AutoMarkerLineOnLostFocus"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:180
+msgctxt "ChatViewSettingsPage|"
+msgid "Web Search Url:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:187
+msgctxt "ChatViewSettingsPage|"
+msgid ""
+"<html><head/><body><p>The URL to open with the selected text as the "
+"parameter. Place <span style=\" font-weight:600;\">%s</span> where selected "
+"text should go.</p><p>Eg:</p><p>https://www.google.com/search?q=<span style="
+"\" font-weight:600;\">%s<br/></span>https://duckduckgo.com/?q=<span style=\" "
+"font-weight:600;\">%s</span></p></body></html>"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:190
+msgctxt "ChatViewSettingsPage|"
+msgid "WebSearchUrlFormat"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:193
+msgctxt "ChatViewSettingsPage|"
+msgid "https://www.google.com/search?q=%s"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:202
+msgctxt "ChatViewSettingsPage|"
 msgid "Custom Colors"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:177
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:220
 msgctxt "ChatViewSettingsPage|"
 msgid "Action:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:184
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:208
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:232
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:269
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:293
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:324
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:348
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:372
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:396
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:413
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:453
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:470
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:487
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:504
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:521
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:538
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:555
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:572
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:589
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:606
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:623
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:640
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:657
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:674
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:691
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:708
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:736
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:227
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:251
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:275
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:312
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:336
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:367
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:391
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:415
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:439
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:456
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:496
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:513
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:530
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:547
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:564
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:581
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:598
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:615
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:632
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:649
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:666
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:683
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:700
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:717
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:734
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:751
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:779
 msgctxt "ChatViewSettingsPage|"
 msgid "..."
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:201
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:244
 msgctxt "ChatViewSettingsPage|"
 msgid "Timestamp:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:225
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:268
 msgctxt "ChatViewSettingsPage|"
 msgid "Channel message:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:262
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:305
 msgctxt "ChatViewSettingsPage|"
 msgid "Highlight foreground:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:286
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:329
 msgctxt "ChatViewSettingsPage|"
 msgid "Command message:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:310
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:353
 msgctxt "ChatViewSettingsPage|"
 msgid "Highlight background:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:317
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:360
 msgctxt "ChatViewSettingsPage|"
 msgid "Server message:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:341
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:384
 msgctxt "ChatViewSettingsPage|"
 msgid "Marker line:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:365
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:408
 msgctxt "ChatViewSettingsPage|"
 msgid "Error message:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:389
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:432
 msgctxt "ChatViewSettingsPage|"
 msgid "Background:"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:433
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:476
 msgctxt "ChatViewSettingsPage|"
 msgid "Use Sender Coloring"
 msgstr ""
 
-#: ../src/qtui/settingspages/chatviewsettingspage.ui:729
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:772
 msgctxt "ChatViewSettingsPage|"
 msgid "Own messages:"
 msgstr ""
@@ -1048,29 +1109,66 @@ msgctxt "ChatViewSettingsPage|"
 msgid "You need at least version 0.6 of quasselcore to use this feature"
 msgstr ""
 
-#: ../src/client/client.cpp:318
+#: ../src/client/client.cpp:320
 msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:61
-#: ../src/client/clientauthhandler.cpp:256
+#: ../src/client/clientauthhandler.cpp:65
+#: ../src/client/clientauthhandler.cpp:463
 msgctxt "ClientAuthHandler|"
 msgid "Unencrypted connection canceled"
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:84
+#: ../src/client/clientauthhandler.cpp:87
+#: ../src/client/clientauthhandler.cpp:103
 #, qt-format
 msgctxt "ClientAuthHandler|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:154
+#: ../src/client/clientauthhandler.cpp:99
+#, qt-format
 msgctxt "ClientAuthHandler|"
-msgid "Synchronizing to core..."
+msgid "Looking up %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:106
+#: ../src/client/clientauthhandler.cpp:307
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:110
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:167
+#: ../src/client/clientauthhandler.cpp:114
+msgctxt "ClientAuthHandler|"
+msgid "Disconnected"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:147
+msgctxt "ClientAuthHandler|"
+msgid "Reconnecting in compatibility mode..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:228
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>Incompatible Quassel Core!</b><br>None of the protocols this client "
+"speaks are supported by the core you are trying to connect to."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:231
+msgctxt "ClientAuthHandler|"
+msgid "Core speaks none of the protocols we support"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:246
 #, qt-format
 msgctxt "ClientAuthHandler|"
 msgid ""
@@ -1078,35 +1176,34 @@ msgid ""
 "at least protocol v%1, but the core speaks v%2 only."
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:169
+#: ../src/client/clientauthhandler.cpp:248
 msgctxt "ClientAuthHandler|"
 msgid "Incompatible protocol version, connection to core refused"
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:176
+#: ../src/client/clientauthhandler.cpp:270
 msgctxt "ClientAuthHandler|"
-msgid "The core refused connection from this client"
+msgid "Synchronizing to core..."
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:207
+#: ../src/client/clientauthhandler.cpp:285
 msgctxt "ClientAuthHandler|"
-msgid "Unencrypted connection cancelled"
+msgid "The core refused connection from this client"
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:275
-#, qt-format
+#: ../src/client/clientauthhandler.cpp:349
 msgctxt "ClientAuthHandler|"
-msgid "Connected to %1"
+msgid "Logging in..."
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:317
+#: ../src/client/clientauthhandler.cpp:354
 msgctxt "ClientAuthHandler|"
-msgid "Logging in..."
+msgid "Login canceled"
 msgstr ""
 
-#: ../src/client/clientauthhandler.cpp:322
+#: ../src/client/clientauthhandler.cpp:412
 msgctxt "ClientAuthHandler|"
-msgid "Login canceled"
+msgid "Unencrypted connection cancelled"
 msgstr ""
 
 #: ../src/client/clientbacklogmanager.cpp:178
@@ -1424,12 +1521,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:193
+#: ../src/core/core.cpp:191
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:194
+#: ../src/core/core.cpp:192
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1438,93 +1535,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:253
+#: ../src/core/core.cpp:251
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:287
+#: ../src/core/core.cpp:285
 msgctxt "Core|"
 msgid "Core is already configured! Not configuring again..."
 msgstr ""
 
-#: ../src/core/core.cpp:290
+#: ../src/core/core.cpp:288
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:293
+#: ../src/core/core.cpp:291
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:296
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:451
+#: ../src/core/core.cpp:449
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:458
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:469
+#: ../src/core/core.cpp:467
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:477
+#: ../src/core/core.cpp:475
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:486
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:496
+#: ../src/core/core.cpp:494
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:505
+#: ../src/core/core.cpp:503
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:545
+#: ../src/core/core.cpp:543
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:548
+#: ../src/core/core.cpp:546
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:560
+#: ../src/core/core.cpp:558
 msgctxt "Core|"
 msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:592
+#: ../src/core/core.cpp:590
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:619
+#: ../src/core/core.cpp:617
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1665,17 +1762,17 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+#: ../src/core/coreauthhandler.cpp:126 ../src/core/coreauthhandler.cpp:138
 msgctxt "CoreAuthHandler|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:54
+#: ../src/core/coreauthhandler.cpp:126
 msgctxt "CoreAuthHandler|"
 msgid "too old, rejecting."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:55
+#: ../src/core/coreauthhandler.cpp:127
 #, qt-format
 msgctxt "CoreAuthHandler|"
 msgid ""
@@ -1683,44 +1780,44 @@ msgid ""
 "core protocol version %1 (got: %2).<br>Please consider upgrading your client."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:69
-msgctxt "CoreAuthHandler|"
-msgid "Starting encryption for Client:"
-msgstr ""
-
-#: ../src/core/coreauthhandler.cpp:90
+#: ../src/core/coreauthhandler.cpp:138
 msgctxt "CoreAuthHandler|"
-msgid "did not send an init message before trying to login, rejecting."
+msgid "did not send a registration message before trying to login, rejecting."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:91
+#: ../src/core/coreauthhandler.cpp:139
 msgctxt "CoreAuthHandler|"
 msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
+"<b>Client not initialized!</b><br>You need to send a registration message "
+"before trying to login."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:105
+#: ../src/core/coreauthhandler.cpp:156
 msgctxt "CoreAuthHandler|"
 msgid ""
 "<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
 "core."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:146
+#: ../src/core/coreauthhandler.cpp:196
 msgctxt "CoreAuthHandler|"
 msgid ""
 "<b>Invalid username or password!</b><br>The username/password combination "
 "you supplied could not be found in the database."
 msgstr ""
 
-#: ../src/core/coreauthhandler.cpp:151
+#: ../src/core/coreauthhandler.cpp:201
 #, qt-format
 msgctxt "CoreAuthHandler|"
 msgid ""
 "Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:220
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
@@ -1931,57 +2028,33 @@ msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
+#: ../src/client/coreconnection.cpp:276
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:230
-#, qt-format
-msgctxt "CoreConnection|"
-msgid "Looking up %1..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:233
-#, qt-format
-msgctxt "CoreConnection|"
-msgid "Connecting to %1..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:236
-#, qt-format
-msgctxt "CoreConnection|"
-msgid "Connected to %1"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:239
-#, qt-format
-msgctxt "CoreConnection|"
-msgid "Disconnecting from %1..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:363
+#: ../src/client/coreconnection.cpp:311
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:501
+#: ../src/client/coreconnection.cpp:451
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:503
+#: ../src/client/coreconnection.cpp:453
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:539
+#: ../src/client/coreconnection.cpp:489
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:590
+#: ../src/client/coreconnection.cpp:540
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2161,52 +2234,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:167
+#: ../src/core/corenetwork.cpp:166
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
+#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:228
+#: ../src/core/corenetwork.cpp:229
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:228
+#: ../src/core/corenetwork.cpp:229
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:423
+#: ../src/core/corenetwork.cpp:424
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:425
+#: ../src/core/corenetwork.cpp:426
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:227
+#: ../src/core/coresession.cpp:230
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:227
+#: ../src/core/coresession.cpp:230
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:474
+#: ../src/core/coresession.cpp:477
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2214,40 +2287,77 @@ msgid ""
 "create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:506
+#: ../src/core/coresession.cpp:509
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
 "exists, updating instead!"
 msgstr ""
 
-#: ../src/core/coresessioneventprocessor.cpp:75
+#: ../src/core/coresessioneventprocessor.cpp:78
 msgctxt "CoreSessionEventProcessor|"
 msgid ""
 "No free and valid nicks in nicklist found. use: /nick <othernick> to continue"
 msgstr ""
 
-#: ../src/core/coresessioneventprocessor.cpp:447
+#: ../src/core/coresessioneventprocessor.cpp:450
 msgctxt "CoreSessionEventProcessor|"
 msgid "Unable to perform key exchange, missing qca-ossl plugin."
 msgstr ""
 
-#: ../src/core/coresessioneventprocessor.cpp:458
+#: ../src/core/coresessioneventprocessor.cpp:461
 msgctxt "CoreSessionEventProcessor|"
 msgid "Unable to parse the DH1080_INIT. Key exchange failed."
 msgstr ""
 
-#: ../src/core/coresessioneventprocessor.cpp:462
-#: ../src/core/coresessioneventprocessor.cpp:470
+#: ../src/core/coresessioneventprocessor.cpp:465
+#: ../src/core/coresessioneventprocessor.cpp:473
 msgctxt "CoreSessionEventProcessor|"
 msgid "Your key is set and messages will be encrypted."
 msgstr ""
 
-#: ../src/core/coresessioneventprocessor.cpp:472
+#: ../src/core/coresessioneventprocessor.cpp:475
 msgctxt "CoreSessionEventProcessor|"
 msgid "Failed to parse DH1080_FINISH. Key exchange failed."
 msgstr ""
 
+#: ../src/core/coresessioneventprocessor.cpp:1056
+msgctxt "CoreSessionEventProcessor|"
+msgid "Reverse DCC SEND not supported"
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:1074
+#, qt-format
+msgctxt "CoreSessionEventProcessor|"
+msgid "DCC %1 not supported"
+msgstr ""
+
+#: ../src/core/coretransfer.cpp:58
+msgctxt "CoreTransfer|"
+msgid "Socket closed while still transferring!"
+msgstr ""
+
+#: ../src/core/coretransfer.cpp:70
+#, qt-format
+msgctxt "CoreTransfer|"
+msgid "DCC connection error: %1"
+msgstr ""
+
+#: ../src/core/coretransfer.cpp:114
+msgctxt "CoreTransfer|"
+msgid "Reverse DCC not supported yet!"
+msgstr ""
+
+#: ../src/core/coretransfer.cpp:160
+msgctxt "CoreTransfer|"
+msgid "DCC Receive: Got more data than expected!"
+msgstr ""
+
+#: ../src/core/coretransfer.cpp:176
+msgctxt "CoreTransfer|"
+msgid "DCC Receive: Quassel Client disconnected during transfer!"
+msgstr ""
+
 #: ../src/core/coreuserinputhandler.cpp:88
 msgctxt "CoreUserInputHandler|"
 msgid "away"
@@ -2259,38 +2369,38 @@ msgctxt "CoreUserInputHandler|"
 msgid "sending CTCP-%1 request to %2"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:190
-#: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:606
-#: ../src/core/coreuserinputhandler.cpp:644
+#: ../src/core/coreuserinputhandler.cpp:193
+#: ../src/core/coreuserinputhandler.cpp:364
+#: ../src/core/coreuserinputhandler.cpp:609
+#: ../src/core/coreuserinputhandler.cpp:647
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl "
 "plugin."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:201
+#: ../src/core/coreuserinputhandler.cpp:204
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /delkey <nick|channel> deletes the encryption key for nick or "
 "channel or just /delkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:662
+#: ../src/core/coreuserinputhandler.cpp:211
+#: ../src/core/coreuserinputhandler.cpp:665
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:213
+#: ../src/core/coreuserinputhandler.cpp:216
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been deleted."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:670
+#: ../src/core/coreuserinputhandler.cpp:220
+#: ../src/core/coreuserinputhandler.cpp:673
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2299,30 +2409,30 @@ msgid ""
 "with QCA2 present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:371
+#: ../src/core/coreuserinputhandler.cpp:374
 msgctxt "CoreUserInputHandler|"
 msgid "[usage] /keyx [<nick>] Initiates a DH1080 key exchange with the target."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:378
+#: ../src/core/coreuserinputhandler.cpp:381
 msgctxt "CoreUserInputHandler|"
 msgid "It is only possible to exchange keys in a query buffer."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:388
+#: ../src/core/coreuserinputhandler.cpp:391
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Failed to initiate key exchange with %1."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:393
+#: ../src/core/coreuserinputhandler.cpp:396
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Initiated key exchange with %1."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:628
+#: ../src/core/coreuserinputhandler.cpp:400
+#: ../src/core/coreuserinputhandler.cpp:631
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2331,39 +2441,39 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:556
+#: ../src/core/coreuserinputhandler.cpp:559
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:616
+#: ../src/core/coreuserinputhandler.cpp:619
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
 "channel. /setkey <key> when in a channel or query buffer sets the key for it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:625
+#: ../src/core/coreuserinputhandler.cpp:628
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:654
+#: ../src/core/coreuserinputhandler.cpp:657
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel "
 "or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:666
+#: ../src/core/coreuserinputhandler.cpp:669
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:794
+#: ../src/core/coreuserinputhandler.cpp:797
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2389,6 +2499,17 @@ msgctxt "CreateIdentityDlg|"
 msgid "Duplicate:"
 msgstr ""
 
+#: ../src/common/protocols/datastream/datastreampeer.cpp:115
+msgctxt "DataStreamPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/datastream/datastreampeer.cpp:162
+#, qt-format
+msgctxt "DataStreamPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
 #: ../src/qtui/ui/debugbufferviewoverlay.ui:13
 msgctxt "DebugBufferViewOverlay|"
 msgid "Debug BufferView Overlay"
@@ -2689,7 +2810,6 @@ msgctxt "EventStringifier|"
 msgid "sending CTCP-%1 request to %2"
 msgstr ""
 
-#. Optional "unknown" in "Received unknown CTCP-FOO request by bar"
 #: ../src/core/eventstringifier.cpp:717
 msgctxt "EventStringifier|"
 msgid "unknown"
@@ -2707,7 +2827,13 @@ msgctxt "EventStringifier|"
 msgid "Received CTCP-%1 answer from %2: %3"
 msgstr ""
 
-#: ../src/core/eventstringifier.cpp:736
+#: ../src/core/eventstringifier.cpp:737
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Received CTCP-PING answer from %1 with %2 milliseconds round trip time"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:740
 #, qt-format
 msgctxt "EventStringifier|"
 msgid "Received CTCP-PING answer from %1 with %2 seconds round trip time"
@@ -3608,7 +3734,7 @@ msgctxt "InputWidget|"
 msgid "Clear Color"
 msgstr ""
 
-#: ../src/qtui/inputwidget.cpp:133
+#: ../src/qtui/inputwidget.cpp:136
 msgctxt "InputWidget|"
 msgid "Focus Input Line"
 msgstr ""
@@ -3655,40 +3781,50 @@ msgstr ""
 
 #: ../src/qtui/settingspages/inputwidgetsettingspage.ui:127
 msgctxt "InputWidgetSettingsPage|"
+msgid "Enables line wrapping for input."
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:130
+msgctxt "InputWidgetSettingsPage|"
+msgid "Line wrapping"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:143
+msgctxt "InputWidgetSettingsPage|"
 msgid "Multi-Line Editing"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:144
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:160
 msgctxt "InputWidgetSettingsPage|"
 msgid "Show at most"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:170
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:186
 msgctxt "InputWidgetSettingsPage|"
 msgid "lines"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:192
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:208
 msgctxt "InputWidgetSettingsPage|"
 msgid "Enable scrollbars"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:211
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:227
 msgctxt "InputWidgetSettingsPage|"
 msgid "Tab Completion"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:219
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:235
 msgctxt "InputWidgetSettingsPage|"
 msgid "Completion suffix:"
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:235
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:251
 msgctxt "InputWidgetSettingsPage|"
 msgid ": "
 msgstr ""
 
-#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:262
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:278
 msgctxt "InputWidgetSettingsPage|"
 msgid "Add space after nick when completing mid-sentence"
 msgstr ""
@@ -3964,396 +4100,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/common/protocols/legacy/legacypeer.cpp:175
+#: ../src/common/protocols/legacy/legacypeer.cpp:136
 msgctxt "LegacyPeer|"
 msgid "Invalid handshake message!"
 msgstr ""
 
-#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#: ../src/common/protocols/legacy/legacypeer.cpp:207
 #, qt-format
 msgctxt "LegacyPeer|"
 msgid "Unknown protocol message of type %1"
 msgstr ""
 
-#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#: ../src/common/protocols/legacy/legacypeer.cpp:256
 #, qt-format
 msgctxt "LegacyPeer|"
 msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:355
+#: ../src/qtui/mainwin.cpp:358
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:357
+#: ../src/qtui/mainwin.cpp:360
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:359
+#: ../src/qtui/mainwin.cpp:362
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:364
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:363
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:366
+#: ../src/qtui/mainwin.cpp:369
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:370
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:373
+#: ../src/qtui/mainwin.cpp:376
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:377
+#: ../src/qtui/mainwin.cpp:380
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:382
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:381
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:384
+#: ../src/qtui/mainwin.cpp:387
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:390
+#: ../src/qtui/mainwin.cpp:393
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:397
+#: ../src/qtui/mainwin.cpp:400
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
+#: ../src/qtui/mainwin.cpp:406 ../src/qtui/mainwin.cpp:410
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:416
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:418
+#: ../src/qtui/mainwin.cpp:421
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:422
+#: ../src/qtui/mainwin.cpp:425
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:424
+#: ../src/qtui/mainwin.cpp:427
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:426
+#: ../src/qtui/mainwin.cpp:429
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:428
+#: ../src/qtui/mainwin.cpp:431
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:433
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:432
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:435
+#: ../src/qtui/mainwin.cpp:438
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:439
+#: ../src/qtui/mainwin.cpp:442
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:441
+#: ../src/qtui/mainwin.cpp:444
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:453
+#: ../src/qtui/mainwin.cpp:456
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:455
+#: ../src/qtui/mainwin.cpp:458
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:457
+#: ../src/qtui/mainwin.cpp:460
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:459
+#: ../src/qtui/mainwin.cpp:462
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:461
+#: ../src/qtui/mainwin.cpp:464
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:463
+#: ../src/qtui/mainwin.cpp:466
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:465
+#: ../src/qtui/mainwin.cpp:468
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:467
+#: ../src/qtui/mainwin.cpp:470
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:472
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:474
+#: ../src/qtui/mainwin.cpp:477
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:476
+#: ../src/qtui/mainwin.cpp:479
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:478
+#: ../src/qtui/mainwin.cpp:481
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:480
+#: ../src/qtui/mainwin.cpp:483
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:482
+#: ../src/qtui/mainwin.cpp:485
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:484
+#: ../src/qtui/mainwin.cpp:487
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:486
+#: ../src/qtui/mainwin.cpp:489
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:488
+#: ../src/qtui/mainwin.cpp:491
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:490
+#: ../src/qtui/mainwin.cpp:493
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:492
+#: ../src/qtui/mainwin.cpp:495
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:496
+#: ../src/qtui/mainwin.cpp:499
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:498
+#: ../src/qtui/mainwin.cpp:501
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:500
+#: ../src/qtui/mainwin.cpp:503
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:502
+#: ../src/qtui/mainwin.cpp:505
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:511
+#: ../src/qtui/mainwin.cpp:514
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:524
+#: ../src/qtui/mainwin.cpp:527
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:530
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:531
+#: ../src/qtui/mainwin.cpp:534
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:533
+#: ../src/qtui/mainwin.cpp:536
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:547
+#: ../src/qtui/mainwin.cpp:550
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:556
+#: ../src/qtui/mainwin.cpp:559
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:564
+#: ../src/qtui/mainwin.cpp:567
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:840
+#: ../src/qtui/mainwin.cpp:843
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:849
+#: ../src/qtui/mainwin.cpp:852
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:862
+#: ../src/qtui/mainwin.cpp:865
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:874
+#: ../src/qtui/mainwin.cpp:877
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:880
+#: ../src/qtui/mainwin.cpp:883
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:889
+#: ../src/qtui/mainwin.cpp:892
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:904
+#: ../src/qtui/mainwin.cpp:907
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:916
+#: ../src/qtui/mainwin.cpp:919
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1010
+#: ../src/qtui/mainwin.cpp:1013
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1053
+#: ../src/qtui/mainwin.cpp:1074
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1152
+#: ../src/qtui/mainwin.cpp:1173
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
+#: ../src/qtui/mainwin.cpp:1191 ../src/qtui/mainwin.cpp:1201
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1170
+#: ../src/qtui/mainwin.cpp:1191
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
+#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1180
+#: ../src/qtui/mainwin.cpp:1201
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
+#: ../src/qtui/mainwin.cpp:1219 ../src/qtui/mainwin.cpp:1240
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1199
+#: ../src/qtui/mainwin.cpp:1220
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4361,33 +4497,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1202
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1203
+#: ../src/qtui/mainwin.cpp:1224
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1220
+#: ../src/qtui/mainwin.cpp:1241
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1222
+#: ../src/qtui/mainwin.cpp:1243
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1223
+#: ../src/qtui/mainwin.cpp:1244
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1234
+#: ../src/qtui/mainwin.cpp:1255
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -5150,6 +5286,22 @@ msgctxt "QueryBufferItem|"
 msgid "server: %1"
 msgstr ""
 
+#: ../src/qtui/ui/receivefiledlg.ui:14
+msgctxt "ReceiveFileDlg|"
+msgid "Incoming File Transfer"
+msgstr ""
+
+#: ../src/qtui/receivefiledlg.cpp:35
+#, qt-format
+msgctxt "ReceiveFileDlg|"
+msgid "<b>%1</b> wants to send you a file:<br>%2 (%3 bytes)"
+msgstr ""
+
+#: ../src/common/remotepeer.cpp:69
+msgctxt "RemotePeer|"
+msgid "Disconnecting..."
+msgstr ""
+
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:13
 msgctxt "SaveIdentitiesDlg|"
 msgid "Sync With Core"
@@ -5405,7 +5557,7 @@ msgctxt "ShortcutsSettingsPage|"
 msgid "Shortcuts"
 msgstr ""
 
-#: ../src/common/signalproxy.cpp:736
+#: ../src/common/signalproxy.cpp:758
 msgctxt "SignalProxy|"
 msgid "Disconnecting"
 msgstr ""
@@ -5488,8 +5640,7 @@ msgid ""
 "network"
 msgstr ""
 
-#: ../src/qtui/snorenotificationbackend.cpp:61
-#: ../src/qtui/snorenotificationbackend.cpp:100
+#: ../src/qtui/snorenotificationbackend.cpp:60
 msgctxt "SnoreNotificationBackend|"
 msgid "Private Message"
 msgstr ""
index cb58d86..ff7df72 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,13 +1,14 @@
 # 
 # Translators:
 # roentgen <arthur.titeica@gmail.com>, 2013
+# roentgen <arthur.titeica@gmail.com>, 2013
 # Sergiu Bivol <sergiu@ase.md>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
-"Last-Translator: roentgen <arthur.titeica@gmail.com>\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
+"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Romanian (http://www.transifex.com/projects/p/quassel/language/ro/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -68,7 +69,7 @@ msgstr "<b>Versiune:</b> %1<br><b>Versiune protocol:</b> %2<br><b>Construit:</b>
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Dorim să mulțumim următorilor contribuitori (în ordine alfabetică) și tuturor pe care am uitat să îi menționăm aici:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Configurare..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Copiază selecția"
@@ -1025,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identitatea există deja în client!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Conexiune necriptată anulată"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Se conectează la %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Se sincronizează cu nucleul..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Conectat la %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Autentificare..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Autentificare anulată"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Reguli existente"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1410,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Stocarea nu poate fi configurată!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Se creează utilizatorul pentru administrare..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Adresă de ascultare %1 nevalidă"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Nu s-au putut deschide interfețe de rețea pentru ascultare!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Client conectat de la"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Client"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "prea vechi, se respinge."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Nu s-a putut inițializa sesiunea pentru clientul:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Nu s-a putut găsi o sesiune pentru clientul:"
@@ -1634,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Nuclee distante"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Client"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "prea vechi, se respinge."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Asistent de configurare a nucleului"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Nucleul a fost configurat cu succes. În curs de autentificare..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1712,7 @@ msgid ""
 "over."
 msgstr "Configurarea nucleului a eșuat:<br><b>%1</b><br>Apăsați <em>Următor</em> pentru a începe din nou."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Acest asistent vă va ghida prin configurarea Quassel Core"
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Creează utilizator pentru administrare"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introducere"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Alegeți platforma de stocare"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Proprietăți conexiune"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Se stochează configurările"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Conectează la nucleu"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Rețeaua e oprită"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Deconectat"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Se caută %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Se conectează la %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Conectat la %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Se deconectează de la %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Date nevalide primite de la nucleu"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Deconectat de la nucleu."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Conexiune necriptată anulată"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Se sincronizează cu nucleul..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Autentificare..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Autentificare anulată"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Se primește starea sesiunii"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Se sincronizează cu %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Se primesc stările rețelelor"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2134,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (din %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Conexiunea a eșuat. Se ciclează la următorul server"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Se conectează la %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Se deconectează. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Nu s-a putut conecta la %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Eșec la conectare: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Client"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "deconectat (UserId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2187,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2235,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2251,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2264,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Tasta pentru %1 a fost ștearsă."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2297,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2306,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Începe interogarea cu %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2320,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Cheia pentru %1 a fost stabilită."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr "Cheia pentru %1 este %2:%3"
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2817,7 @@ msgid "highlight rule"
 msgstr "regulă de evidențiere"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Redenumește identitatea"
@@ -2834,55 +2853,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identități"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Următoarele probleme trebuiesc corectate înainte să poată fi aplicate modificările:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Toate identitățile necesită o denumire de identitate</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Fiecare identitate necesită cel puțin o poreclă definită</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Trebuie să specificați un nume real pentru fiecare identitate</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Una sau mai multe identități nu sînt valide"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Se șterge identitatea?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Sigur doriți să ștergeți identitatea „%1”?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3914,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Reatribuie"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "General"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Conectare la nucleu..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Deconectează de la nucleu"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Informații nucleu..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Co&nfigurare rețele..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Ieșire"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Configurează liste de discuții..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "B&lochează aranjamentul"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Arată bara de &căutare"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Arată jurnalul plecărilor"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Arată bara de &meniu"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Arată &bara de stare"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Regim de ecran complet"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Confi&gurează acceleratorii..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Configurare Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "Despre Qu&assel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Despre &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Reîncarcă foaia de stil"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigare"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Stabilește acces rapid #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Stabilește acces rapid #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Stabilește acces rapid #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Stabilește acces rapid #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Stabilește acces rapid #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Stabilește acces rapid #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Stabilește acces rapid #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Stabilește acces rapid #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Stabilește acces rapid #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Stabilește acces rapid #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Acces rapid #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Acces rapid #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Acces rapid #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Acces rapid #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Acces rapid #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Acces rapid #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Acces rapid #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Acces rapid #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Acces rapid #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Acces rapid #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Activează următoarea listă de discuții"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Activează precedenta listă de discuții"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Mergi la următoarea discuție"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Mergi la precedenta discuție"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Fișier"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Rețele"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Vizualizare"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Liste de dis&cuții"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Bara de unelte"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Configurări"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Ajutor"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Depanare"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Porecle"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Arată lista de porecle"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Monitor de discuție"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Arată monitorul discuției"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Linie de introducere"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Arată linia de introducere"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Subiect"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Arată linia de subiect"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Bara de unelte principală"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Conectat la nucleu."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Neconectat la nucleu."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Conexiune necriptată"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Clientul dumneavoastră nu susține criptare SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Nucleul dumneavoastră nu susține criptare SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Certificat de securitate fără încredere"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4294,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Continuă"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Arată certificatul"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Doriți să accept acest ceritificat pentru totdeauna?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Numai sesiunea actuală"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Mereu"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Eroare de conectare la nucleu"
@@ -4801,7 +4837,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Adaugă poreclă"
@@ -4816,7 +4852,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notificări"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Alegeți fișierul audio"
@@ -5424,6 +5460,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formular"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 6f997e4..5f9f186 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Russian (http://www.transifex.com/projects/p/quassel/language/ru/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Версия:</b> %1<br><b>Версия протокола:</b> %2<br
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Мы хотим выразить благодарность следующим людям, внесшим свой вклад (в алфавитном порядке), а также всем, кого мы забыли здесь упомянуть:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Настроить..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Скопировать выделение"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Личность уже есть в клиенте!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Незашифрованное подключение отменено"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Соединяюсь с %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Синхронизация с ядром..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Соединение с %1 установлено"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Авторизуюсь..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Вход в систему отменен"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Имеющиеся правила"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Не могу инициализировать ни одно хранилище! Выхожу..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr "Сейчас, Quassel поддерживает SQLite3 и PostgreSQL. вам нужно создать свою\nбиблиотеку Qt с разрешенными в ядре Quassel плагинами sqlite или postgres\nдля работы."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Вызываю restoreState(), несмотря на существующие активные сессии!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Нет пользователя-администратора или пароля."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Не могу настроить хранилище!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Создаю пользователя-администратора..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Некорректный адрес для прослушивания %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Ожидаю графических клиентов по адресу IPv6 %1 порт %2, использую протокол версии %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Не могу открыть интерфейс IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Ожидаю графических клиентов по адресу IPv4 %1 порт %2, использую протокол версии %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Не могу открыть интерфейс IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Некорректный адрес для прослушивания %1, неизвестный сетевой протокол"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Не могу открыть ни один сетевой интерфейс для прослушивания!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Клиент соединился с"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Закрываю сервер для базовой настройки."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Древний клиент попытался подключиться... отказываю."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Ваш клиент Quassel слишком старый!</b><br>Этому ядру нужна версия клиент-серверного протокола по крайней мере %1.<br>Пожалуйста обновите клиент."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Клиент"
-
-#: ../src/core/core.cpp:564
 msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "слишком старый, отказываю."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Ядро Quassel версии %1</b><br>Собрано: %2<br>Аптайм %3д%4ч%5м (с %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Запускаю TLS для клиента:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Клиент не инициализирован!</b><br>Вам нужно отправить инициализационное сообщение перед попыткой входа."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "не отправил инициализационное сообщение перед попыткой входа, отказываю."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Неверное имя пользователя или пароль!</b><br>Предоставленные вами имя пользователя и пароль не найдены в базе."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "инициализирован и аутентифицирован успешно как \"%1\" (UserId: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Неавторизованный клиент отсоединён."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Не могу инициализировать сессию для клиента:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Не удалось найти сессии для клиента:"
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Удаленные Quassel Core сервера"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Клиент"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "слишком старый, отказываю."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "не отправил инициализационное сообщение перед попыткой входа, отказываю."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Клиент не инициализирован!</b><br>Вам нужно отправить инициализационное сообщение перед попыткой входа."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Неверное имя пользователя или пароль!</b><br>Предоставленные вами имя пользователя и пароль не найдены в базе."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Мастер конфигурации ядра"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Ваше ядро сконфигурировано успешно. Выполняю вход в..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr "Ошибка конфигурации ядра:<br><b>%1</b><br>Нажмите <em>Далее</em> чтобы начать сначала."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Этот мастер поможет вам настроить ядро Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Создание пользователя-администратора"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Для начала мы создадим пользователя в ядре. У этого первого пользователя будут привилегии администратора."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Введение"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Выбор средства хранения"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Пожалуйста выберите движок базы данных, с помощью которого ядро Quassel будет хранить журнал и прочие данные."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Свойства соединения"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Сохранение настроек"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Подключение к ядру"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Сеть недоступна"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Отключено"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Ищу хост %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
-msgstr ""
+msgstr "Соединяюсь с %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
-msgstr ""
+msgstr "Соединение с %1 установлено"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Идет отключение от %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Вы пытаетесь подключиться к слишком старому ядру Quassel! Пожалуйста обновите."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "От ядра были получены недопустимые данные"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "&Отключиться от ядра"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Незашифрованное подключение отменено"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Синхронизация с ядром..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Вы пытаетесь подключиться к слишком старому ядру Quassel!</b><br>Для соединения необходима поддержка клиент-серверного протокола по крайней мере версии %1."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Авторизуюсь..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Вход в систему отменен"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Получение состояния сетей"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Синхронизация с %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Получение состояния сетей"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2116,52 +2134,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (с %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Сбой соединения. Пробую следующий сервер"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Ядро завершает работу"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Не могу подсоединиться к %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Сбой соединения: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Клиент"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "отсоединён (UserId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2169,7 +2187,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): Получен неверный networkId от ядра, пытаясь создать сеть %1!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2217,8 +2235,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2233,7 +2251,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2246,7 +2264,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2279,7 +2297,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2288,13 +2306,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2302,26 +2320,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2799,7 +2817,7 @@ msgid "highlight rule"
 msgstr "правило подсветки"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Переименовать личность"
@@ -2835,55 +2853,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Личности"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Прежде чем сохранить настройки, необходимо устранить следующие проблемы:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>У всех личностей должно быть название</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>В каждой личности должен быть хотя бы один ник</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Вам нужно указать настоящее имя для каждой личности</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Вам нужно указать идент для каждой личности</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Одна или несколько личностей некорректны"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Удалить личность?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Вы действительно хотите удалить личность \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3933,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Ядро Quassel версии %1</b><br>Собрано: %2<br>Аптайм %3д%4ч%5м (с %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Общие"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Подключиться к ядру..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Отключиться от ядра"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "&Инфромация ядра..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Настроить &сети..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "В&ыход"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Настройка Списка Чата"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Блокировать расположение"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Показать строку &поиска"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Показать журнал отсутствия"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Показать строку &поиска"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Показать строку &статуса"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Настроить &сети..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Настройки Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&О Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "О &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Отладить &NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Отладить &MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "&Журнал отладки"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "&Журнал отладки"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Использовать свою таблицу стилей"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Организация:"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Удалить Чатлист?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Войти в Чат"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Войти в Чат"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Файл"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Сети"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Вид"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Список Чатов"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "Па&нели"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Настройки"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Помощь"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Отладка"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Ники"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Показать список ников"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Монитор чата"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Показать монитор чата"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Строкаввода"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Показать строку ввода"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Тема"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Показать строку темы"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Па&нели"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Соединение с ядром установлено."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Нет соединения с ядром."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Незашифрованное Подключение"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b> Ваш клиент не поддерживает SSL шифрование</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b> Ваше ядро не поддерживает SSL шифрование</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Недоверяемый Сертификат Безопасности"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4330,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Продолжить"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Показать Сертификаты"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Только Текущий Сеанс"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Основная Ошибка Подключения"
@@ -4802,7 +4837,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Корректный ник может содержать только буквы латинского алфавита, цифры и спецсимволы {, }, [, ], \\, |, `, ^, _ и -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Добавить ник"
@@ -4817,7 +4852,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Уведомления"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Выбрать звуковой файл"
@@ -5425,6 +5460,42 @@ msgid ""
 "network"
 msgstr "Список каналов IRC, на которые клиент будет автоматически заходить при подключении к сети"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Форма"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " сек"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index f1dfef5..5995a1a 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Slovenian (http://www.transifex.com/projects/p/quassel/language/sl/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr "<b>Različica:</b> %1<br><b>Različica protokola:</b> %2<br><b>Zgrajeno:
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -79,7 +79,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Moderen, porazdeljen odjemalec za IRC</b><br><br>&copy;2005-2012 projekt Quassel<br><a href=\"http://quassel-irc.org/\">quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> na <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC je izdan pod pogoji licenc <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> in <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a>.<br>Večina ikon je &copy; s strani <a href=\"http://www.oxygen-icons.org\">ekipe Oxygen</a> in uporabljenih pod pogoji <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Za poročanje o napakah obiščite stran <a href=\"http://bugs.quassel-irc.org\">bugs.quassel-irc.org</a>."
+msgstr "<b>Moderen, porazdeljen odjemalec za IRC</b><br><br>&copy;%1 projekt Quassel<br><a href=\"http://quassel-irc.org/\">quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> na <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC je izdan pod pogoji licenc <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> in <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a>.<br>Večina ikon je &copy; s strani <a href=\"http://www.oxygen-icons.org\">ekipe Oxygen</a> in uporabljenih pod pogoji <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Za poročanje o napakah obiščite stran <a href=\"http://bugs.quassel-irc.org\">bugs.quassel-irc.org</a>."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Radi bi se zahvalili sledečim sodelavcem (v abecednem vrstnem redu) in vsem, ki smo jih pozabili omeniti tu:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Nastavi ..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Skopiraj izbor"
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identiteta v odjemalcu že obstaja!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Nešifrirana povezava preklicana"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Povezovanje s %1 ..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Usklajevanje z jedrom ..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Povezan na %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Prijavljanje ..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Prijava preklicana"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Obstoječa pravila"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Ni bilo moč inicializirati nobene hrbtenice za shranjevanje. Končujem ..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr "Trenutno Quassel podpira SQLite3 in PostgreSQL. Za pravilno delovanje morate\nknjižnico Qt zgraditi z omogočenim vstavkom sqlite ali postgres."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Kličem restoreState(), čeprav obstajajo aktivne seje!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Skrbniški uporabnik, ali geslo zanj, ni nastavljen."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Ni moč nastaviti shranjevanja!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Ustvarjanje skrbniškega uporabnika ..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Neveljaven naslov za poslušanje (%1)"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Odjemalce poslušam na IPv6 %1, vratih %2, z uporabo protokola različice %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Ni moč odpreti vmesnika IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Odjemalce poslušam na IPv4 %1, vratih %2, z uporabo protokola različice %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Ni moč odpreti vmesnika IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Neveljaven naslov za poslušanje (%1), neznan omrežni protokol"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Ni moč odpreti nobenega omrežnega vmesnika za poslušanje!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Odjemalec se je povezal z"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Zapiram strežnik za osnovno nastavitev."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Zastarel odjemalec se poskupa povezati... Zavračam ga."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Vaš odjemalec Quassel je prestar.</b><br>To jedro potrebuje vsaj protokol različice %1.<br>Razmislite o nadgradnji odjemalca."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Odjemalec"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "je prestar, zavračam ga."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Jedro Quassel različice %1</b><br>Zgrajeno: %2<br>Teče %3 d %4 u %5 m (od %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Zaganjanje TLS za odjemalca:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Odjemalec ni inicializiran.</b><br>Preden se poskusi prijaviti mora poslati inicializacijsko sporočilo."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "pred prijavo ni poslal inicializacijskega sporočila, zavračam ga."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Neveljavno uporabniško ime ali geslo.</b><br>Podane kombinacije uporabniškega imena in gesla ni moč najti v podatkovni zbirki."
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "je uspešno inicializiran in overjen kot »%1« (uporabniški ID: %2)."
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Prekinjena povezava z neoverjenim odjemalcem."
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Ni bilo moč inicializirati seje za odjemalca:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Ni bilo moč najti seje za odjemalca:"
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Oddaljena jedra"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Odjemalec"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "je prestar, zavračam ga."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "pred prijavo ni poslal inicializacijskega sporočila, zavračam ga."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Odjemalec ni inicializiran.</b><br>Preden se poskusi prijaviti mora poslati inicializacijsko sporočilo."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Neveljavno uporabniško ime ali geslo.</b><br>Podane kombinacije uporabniškega imena in gesla ni moč najti v podatkovni zbirki."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Čarovnik za nastavitev jedra"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Jedro je bilo uspešno nastavljeno. Prijavljanje ..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr "Nastavitev jedra ni uspela.<br><b>%1</b><br>Kliknite <em>Naprej</em>, da začnete znova."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Ta čarovnik vas bo vodil skozi namestitev jedra Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Ustvari skrbniškega uporabnika"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Najprej bomo ustvarili uporabnika pri jedru. Prvi uporabnik bo imel skrbniške pravice."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Uvod"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Izberite hrbtenico za shranjevanje"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Izberite hrbtenico za podatkovno zbirko, v kateri se bo shranjevala zgodovina sporočil in drugi podatki."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Lastnosti povezave"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Shranjevanje nastavitev"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Poveži se z jedrom"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Omrežje ne deluje"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Povezava prekinjena"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Iskanje %1 ..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Povezovanje s %1 ..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Povezan na %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Prekinjanje povezave z %1 ..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Jedro Quassel, s katerim se želite povezati, je prestaro. Razmislite o nadgradnji."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Od jedra je bil prejet neveljaven podatek"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Povezava z jedrom prekinjena."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Nešifrirana povezava preklicana"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Usklajevanje z jedrom ..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Jedro Quassel, s katerim se želite povezati, je prestaro.</b><br>Za povezavo je potreben vsaj protokol različice %1."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Prijavljanje ..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Prijava preklicana"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Prejemanje stanja seje"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Usklajevanje z %1 ..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Prejemanje stanj omrežij"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2116,52 +2134,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (od %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Povezovanje ni uspelo. Prehajam na naslednji strežnik"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Povezujem se z %1:%2 ..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Prekinjanje povezave ... (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Zaustavitev jedra"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Ni se moč povezati z %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Neuspeh pri povezovanju: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Odjemalec"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "je prekinil povezavo (uporabniški ID: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2169,7 +2187,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): med poskusom ustvarjanja omrežja %1 je bil prejet napačen networkId!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2217,8 +2235,8 @@ msgstr "pošiljanje zahtevka CTCP-%1 do %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2233,7 +2251,7 @@ msgid ""
 msgstr "[uporaba] /delkey <vzdevek|kanal> izbriše šifrirni ključ za vzdevek ali kanal, v kanalu ali poizvedovanju lahko samo /delkey."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2246,7 +2264,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Ključ za %1 je bil izbrisan."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2279,7 +2297,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2288,13 +2306,13 @@ msgid ""
 "with QCA present."
 msgstr "Napaka: za nastavljanje šifrirnega ključa mora biti Quassel zgrajen s podporo za šifrirno arhitekturo Qt Cryptographic Architecture (QCA). O paketu s podporo za QCA povprašajte svojega distributerja, ali pa sami zgradite Quassel s podporo za QCA."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2302,26 +2320,26 @@ msgid ""
 "it."
 msgstr "[uporaba] /setkey <vzdevek|kanal> <ključ> nastavi ključ za vzdevek ali kanal, v kanalu ali poizvedovanju lahko tudi /setkey <ključ>"
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Ključ za %1 je bil nastavljen."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[uporaba] /delkey <vzdevek|kanal> izbriše šifrirni ključ za vzdevek ali kanal, v kanalu ali poizvedovanju lahko samo /delkey."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2799,7 +2817,7 @@ msgid "highlight rule"
 msgstr "pravilo poudarjanja"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Preimenuj identiteto"
@@ -2835,55 +2853,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identitete"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Preden se uveljavijo spremembe, je potrebno odpraviti naslednje težave:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Vse identitete morajo imeti nastavljeno ime</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Vsaka identiteta mora imeti določen vsaj en vzdevek</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Za vsako identiteto morate nastaviti pravo ime</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Za vsako identiteto morate nastaviti ident</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Vsaj ena identiteta ni veljavna"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Zbrišem identiteto?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Ali res želite zbrisati identiteto »%1«?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3916,379 +3934,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Prestavi"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Jedro Quassel različice %1</b><br>Zgrajeno: %2<br>Teče %3 d %4 u %5 m (od %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Splošno"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Poveži se z jedrom ..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "P&rekini povezavo z jedrom"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "P&odatki o jedru ..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "&Nastavi omrežja ..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "Konča&j"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Nastavi sezname klepetov ..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Zakleni razpored"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Pr&ikaži iskalno vrstico"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Prikaži dnevnik odsotnosti"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Prikaži &menijsko vrstico"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Pri&kaži vrstico stanja"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Celozaslonski način"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Nastavi &bližnjice ..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Nastavi Quassel ..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&O Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "O &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Raz&hroščevanje modela omrežja"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Ra&zhroščevanje modela sporočil"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Razhroščevalni &dnevnik"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Razhroščevalni &dnevnik"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Znova naloži slogovno predlogo"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Krmarjenje"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Skoči na vroči klepet"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Nastavi hitri dostop #1"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Nastavi hitri dostop #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Nastavi hitri dostop #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Nastavi hitri dostop #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Nastavi hitri dostop #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Nastavi hitri dostop #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Nastavi hitri dostop #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Nastavi hitri dostop #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Nastavi hitri dostop #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Nastavi hitri dostop #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Hitri dostop #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Hitri dostop #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Hitri dostop #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Hitri dostop #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Hitri dostop #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Hitri dostop #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Hitri dostop #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Hitri dostop #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Hitri dostop #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Hitri dostop #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Aktiviraj naslednji seznam klepetov"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Aktiviraj predhodni seznam klepetov"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Pojdi na naslednji klepet"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Pojdi na predhodni klepet"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Datoteka"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Omrežja"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Videz"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Seznami klepetov"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Orodjarne"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Nastavitve"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Pomoč"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Razhroščevanje"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Vzdevki"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Prikaži seznam vzdevkov"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Nadzorovalnik klepeta"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Prikaži nadzorovalnik klepeta"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Vnosna vrstica"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Prikaži vnosno vrstico"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Tema"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Prikaži vrstico s temo"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Glavna orodjarna"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Povezan z jedrom."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Brez povezave z jedrom."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Nešifrirana povezava"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Vaš odjemalec ne podpira šifriranja SSL.</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Zaupni podatki, kot so gesla, bodo do jedra Quassel poslani nešifrirani."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Vaše jedro ne podpira šifriranja SSL.</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Nezaupano varnostno potrdilo"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4296,33 +4331,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Potrdilo SSL, ki ga je ponudilo jedro na %1, ni zaupano zaradi naslednjih razlogov:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Nadaljuj"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Prikaži potrdilo"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Ali bi radi trajno sprejeli to potrdilo brez nadaljnjih vprašanj?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Samo za trenutno sejo"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Trajno"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Napaka povezave z jedrom"
@@ -4805,7 +4840,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Veljaven vzdevek lahko vsebuje znake angleške abecede, števke in posebne znake {, }, [, ], \\, |, `, ^, _ ter -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Dodaj vzdevek"
@@ -4820,7 +4855,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Obvestila"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Izberite zvočno datoteko"
@@ -5428,6 +5463,42 @@ msgid ""
 "network"
 msgstr "Seznam kanalov IRC, katerim se boste po vzpostavljeni povezavi v omrežje pridružili samodejno"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Obrazec"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index b567f6f..09076c2 100644 (file)
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Albanian (http://www.transifex.com/projects/p/quassel/language/sq/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr ""
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr ""
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfiguro..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "I lidhur tek %1"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "I lidhur tek %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Hyrje..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "I lidhur tek %1"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Prezantim"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Pronësitë e lidhjes"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "I lidhur tek %1"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Rrjetet"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "I shkëputur"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "I lidhur tek %1"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "I lidhur tek %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "I shkëputur"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Hyrje..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "I lidhur tek %1"
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Identiti:"
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identiti:"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Identiti:"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3912,379 +3930,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Të Përgjithshme"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "Duke u lidhur me %1:%2..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "I shkëputur"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Konfiguro..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Mbylle"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "Konfiguro..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Trego &Menunë"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Trego &Menunë"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Konfiguro..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Konfiguro..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Rreth"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "&Rreth"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Gjurmo Gabimin"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Njoftime"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Skedari"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Rrjetet"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Shfaq"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "Lista e Kanaleve"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Shtylla Mjetesh"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Parametrat"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Ndihmë"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Gjurmo Gabimin"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Nicks"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Shfaq ikonat"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Shfaq ikonat"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Shiriti Kryesor"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "I lidhur tek %1"
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "I lidhur tek %1"
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4292,33 +4327,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Pronësitë e lidhjes"
@@ -4797,7 +4832,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4812,7 +4847,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Njoftime"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5420,6 +5455,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index b8258dd..6142147 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:08+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Serbian (http://www.transifex.com/projects/p/quassel/language/sr/)\n"
 "MIME-Version: 1.0\n"
@@ -68,7 +68,7 @@ msgstr "<b>Verzija:</b> %1<br><b>Verzija protokola:</b> %2<br><b>Sagradjeno:</b>
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -93,7 +93,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Želimo da se zahvalimo sledećim saradnicima (po alfabetu) i svima ostalima:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -806,7 +806,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr ""
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr ""
@@ -1025,6 +1025,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr ""
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1340,12 +1396,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr ""
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1353,147 +1409,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr ""
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr ""
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr ""
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr ""
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr ""
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr ""
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
 msgctxt "Core|"
-msgid "Client"
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr ""
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1634,17 +1636,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1652,7 +1711,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1701,46 +1760,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1838,103 +1897,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr ""
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr ""
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr ""
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr ""
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3914,379 +3932,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4294,33 +4329,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr ""
@@ -4801,7 +4836,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr ""
@@ -4816,7 +4851,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr ""
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr ""
@@ -5424,6 +5459,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index ae4c830..e1cf5e1 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Swedish (http://www.transifex.com/projects/p/quassel/language/sv/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>Version:</b> %1<br><b>Protokollversion:</b> %2<br><b>Byggd:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -80,7 +80,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>En modern, distribuerad IRC-klient</b><br><br>&copy;2005-2012 Quassel-projektet<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> på <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC är dubbel-licensierad under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> och <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De flesta ikoner är &copy; av <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> och används under <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Använd <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> för att rapportera fel."
+msgstr "<b>En modern, distribuerad IRC-klient</b><br><br>&copy;%1 Quassel-projektet<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> på <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC är dubbel-licensierad under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> och <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>De flesta ikoner är &copy; av <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> och används under <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Använd <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> för att rapportera fel."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Vi vill tacka följande bidragsgivare (i alfabetisk ordning) och alla som vi har glömt att nämna här:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Konfigurera..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Kopiera markering"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Identiteten finns redan i klienten!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Okrypterad anslutning"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "Ansluter till %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Synkroniserar till %1..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "Ansluten till %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Loggar in..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Befintliga regler"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr ""
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr ""
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr ""
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr ""
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr ""
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Skapar administrativ användare..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Ogiltig lyssningsadress %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr ""
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr ""
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Ogiltig lyssningsadress %1"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr ""
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Klient ansluten från"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr ""
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antik klient försöker ansluta... nekar."
-
 #: ../src/core/core.cpp:560
-#, qt-format
 msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
+msgid "Non-authed client disconnected:"
 msgstr ""
 
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Klient"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel Core version %1</b><br>Byggdes: %2<br>Upptid %3d%4h%5m (sedan %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr ""
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr ""
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr ""
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr ""
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr ""
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr ""
-
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr ""
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr ""
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr ""
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Klient"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Skapa administrativ användare"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Introduktion"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr ""
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Anslut till Core"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Manuella inställningar"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Anslut till Core"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Nätverket är nere"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Frånkopplad"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Slår upp %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "Ansluter till %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "Ansluten till %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Kopplar från %1..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "&Koppla från Core"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Okrypterad anslutning"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Synkroniserar till %1..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Loggar in..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr ""
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Synkroniserar till %1..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr ""
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2115,52 +2133,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (sedan %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "Ansluter till %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Kopplar från. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr ""
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Kunde inte ansluta till %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Anslutningsfel: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "Klient"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "frånkopplad (AnvändarId: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2168,7 +2186,7 @@ msgid ""
 " create network %1!"
 msgstr ""
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2216,8 +2234,8 @@ msgstr "skickar CTCP-%1-fråga till %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2232,7 +2250,7 @@ msgid ""
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2245,7 +2263,7 @@ msgid "The key for %1 has been deleted."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2278,7 +2296,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2287,13 +2305,13 @@ msgid ""
 "with QCA present."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2301,26 +2319,26 @@ msgid ""
 "it."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2798,7 +2816,7 @@ msgid "highlight rule"
 msgstr "Markera"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Ta bort identitet"
@@ -2834,55 +2852,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Identiteter"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "En eller flera identiteter är ogiltiga"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Ta bort identitet?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Vill du verkligen ta bort chattlistan \"%1\"?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3913,379 +3931,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel Core version %1</b><br>Byggdes: %2<br>Upptid %3d%4h%5m (sedan %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Allmänt"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Anslut till Core..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Koppla från Core"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Konfigurera &nätverk..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "A&vsluta"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Konfigurera chattlistor..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "&Lås layout"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Visa status&rad"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Visa som mest"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Visa &menyrad"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Visa status&rad"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Helskärmsläge"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Konfigurera &genvägar..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Konfigurera Quassel..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Om Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Om &Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "Nytt meddelande"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Felsöknings&logg"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Felsöknings&logg"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Använd anpassad stilmall"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Navigation"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Ta bort chattlista?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Gå till föregående chatt"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Gå till nästa chatt"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Gå till föregående chatt"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Arkiv"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Nätverk"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Visa"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Chattlistor"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "Ver&ktygsrader"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Inställningar"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Hjälp"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Felsök"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Smeknamn"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Visa smeknamnslista"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Chattmonitor"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Visa chattmonitor"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Visa inmatningsrad"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Visa inmatningsrad"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Ämne"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Visa ämnesrad"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Huvudverktygsrad"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Anslut till core."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Inte ansluten till core."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Okrypterad anslutning"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>Din klient saknar stöd för SSL-kryptering</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Din klient saknar stöd för SSL-kryptering</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Använd SSL-certifikat"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4293,33 +4328,33 @@ msgid ""
 "following reasons:</b>"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Fortsätt"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Visa certifikat"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Endast aktuell session"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "För alltid"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Anslutning"
@@ -4798,7 +4833,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr ""
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Lägg till smeknamn"
@@ -4813,7 +4848,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Notifieringar"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Välj ljudfil"
@@ -5421,6 +5456,42 @@ msgid ""
 "network"
 msgstr ""
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Formulär"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index adb33bc..a36940c 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-28 00:20+0000\n"
 "Last-Translator: volkangezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish (http://www.transifex.com/projects/p/quassel/language/tr/)\n"
 "MIME-Version: 1.0\n"
@@ -72,7 +72,7 @@ msgstr "<b>Sürüm:</b> %1<br><b>Protokol sürümü:</b> %2<br><b>İnşa:</b> %3
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -83,7 +83,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>Modern, dağıtılmış IRC İstemcisi</b><br><br>&copy;2005-2012, Quassel Projesi<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a>, <a href=\"http://www.freenode.net\">Freenode</a> üzerinde.<br><br>Quassel IRC <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> ve <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> ile çift lisansa tabiidir.<br>Çoğu simgeler &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Takımı</a> tarafından yapılmış ve <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> altında lisanslanmıştır.<br><br>Lütfen hataları göndermek için <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> kullanın."
+msgstr "<b>Modern, dağıtılmış IRC İstemcisi</b><br><br>&copy;%1, Quassel Projesi<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a>, <a href=\"http://www.freenode.net\">Freenode</a> üzerinde.<br><br>Quassel IRC <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> ve <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> ile çift lisansa tabiidir.<br>Çoğu simgeler &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen Takımı</a> tarafından yapılmış ve <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> altında lisanslanmıştır.<br><br>Lütfen hataları göndermek için <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> kullanın."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -97,7 +97,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Aşağıdaki katkıcılara (alfabetik sırayla) ve buraya yazmayı unuttuğumuz herkese teşekkür ederiz:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -810,7 +810,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Yapılandır..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Seçimi Kopyala"
@@ -1029,6 +1029,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "İstemcide bu kimlik zaten mevcut!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Şifrelenmemiş bağlantı iptal edildi"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "%1 bağlantısı yapılıyor..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Çekirdekle eşitleniyor..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr "<b>Bağlanmaya çalıştırğınız Quassel İstemcisi çok eski!</b><br>Bağlanmak için en azından protokol v%1 gerekli ancak çekirdek sadece v%2 kullanıyor."
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr "Uyumsuz protokol sürümü, çekirdeğe bağlantı reddedildi"
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr "Çekirdek bu istemciden bağlantıyı reddetti"
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr "Şifrelenmemiş bağlantı iptal edildi"
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "%1 bağlantısı yapıldı"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Oturum açılıyor..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Oturum iptal edildi"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1344,12 +1400,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Mevcut Kurallar"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Herhangi bir depolama arkaucu başlatılamıyor! Çıkıyorum..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1357,147 +1413,93 @@ msgid ""
 "to work."
 msgstr "Şimdilik, Quaessel SQLite3 ve PostreSQL destekliyor. Quasselcore'un\nçalışabilmesi için Qt kütüphanenizi sqlite ve postgres eklentisi etkin\nolarak derlemeniz gereklidir."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Etkin oturum olduğu halde restoreState() çağırılıyor!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr "Çekirdek zaten yapılandırılmış! Yeniden yapılandırılmıyor.."
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Admin kullanıcı ya da parolası ayarlanmamış."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Depolama ayarlanamıyor!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Admin kullanıcı oluşturuluyor..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Geçersiz dinleme adresi %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "GUI istemcileri IPv6 %1 port %2 ve %3 protokol sürümü üzerinden dinleniyor"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "IPv6 arayüzü açılamadı %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "GUI istemcileri IPv4 %1 port %2 ve %3 protokol sürümü üzerinden dinleniyor"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "IPv4 arayüzü açılamadı %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Geçersiz dinleme adresi %1, bilinmeyen ağ protokolü"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Hiçbir dinlenecek ağ arayüzü açılamadı!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "İstemci şuradan bağlandı"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Temel kurulum için sunucu kapatılıyor."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Antika istemci bağlanmaya çalışıyor... reddedildi."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Quassel İstemciniz çok eski!</b><br>Bu çekirdek en azından istemci/çekirdek protokol sürümü %1 istemektedir.<br>Lütfen istemcinizin sürümünü yükseltin."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "İstemci"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "çok eski, reddediliyor."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel Çekirdek Sürüm %1</b><br>İnşa: %2<br>Up %3g%4s%5d (%6'dan beri)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "İstemci için TLS Başlatılıyor:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>İstemci başlatılamadı!</b><br>Oturumu açmaya çalışmadan önce başlatma mesajı göndermeniz gerekmektedir."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "oturumu açmaya çalışmadan önce başlatma mesajı gönderilmedi, reddediliyor."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Geçersiz kullanıcı adı ya da parolası!</b><br>Yazdığınız kullanıcı adı/parola kombinasyonu veritabanında bulunamadı."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "Başlatıldı ve \"%1\" olarak başarıyla doğrulandı (UserId: %2)."
-
-#: ../src/core/core.cpp:695
 msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "Yetkisiz istemci bağlantıyı kesti."
+msgid "Non-authed client disconnected:"
+msgstr "Yetkisiz istemci bağlantıyı kesti:"
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Şu istemci için oturum başlatılamadı:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "İstemci için bir oturum bulunamadı:"
@@ -1638,17 +1640,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Uzak Çekirdekler"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "İstemci"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "çok eski, reddediliyor."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr "<b>Quassel İstemciniz çok eski!</b><br>Bu çekirdek en azından istemci/çekirdek protokol sürümü %1 istemektedir (sahip olunan: %2).<br>Lütfen istemcinizin sürümünü yükseltin."
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr "İstemci için şifreleme başlatılıyor:"
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "oturumu açmaya çalışmadan önce başlatma mesajı gönderilmedi, reddediliyor."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>İstemci başlatılamadı!</b><br>Oturumu açmaya çalışmadan önce başlatma mesajı göndermeniz gerekmektedir."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr "<b>SSL gerekli!</b><br>Bu çekirdeğe bağlanabilmek için SSL kullanmanız gereklidir."
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Geçersiz kullanıcı adı veya parola!</b><br>Yazdığınız kullanıcı adı/parola kombinasyonu veritabanında bulunamadı."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr "\"%1\" istemcisi başlatıldı ve \"%2\" olarak başarıyla doğrulandı (Kullanıcı Kimliğ: %3)."
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Çekirdek Ayarlama Sihirbazı"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Çekirdeğiniz başarılı bir şekilde yapılandırıldı. Oturumunuz açılıyor..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1656,7 +1715,7 @@ msgid ""
 "over."
 msgstr "Çekirdek yapılandırması başarısız: <br><b>%1</b><br>Baştan başlamak için <em>İleri</em> düğmesine basın."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1705,46 +1764,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Bu sihirbaz Quassel Çekirdeğinizi ayarlamanıza yardımcı olacak."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Admin Kullanıcı Oluştur"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Öncelikle çekirdekte yeni bir kullanıcı oluşturacağız. Bu kullanıcı yönetici haklarına sahip olacak."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Giriş"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Depolama Türünü Seç"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Lütfen Quassel Çekirdeğinin kayıt ve diğer verileri saklaması için bir veritabanı seçin."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Bağlantı Özellikleri"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Ayarlarınız Saklanıyor"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1842,103 +1901,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "Çekirdeğe Bağlan"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Ağ etkin değil"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Bağlı değil"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "%1 aranıyor..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "%1e bağlanılıyor..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "%1e bağlandı"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "%1e bağlanılıyor..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Bağlanmaya çalıştığınız Quassel Çekirdeği çok eski! Lütfen yeni sürüme yükseltin."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Çekirdekten geçersiz bilgi alındı."
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Çekirdekle bağlantı kesildi."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Şifrelenmemiş bağlantı iptal edildi"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Çekirdekle eşitleniyor..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Bağlanmaya çalıştırğınız Quassel İstemcisi çok eski!</b><br>Bağlanmak için en azından çekirdek/istemci protokolü v%1 gerekli."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Oturum açılıyor..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Oturum iptal edildi"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Oturum durumu alınıyor"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "%1 ile eşitleniyor..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Ağ durumu alınıyor."
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2118,52 +2136,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (%4 den beri)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Bağlantı başarısız. Sonraki sunucuya geçiliyor"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "%1:%2 bağlantısı yapılıyor..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Bağlantı Kesiliyor. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Çekirdeği Kapat"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "%1 (%2) bağlanılamadı"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "Bağlantı hatası: %1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "İstemci"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "bağlantı kesildi (Kullanıcı: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2171,7 +2189,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): %1 ağı oluşturulmaya çalışılırken Çekirdekten geçersiz networkId alındı!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2219,8 +2237,8 @@ msgstr "%2 ye CTCP-%1 isteği gönderiliyor"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2235,7 +2253,7 @@ msgid ""
 msgstr "[kullanım] /delkey <takmaad|kanal> bir takma ad veya kanal için şifreleme anahtarını siler veya bir kanalda iken sadece /delkey."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2248,7 +2266,7 @@ msgid "The key for %1 has been deleted."
 msgstr "%1 için anahtar silindi."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2281,7 +2299,7 @@ msgid "Initiated key exchange with %1."
 msgstr "%1 ile anahtar değişimi başlatıldı."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2290,13 +2308,13 @@ msgid ""
 "with QCA present."
 msgstr "Hata: Bir şifreleme anahtarı ayarlamak, Quassel'in Qt Kriptografik Mimari (QCA) kütüphanesi ile derlenmiş olmasını gerektirir. Quassel paketinin QCA desteği için dağıtıcınızla iletişime geçin veya Quassel'i QCA etkin olarak tekrar derleyin."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Sorguya %1 ile başlanıyor"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2304,26 +2322,26 @@ msgid ""
 "it."
 msgstr "[kullanım] /setkey <takmaad|kanal> <anahtar> takmaad veya kanal için şifreleme anahtarı belirler. /setkey <anahtar> ise bir kanalda veya sorgu tamponunda anahtarı ayarlar."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "%1 için anahtar belirlendi"
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[kullanım] /delkey <takmaad|kanal> bir takma ad veya kanal için şifreleme anahtarını gösterir veya bir kanal veya sorguda iken sadece /showkey."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr "%1 için anahtar %2:%3"
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2801,7 +2819,7 @@ msgid "highlight rule"
 msgstr "vurgulama kuralı"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Kimliği Yeniden Adlandır"
@@ -2837,55 +2855,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Kimlikler"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>Değişiklikleriniz uygulanmadan önce aşağıdaki problemlerin çözülmesi gerekiyor:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Tüm kimliklere bir kimlik isim kümesi gerekli</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Her kimliğe en az bir tanımlı takma ad gerekmektedir</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Her kimlik için gerçek ad belirtmeniz gerekiyor</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Her kimlik için bir ident belirtmeniz gerekiyor</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Bir ya da daha fazla kimlik geçersiz"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Kimliği Sil?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "\"%1\" kimliğini gerçekten silmek istiyor musunuz?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3916,379 +3934,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Tekrar Ata"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr "Geçersiz el sıkışma iletisi!"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr "Bilinmeyen %1 protokol ileti türü"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel Çekirdek Sürüm %1</b><br>İnşa: %2<br>Up %3d%4h%5m (şu kadar zamandır: %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Genel"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&Çekirdeğe Bağlan..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Çekirdekle Bağlantıyı Kes"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Çekirdek &Bilgisi..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "A&ğları Yapılandır..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "&Çık"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "Sohbet Listelerini &Yapılandır..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "Arayüzü &Kilitle"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "&Arama Çubuğunu Göster"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Dışarıda Kayıtları"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "&Menü Çubuğunu Göster"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "&Durum Çubuğunu Göster"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "&Tam Ekran Kipi"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "&Kısayolları Yapılandır..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "Quasseli &Yapılandır..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "Quassel &Hakkında"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "&Qt Hakkında"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "&NetworkModel Hata Ayıkla"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Hata Ayıklama &TamponGörünümKaplaması"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "&MessageModel Hata Ayıkla"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "&Log Hata Ayıkla"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "&Log Hata Ayıkla"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Özel biçem deposunu kullan"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Geçerli Tamponu Gizle"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Organizasyon:"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "Canlı sohbete atla"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Hızlı Erişim #0 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Hızlı Erişim #1 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Hızlı Erişim #2 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Hızlı Erişim #3 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Hızlı Erişim #4 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Hızlı Erişim #5 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Hızlı Erişim #6 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Hızlı Erişim #7 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Hızlı Erişim #8 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Hızlı Erişim #9 Ayarla"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Hızlı Erişim #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Hızlı Erişim #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Hızlı Erişim #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Hızlı Erişim #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Hızlı Erişim #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Hızlı Erişim #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Hızlı Erişim #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Hızlı Erişim #"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Hızlı Erişim #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Hızlı Erişim #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Sohbet :Listesini Sil?"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Önceki Sohbet Listesini Etkinleştir"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Sohbete Git"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Sohbete Git"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Dosya"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Ağ"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "&Görünüm"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Sohbet Listeleri"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Araç Çubukları"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "&Ayarlar"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Yardım"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Hata Ayıkla"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Takma Adlar"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Takma Ad Listesini Göster"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Sohbet Ekranı"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Sohbet Ekranını Göster"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Girdi Satırı"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Girdi Satırını Göster"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Konu"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Konu Satırını Göster"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Ana Araç Çubuğu"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "Çekirdeğe bağlandı."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Çekirdeğe bağlı değil."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Şifrelenmemiş Bağlantı"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>İstemciniz SSL şifrelemeyi desteklemiyor</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Şifre benzeri hassas bilgileriniz Quassel çekirdeğinize şifresiz gönderilecektir."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>Çekirdeğiniz SSL şifrelemeyi desteklemiyor</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Güvenilmeyen Güvenlik Sertifikası"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4296,33 +4331,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>%1 tarafından sağlanan SSL sertifikasına aşağıdaki sebeplerden dolayı güvenilemiyor:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Devam Et"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Sertifika Göster"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Bu sertifikayı bir daha sorulmamak üzere sonsuza kadar kabul etmek ister misiniz?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Sadece Geçerli Oturum"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Daima"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Çekirdek Bağlantı Hatası"
@@ -4801,7 +4836,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Geçerli bir takma ad İngiliz alfabesindeki harfleri, sayıları ve {, }, [, ], \\, |, `, ^, _ - özel karakterlerini içerebilir."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Takma Ad Ekle"
@@ -4816,7 +4851,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Bildirimler"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Ses Dosyası Seçin"
@@ -5424,6 +5459,42 @@ msgid ""
 "network"
 msgstr "Ağa bağlandıktan sonra otomatik olarak katılacağınız IRC kanallarının bir listesi"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr "Özel Mesaj"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Form"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr "Horlama"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr "Arka Uç:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr "Zaman Aşımı:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " s"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr "0, sonsuz"
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
@@ -5472,7 +5543,7 @@ msgstr "Konu"
 #: ../src/qtui/ui/sslinfodlg.ui:126 ../src/qtui/ui/sslinfodlg.ui:248
 msgctxt "SslInfoDlg|"
 msgid "<b>Common name:</b>"
-msgstr "<b>Sunucu Adı:</b>"
+msgstr "<b>Ortak ad:</b>"
 
 #: ../src/qtui/ui/sslinfodlg.ui:143 ../src/qtui/ui/sslinfodlg.ui:265
 msgctxt "SslInfoDlg|"
index 24da99b..5ef1c55 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -2,13 +2,13 @@
 # Translators:
 # Daniel Albers <daniel@lbers.com>, 2011
 # Yuri Chornoivan <yurchor@gmail.com>, 2010
-# Yuri Chornoivan <yurchor@ukr.net>, 2011-2013
+# Yuri Chornoivan <yurchor@ukr.net>, 2011-2014
 msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
-"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
+"PO-Revision-Date: 2014-02-19 09:00+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian (http://www.transifex.com/projects/p/quassel/language/uk/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -69,7 +69,7 @@ msgstr "<b>Версія:</b> %1<br><b>Версія протоколу:</b> %2<br
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -80,7 +80,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>СÑ\83Ñ\87аÑ\81на ÐºÐ»Ñ\96Ñ\94нÑ\82Ñ\81Ñ\8cка Ð¿Ñ\80огÑ\80ама IRC Ð· Ñ\80озподÑ\96леними Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ\81Ñ\82Ñ\8fми</b><br><br>&copy; Quassel Project, 2005â\80\932010<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC Ð²Ð¸Ð¿Ñ\83Ñ\89ено Ð·Ð° Ð¿Ð¾Ð´Ð²Ñ\96йного Ð»Ñ\96Ñ\86ензÑ\83ваннÑ\8f Ð·Ð³Ñ\96дно <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> Ñ\96 <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Ð\90вÑ\82оÑ\80Ñ\81Ñ\8cкÑ\96 Ð¿Ñ\80ава Ð½Ð° Ð±Ñ\96лÑ\8cÑ\88Ñ\96Ñ\81Ñ\82Ñ\8c Ð¿Ñ\96кÑ\82огÑ\80ам Ð½Ð°Ð»ÐµÐ¶Ð°Ñ\82Ñ\8c <a href=\"http://www.oxygen-icons.org\">Ð\9aомандÑ\96 Oxygen</a>, Ð¿Ñ\96кÑ\82огÑ\80ами Ñ\80озповÑ\81Ñ\8eджÑ\83Ñ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ð·Ð³Ñ\96дно <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Ð\94лÑ\8f Ð¿Ð¾Ð²Ñ\96домленÑ\8c Ð¿Ñ\80о Ð²Ð°Ð´Ð¸ Ñ\81коÑ\80иÑ\81Ñ\82айÑ\82еÑ\81Ñ\8f <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a>."
+msgstr "<b>СÑ\83Ñ\87аÑ\81ний Ñ\80озподÑ\96лений ÐºÐ»Ñ\96Ñ\94нÑ\82 IRC</b><br><br>&copy; Ð\9fÑ\80оекÑ\82 Quassel, 2005â\80\932014<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> Ð½Ð° <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC Ð²Ð¸Ð¿Ñ\83Ñ\89ено Ð·Ð° Ð¿Ð¾Ð´Ð²Ñ\96йного Ð»Ñ\96Ñ\86ензÑ\83ваннÑ\8f <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> Ñ\82а <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Ð\90вÑ\82оÑ\80Ñ\81Ñ\8cкÑ\96 Ð¿Ñ\80ава Ð½Ð° Ð¿Ñ\96кÑ\82огÑ\80ами Ð½Ð°Ð»ÐµÐ¶Ð°Ñ\82Ñ\8c <a href=\"http://www.oxygen-icons.org\">Ð\9aомандÑ\96 Oxygen</a> Ñ\96 Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ð·Ð° Ñ\83мов Ð»Ñ\96Ñ\86ензÑ\83ваннÑ\8f <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ñ\81коÑ\80иÑ\81Ñ\82айÑ\82еÑ\81Ñ\8f Ð´Ð»Ñ\8f Ð·Ð²Ñ\96Ñ\82Ñ\83ваннÑ\8f Ñ\89одо Ð²Ð°Ð´ Ñ\81Ñ\82оÑ\80Ñ\96нкоÑ\8e <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a>."
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "Ми дуже вдячні переліченим нижче учасникам розробки (у порядку абетки), а також всім, кого ми забули згадати у цьому списку:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "Налаштувати…"
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "Копіювати позначене"
@@ -1021,11 +1021,67 @@ msgctxt "ChatViewSettingsPage|"
 msgid "You need at least version 0.6 of quasselcore to use this feature"
 msgstr "Щоб скористатися цією можливістю, вам слід встановити принаймні версію 0.6 quasselcore"
 
-#: ../src/client/client.cpp:318
+#: ../src/client/client.cpp:320
 msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "Такий профіль вже існує!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "Скасовано нешифроване з’єднання"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "З'єднання з %1…"
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "Синхронізація з ядром…"
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr "<b>Ядро Quassel, з яким ви намагаєтеся встановити з’єднання, є занадто старим!</b><br>Для встановлення з’єднання потрібна принаймні версія протоколу %1, але ядро може працювати лише з версією %2."
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr "Несумісна версія протоколу, у з’єднанні з ядром відмовлено"
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr "Ядром відмовлено у з’єднанні цьому клієнту"
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr "Скасовано нешифроване з’єднання"
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "З'єднано з %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "Вхід до системи…"
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "Вхід скасовано"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "Поточні правила"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "Не вдалося ініціалізувати жоден сервер зберігання даних! Вихід…"
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr "У поточній версії Quassel передбачено підтримку SQLite3 і PostgreSQL. Вашу бібліотеку\nQt має бути зібрано з підтримкою додатків sqlite або postgres, інакше quasselcore\nне працюватиме."
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "Виклик restoreState(), хоча вже існує активний сеанс!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr "Ядро вже налаштовано! Повторне налаштовування скасовано…"
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "Не встановлено адміністративного користувача або пароля."
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "Не вдалося налаштувати сховище даних!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "Створення адміністративного користувача…"
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "Некоректна адреса очікування даних %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "Очікування за встановлення з’єднання з графічними клієнтами за адресою IPv6 %1, порт %2. Використано версію протоколу %3"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "Не вдалося відкрити інтерфейс IPv6 %1:%2: %3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "Очікування за встановлення з’єднання з графічними клієнтами за адресою IPv4 %1, порт %2. Використано версію протоколу %3"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "Не вдалося відкрити інтерфейс IPv4 %1:%2: %3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "Некоректна адреса очікування даних %1, невідомий мережевий протокол"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "Не вдалося відкрити жодного мережевого інтерфейсу для очікування на з’єднання!"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "Клієнтське з’єднання з"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "Завершення роботи сервера для базового налаштування."
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "Спроба встановлення зв’язку за допомогою застарілої клієнтської програми… відмовлено."
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>Ваша версія клієнтської частини Quassel є застарілою!</b><br>Для роботи з цим ядром потрібно користуватися клієнтською частиною/протоколом ядра версії %1.<br>Будь ласка, оновіть вашу клієнтську частину."
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "Клієнт"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "застарілий, відмовлено."
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Версія ядра Quassel %1</b><br>Зібрано: %2<br>Працює %3д%4г%5хв (з %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "Вмикання TLS для клієнта:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>Клієнт не ініціалізовано!</b><br>Вам слід надіслати початкове повідомлення, перш ніж намагатися увійти до системи."
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "не надіслано повідомлення ініціалізації перед спробою входу, відмовлено."
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>Некоректні ім’я користувача і пароль!</b><br>Вказаної вами комбінації імені користувача і пароля у базі даних не виявлено."
-
-#: ../src/core/core.cpp:682
-#, qt-format
-msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "ініціалізовано і успішно розпізнано як «%1» (Користувач: %2)."
-
-#: ../src/core/core.cpp:695
 msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "З’єднання з нерозпізнаним клієнтом перервано."
+msgid "Non-authed client disconnected:"
+msgstr "З’єднання з нерозпізнаним клієнтом розірвано:"
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "Не вдалося ініціалізувати сеанс для клієнта:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "Не вдалося знайти сеансу клієнта:"
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "Віддалені ядра"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "Клієнт"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "застарілий, відмовлено."
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr "<b>Ваша версія клієнтської частини Quassel є застарілою!</b><br>Для роботи з цим ядром потрібно користуватися клієнтською частиною/протоколом ядра версії %1 (маємо %2).<br>Будь ласка, оновіть вашу клієнтську частину."
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr "Розпочинаємо шифрування для клієнта:"
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "не надіслано повідомлення ініціалізації перед спробою входу, відмовлено."
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>Клієнт не ініціалізовано!</b><br>Вам слід надіслати початкове повідомлення, перш ніж намагатися увійти до системи."
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr "<b>Потрібне шифрування SSL!</b><br>Для встановлення з’єднання з цим ядром вам потрібно скористатися SSL."
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>Некоректні ім’я користувача і пароль!</b><br>Вказаної вами комбінації імені користувача і пароля у базі даних не виявлено."
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr "Клієнтську частину %1 ініціалізовано і успішно розпізнано як «%2» (Користувач: %3)."
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "Майстер налаштування ядра"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "Ваше ядро успішно налаштовано. Вхід до системи…"
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr "Спроба налаштування ядра завершилася невдало:<br><b>%1</b><br>Натисніть <em>Далі</em>, щоб розпочати все з початку."
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "Цей майстер допоможе вам у налаштуванні вашого ядра Quassel."
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "Створити адміністративного користувача"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "Спершу треба створити користувача ядра. Цей перший користувач буде адміністративним користувачем ядра."
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "Вступ"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "Вибір сервера зберігання даних"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "Будь ласка, виберіть сервер бази даних для зберігання журналу та інших даних ядром Quassel Core."
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "Властивості з’єднання"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "Збереження ваших параметрів"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "З’єднатися з ядром"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "Мережу вимкнено"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "Роз'єднано"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "Пошук %1…"
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "З'єднання з %1…"
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "З'єднано з %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "Розірвання з’єднання з %1…"
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "Ядро Quassel, з яким ви намагаєтеся встановити з’єднання, є занадто старим! Будь ласка, спробуйте його оновити."
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "Отримано некоректні дані від ядра"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "Від’єднано від ядра."
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "Скасовано нешифроване з’єднання"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "Синхронізація з ядром…"
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>Ядро Quassel, з яким ви намагаєтеся встановити з’єднання, є занадто старим!</b><br>Для встановлення з’єднання потрібна принаймні версія протоколу ядра/клієнта %1."
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "Вхід до системи…"
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "Вхід скасовано"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "Отримання стану сеансу"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "Синхронізація з %1…"
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "Отримання мережевих станів"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2116,35 +2134,35 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (з %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "Спроба встановлення з’єднання зазнала невдачі. Циклічний перехід до іншого сервера"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "З’єднання з %1:%2…"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "Роз'єднання. (%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "Завершення роботи ядра"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "Не вдалося встановити з’єднання з %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
@@ -2161,7 +2179,7 @@ msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "роз’єднано (користувач: %1)."
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:477
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2169,41 +2187,78 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork(): під час спроби створення мережі %1 отримано некоректний ідентифікатор мережі від ядра!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:509
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
 "exists, updating instead!"
 msgstr "CoreSession::createNetwork(): спроба створення запису мережі, який вже існує, замість цього буде виконано оновленння запису!"
 
-#: ../src/core/coresessioneventprocessor.cpp:75
+#: ../src/core/coresessioneventprocessor.cpp:78
 msgctxt "CoreSessionEventProcessor|"
 msgid ""
 "No free and valid nicks in nicklist found. use: /nick <othernick> to "
 "continue"
 msgstr "У списку псевдонімів не знайдено незайнятих або коректних псевдонімів. Скористайтеся командою /nick <інший псевдонім>, щоб продовжити процедуру входу"
 
-#: ../src/core/coresessioneventprocessor.cpp:447
+#: ../src/core/coresessioneventprocessor.cpp:450
 msgctxt "CoreSessionEventProcessor|"
 msgid "Unable to perform key exchange, missing qca-ossl plugin."
 msgstr "Не вдалося виконати обмін ключами, — не вистачає додатка qca-ossl."
 
-#: ../src/core/coresessioneventprocessor.cpp:458
+#: ../src/core/coresessioneventprocessor.cpp:461
 msgctxt "CoreSessionEventProcessor|"
 msgid "Unable to parse the DH1080_INIT. Key exchange failed."
 msgstr "Не вдалося обробити DH1080_INIT. Спроба обміну ключами зазнала невдачі."
 
-#: ../src/core/coresessioneventprocessor.cpp:462
-#: ../src/core/coresessioneventprocessor.cpp:470
+#: ../src/core/coresessioneventprocessor.cpp:465
+#: ../src/core/coresessioneventprocessor.cpp:473
 msgctxt "CoreSessionEventProcessor|"
 msgid "Your key is set and messages will be encrypted."
 msgstr "Встановлено ваш ключ, повідомлення буде зашифровано."
 
-#: ../src/core/coresessioneventprocessor.cpp:472
+#: ../src/core/coresessioneventprocessor.cpp:475
 msgctxt "CoreSessionEventProcessor|"
 msgid "Failed to parse DH1080_FINISH. Key exchange failed."
 msgstr "Не вдалося обробити DH1080_FINISH. Спроба обміну ключами зазнала невдачі."
 
+#: ../src/core/coresessioneventprocessor.cpp:1056
+msgctxt "CoreSessionEventProcessor|"
+msgid "Reverse DCC SEND not supported"
+msgstr "Підтримки зворотного DCC SEND не передбачено"
+
+#: ../src/core/coresessioneventprocessor.cpp:1074
+#, qt-format
+msgctxt "CoreSessionEventProcessor|"
+msgid "DCC %1 not supported"
+msgstr "Підтримки DCC %1 не передбачено"
+
+#: ../src/core/coretransfer.cpp:58
+msgctxt "CoreTransfer|"
+msgid "Socket closed while still transferring!"
+msgstr "Сокет було закрито під час передавання даних!"
+
+#: ../src/core/coretransfer.cpp:70
+#, qt-format
+msgctxt "CoreTransfer|"
+msgid "DCC connection error: %1"
+msgstr "Помилка з’єднання DCC: %1"
+
+#: ../src/core/coretransfer.cpp:114
+msgctxt "CoreTransfer|"
+msgid "Reverse DCC not supported yet!"
+msgstr "Підтримки зворотного DCC не передбачено!"
+
+#: ../src/core/coretransfer.cpp:160
+msgctxt "CoreTransfer|"
+msgid "DCC Receive: Got more data than expected!"
+msgstr "Отримання DCC: отримано більше даних, ніж очікувалося!"
+
+#: ../src/core/coretransfer.cpp:176
+msgctxt "CoreTransfer|"
+msgid "DCC Receive: Quassel Client disconnected during transfer!"
+msgstr "Отримання DCC: клієнт Quassel від’єднано під час передавання даних!"
+
 #: ../src/core/coreuserinputhandler.cpp:88
 msgctxt "CoreUserInputHandler|"
 msgid "away"
@@ -2217,8 +2272,8 @@ msgstr "надсилання запиту CTCP-%1 до %2"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2233,7 +2288,7 @@ msgid ""
 msgstr "[використання] /delkey <псевдонім|канал> — вилучає ключ шифрування псевдоніма або каналу; простішою формою, /delkey, можна скористатися на певному каналі або під час діалогу."
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2246,7 +2301,7 @@ msgid "The key for %1 has been deleted."
 msgstr "Було вилучено ключ для %1."
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2279,7 +2334,7 @@ msgid "Initiated key exchange with %1."
 msgstr "Розпочато обмін ключами з %1."
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2288,13 +2343,13 @@ msgid ""
 "with QCA present."
 msgstr "Помилка: для встановлення ключа шифрування Quassel має бути зібрано з підтримкою бібліотеки Qt Cryptographic Architecture (QCA). Попросіть авторів вашого дистрибутива зібрати пакунок Quassel з підтримкою QCA або самі зберіть Quassel з підтримкою QCA."
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr "Розпочинаємо діалог з %1"
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2302,26 +2357,26 @@ msgid ""
 "it."
 msgstr "[використання] /setkey <псевдонім|канал> <ключ> — встановлює ключ шифрування для псевдоніма або каналу. Простіша форма /setkey <ключ> призначена для використання у окремому буфері каналу або діалогу, вона встановлює ключ для відповідного каналу або співрозмовника."
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "Було встановлено ключ для %1."
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[використання] /delkey <псевдонім|канал> — вилучає ключ шифрування псевдоніма або каналу; простішою формою, /delkey, можна скористатися на певному каналі або під час діалогу."
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr "Ключем %1 є %2:%3"
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2647,7 +2702,6 @@ msgctxt "EventStringifier|"
 msgid "sending CTCP-%1 request to %2"
 msgstr "надсилання запиту CTCP-%1 до %2"
 
-#. Optional "unknown" in "Received unknown CTCP-FOO request by bar"
 #: ../src/core/eventstringifier.cpp:717
 msgctxt "EventStringifier|"
 msgid "unknown"
@@ -2799,7 +2853,7 @@ msgid "highlight rule"
 msgstr "підсвітити правило"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "Перейменувати профіль"
@@ -2835,55 +2889,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "Профілі"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>До того, як ваші зміни буде застосовано, слід виправити такі помилки:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>Для всіх профілів слід вказати назви</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>Для кожного з профілів слід визначити принаймні один псевдонім</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>Для кожного з профілів слід вказати справжнє ім’я</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>Для кожного з профілів слід вказати значення ident</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "Один або декілька профілів є некоректними"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "Вилучити профіль?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "Ви справді бажаєте вилучити профіль «%1»?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3915,379 +3969,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "Перепризначити"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr "Некоректне повідомлення щодо встановлення з’єднання!"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr "Невідоме повідомлення протоколу типу %1"
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Версія ядра Quassel %1</b><br>Зібрано: %2<br>Працює %3д%4г%5хв (з %6)"
+
+#: ../src/qtui/mainwin.cpp:358
 msgctxt "MainWin|"
 msgid "General"
 msgstr "Загальне"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:360
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "&З’єднатися з ядром…"
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:362
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "&Від’єднатися від ядра"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:364
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "Ві&домості щодо ядра…"
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "Налаштувати &мережі…"
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:369
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "Ви&йти"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "&Налаштувати списки балачки…"
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:376
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "За&блокувати компонування"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:380
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "Показувати &смужку пошуку"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:382
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "Показувати журнал відсутності"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "Показувати смужку &меню"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:387
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "Показувати п&анель стану"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:393
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "П&овноекранний режим"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:400
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "Налаштувати &скорочення..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:406 ../src/qtui/mainwin.cpp:410
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "&Налаштувати Quassel…"
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:416
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "&Про Quassel"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:421
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "Про &бібліотеку Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:425
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "Діа&гностика NetworkModel"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:427
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "Ді&агностика BufferViewOverlay"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:429
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "&Діагностика MessageModel"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:431
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "Діаг&ностика HotList"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:433
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "Діагностика &журналу"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "Перезавантажити таблицю стилів"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:438
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr "Приховати поточний буфер"
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:442
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "Навігація"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:444
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr "перехід до активної балачки"
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:456
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "Встановити пришвидшений доступ №0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:458
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "Встановити пришвидшений доступ №1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:460
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "Встановити пришвидшений доступ №2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:462
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "Встановити пришвидшений доступ №3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:464
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "Встановити пришвидшений доступ №4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:466
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "Встановити пришвидшений доступ №5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:468
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "Встановити пришвидшений доступ №6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:470
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "Встановити пришвидшений доступ №7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:472
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "Встановити пришвидшений доступ №8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "Встановити пришвидшений доступ №9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:477
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "Пришвидшений доступ №0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:479
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "Пришвидшений доступ №1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:481
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "Пришвидшений доступ №2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:483
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "Пришвидшений доступ №3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:485
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "Пришвидшений доступ №4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:487
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "Пришвидшений доступ №5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:489
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "Пришвидшений доступ №6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:491
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "Пришвидшений доступ №7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:493
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "Пришвидшений доступ №8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:495
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "Пришвидшений доступ №9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:499
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "Активувати наступний список балачки"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:501
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "Активувати попередній список балачки"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:503
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "Перейти до наступної балачки"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:505
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "Перейти до попередньої балачки"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:514
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "&Файл"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:527
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "&Мережі"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "П&ерегляд"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:534
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "&Списки балачки"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:536
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "&Панелі"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:550
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "П&араметри"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:559
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "&Довідка"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:567
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "Зневадження"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:843
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "Псевдоніми"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:852
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "Показувати список псевдонімів"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:865
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "Спостереження за балачкою"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:877
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "Показувати панель спостереження за балачкою"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:883
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "Рядок введення"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:892
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "Показувати рядок введення"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:907
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "Тема"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:919
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "Показувати рядок теми"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1013
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "Головна панель"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1058
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "З’єднано з ядром."
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1157
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "Не з’єднано з ядром."
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1175 ../src/qtui/mainwin.cpp:1185
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "Нешифроване з’єднання"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1175
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>У вашій клієнтській програмі не передбачено підтримки шифрування SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1177 ../src/qtui/mainwin.cpp:1187
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "Конфіденційні дані, зокрема паролі, буде передано незашифрованими вашому ядру Quassel."
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1185
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>У вашому ядрі не передбачено підтримки шифрування SSL</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1203 ../src/qtui/mainwin.cpp:1224
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "Ненадійний сертифікат безпеки"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1204
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4295,33 +4366,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>Сертифікат SSL наданий ядром %1 є ненадійним з таких причин:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1207
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "Продовжити"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1208
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "Показати сертифікат"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1225
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "Хочете прийняти сертифікат назавжди без попереджень?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1227
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "Тільки на поточний сеанс"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1228
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "Завжди"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1239
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "Помилка з’єднання з ядром"
@@ -4802,7 +4873,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "Коректний псевдонім має складатися з літер абетки англійської мови, цифр та спеціальних символів {, }, [, ], \\, |, `, ^, _ і -."
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "Додавання псевдоніма"
@@ -4817,7 +4888,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "Сповіщення"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "Вибір звукового файла"
@@ -5087,6 +5158,17 @@ msgctxt "QueryBufferItem|"
 msgid "server: %1"
 msgstr "сервер: %1"
 
+#: ../src/qtui/ui/receivefiledlg.ui:14
+msgctxt "ReceiveFileDlg|"
+msgid "Incoming File Transfer"
+msgstr "Вхідне передавання даних"
+
+#: ../src/qtui/receivefiledlg.cpp:35
+#, qt-format
+msgctxt "ReceiveFileDlg|"
+msgid "<b>%1</b> wants to send you a file:<br>%2 (%3 bytes)"
+msgstr "<b>%1</b> хоче надіслати вам файл:<br>%2 (%3 байтів)"
+
 #: ../src/qtui/settingspages/saveidentitiesdlg.ui:13
 msgctxt "SaveIdentitiesDlg|"
 msgid "Sync With Core"
@@ -5342,7 +5424,7 @@ msgctxt "ShortcutsSettingsPage|"
 msgid "Shortcuts"
 msgstr "Скорочення"
 
-#: ../src/common/signalproxy.cpp:736
+#: ../src/common/signalproxy.cpp:758
 msgctxt "SignalProxy|"
 msgid "Disconnecting"
 msgstr "Роз'єднання"
@@ -5425,6 +5507,42 @@ msgid ""
 "network"
 msgstr "Список каналів IRC, до яких ви автоматично приєднуєтеся після встановлення з’єднання з мережею"
 
+#: ../src/qtui/snorenotificationbackend.cpp:60
+#: ../src/qtui/snorenotificationbackend.cpp:104
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr "Конфіденційне повідомлення"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "Форма"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr "Snore"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr "Модуль:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr "Час очікування:"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " с"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr "0 — без обмежень"
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
index 8be54e0..f513e05 100644 (file)
@@ -1,13 +1,13 @@
 # 
 # Translators:
 # Daniel Albers <daniel@lbers.com>, 2011
-# leonfeng <rainofchaos@gmail.com>, 2010
-# leonfeng <rainofchaos@gmail.com>, 2010
+# leonfeng <chaofeng111@gmail.com>, 2010
+# leonfeng <chaofeng111@gmail.com>, 2010
 msgid ""
 msgstr ""
 "Project-Id-Version: Quassel IRC\n"
 "Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
-"PO-Revision-Date: 2013-11-20 11:02+0000\n"
+"PO-Revision-Date: 2013-11-25 00:20+0000\n"
 "Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/quassel/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -69,7 +69,7 @@ msgstr "<b>版本</b> %1<br><b>协议版本:</b> %2<br><b>编译:</b> %3"
 #: ../src/qtui/aboutdlg.cpp:49
 msgctxt "AboutDlg|"
 msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>&copy;2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
 "Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
 "irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
 " href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
@@ -80,7 +80,7 @@ msgid ""
 "href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
 "<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
 "report bugs."
-msgstr "<b>一个现代的、分布式的 IRC 客户端。</b><br><br>&copy;2005-2012 Quassel 项目<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC 遵循 <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> 和 <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> 协议。<br>绝大多数图标的版权属于 &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen 团队</a> 并按 <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> 协议使用。<br><br>请使用 <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> 报告故障。"
+msgstr "<b>一个现代的、分布式的 IRC 客户端。</b><br><br>&copy;%1 Quassel 项目<br><a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC 遵循 <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> 和 <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a> 协议。<br>绝大多数图标的版权属于 &copy; <a href=\"http://www.oxygen-icons.org\">Oxygen 团队</a> 并按 <a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a> 协议使用。<br><br>请使用 <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> 报告故障。"
 
 #: ../src/qtui/aboutdlg.cpp:67
 msgctxt "AboutDlg|"
@@ -94,7 +94,7 @@ msgid ""
 "and everybody we forgot to mention here:"
 msgstr "我们感谢下列贡献者(按字母顺序排列)和所有我们忘记在这里提及的人们:"
 
-#: ../src/qtui/aboutdlg.cpp:194
+#: ../src/qtui/aboutdlg.cpp:201
 msgctxt "AboutDlg|"
 msgid ""
 "Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
@@ -807,7 +807,7 @@ msgctxt "ChatMonitorView|"
 msgid "Configure..."
 msgstr "配置..."
 
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
 msgctxt "ChatScene|"
 msgid "Copy Selection"
 msgstr "复制选择"
@@ -1026,6 +1026,62 @@ msgctxt "Client|"
 msgid "Identity already exists in client!"
 msgstr "客户端中已有该身份!"
 
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr "已取消了未加密连接"
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr "正在连接 %1..."
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr "正在与核心同步..."
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr "已连接到 %1"
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr "正在登录..."
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr "登录已取消"
+
 #: ../src/client/clientbacklogmanager.cpp:178
 #, qt-format
 msgctxt "ClientBacklogManager|"
@@ -1341,12 +1397,12 @@ msgctxt "ContextMenuActionProvider|"
 msgid "Existing Rules"
 msgstr "现有规则"
 
-#: ../src/core/core.cpp:190
+#: ../src/core/core.cpp:193
 msgctxt "Core|"
 msgid "Could not initialize any storage backend! Exiting..."
 msgstr "无法初始化任何存储后端!正在退出..."
 
-#: ../src/core/core.cpp:191
+#: ../src/core/core.cpp:194
 msgctxt "Core|"
 msgid ""
 "Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
@@ -1354,147 +1410,93 @@ msgid ""
 "to work."
 msgstr "目前 Quassel 支持 SQLite3 和 PostgreSQL。您需要在启用\n sqlite 和 postgres 插件的条件下重新编译 Qt 库才能让 quasselcore\n正常工作。"
 
-#: ../src/core/core.cpp:249
+#: ../src/core/core.cpp:253
 msgctxt "Core|"
 msgid "Calling restoreState() even though active sessions exist!"
 msgstr "尽管有活动的会话,仍然调用 restoreState()!"
 
-#: ../src/core/core.cpp:295
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
 msgctxt "Core|"
 msgid "Admin user or password not set."
 msgstr "管理员的用户名或密码未设置。"
 
-#: ../src/core/core.cpp:298
+#: ../src/core/core.cpp:293
 msgctxt "Core|"
 msgid "Could not setup storage!"
 msgstr "无法设置存储!"
 
-#: ../src/core/core.cpp:302
+#: ../src/core/core.cpp:298
 msgctxt "Core|"
 msgid "Creating admin user..."
 msgstr "正在创建管理员用户..."
 
-#: ../src/core/core.cpp:434
+#: ../src/core/core.cpp:451
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1"
 msgstr "无效的侦听地址 %1"
 
-#: ../src/core/core.cpp:443
+#: ../src/core/core.cpp:460
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
 msgstr "正在 IPv6 %1 端口 %2 上进行 GUI 客户端侦听,使用 %3 版本协议"
 
-#: ../src/core/core.cpp:452
+#: ../src/core/core.cpp:469
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv6 interface %1:%2: %3"
 msgstr "无法打开 IPv6 接口 %1:%2:%3"
 
-#: ../src/core/core.cpp:460
+#: ../src/core/core.cpp:477
 #, qt-format
 msgctxt "Core|"
 msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
 msgstr "正在 IPv4 %1 端口 %2 上进行 GUI 客户端侦听,使用 %3 版本协议"
 
-#: ../src/core/core.cpp:471
+#: ../src/core/core.cpp:488
 #, qt-format
 msgctxt "Core|"
 msgid "Could not open IPv4 interface %1:%2: %3"
 msgstr "无法打开 IPv4 接口 %1:%2:%3"
 
-#: ../src/core/core.cpp:479
+#: ../src/core/core.cpp:496
 #, qt-format
 msgctxt "Core|"
 msgid "Invalid listen address %1, unknown network protocol"
 msgstr "侦听地址 %1 无效,网络协议未知"
 
-#: ../src/core/core.cpp:488
+#: ../src/core/core.cpp:505
 msgctxt "Core|"
 msgid "Could not open any network interfaces to listen on!"
 msgstr "无法打开任何可侦听的网络接口"
 
-#: ../src/core/core.cpp:527
+#: ../src/core/core.cpp:545
 msgctxt "Core|"
 msgid "Client connected from"
 msgstr "客户端已连接自"
 
-#: ../src/core/core.cpp:530
+#: ../src/core/core.cpp:548
 msgctxt "Core|"
 msgid "Closing server for basic setup."
 msgstr "关闭服务器以进行基本设置。"
 
-#: ../src/core/core.cpp:547
-msgctxt "Core|"
-msgid "Antique client trying to connect... refusing."
-msgstr "旧版的客户端正在尝试连接...拒绝。"
-
 #: ../src/core/core.cpp:560
-#, qt-format
-msgctxt "Core|"
-msgid ""
-"<b>Your Quassel Client is too old!</b><br>This core needs at least "
-"client/core protocol version %1.<br>Please consider upgrading your client."
-msgstr "<b>您的 Quassel 客户端太过时了!</b><br>此核心至少需要客户端/核心协议版本 %1。<br>请考虑更新您的客户端。"
-
-#: ../src/core/core.cpp:564 ../src/core/core.cpp:656 ../src/core/core.cpp:682
-msgctxt "Core|"
-msgid "Client"
-msgstr "客戶端"
-
-#: ../src/core/core.cpp:564
-msgctxt "Core|"
-msgid "too old, rejecting."
-msgstr "过旧,拒绝。"
-
-#: ../src/core/core.cpp:582
-#, qt-format
-msgctxt "Core|"
-msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
-msgstr "<b>Quassel 核心版本 %1</b><br>编译:%2<br>已运行 %3天%4小时%5分(始于 %6)"
-
-#: ../src/core/core.cpp:636
-msgctxt "Core|"
-msgid "Starting TLS for Client:"
-msgstr "正在启动客户端的 TLS:"
-
-#: ../src/core/core.cpp:654
-msgctxt "Core|"
-msgid ""
-"<b>Client not initialized!</b><br>You need to send an init message before "
-"trying to login."
-msgstr "<b>客户端没有初始化!</b><br>您需要先发送一个 init(初始化) 消息才能尝试登录。"
-
-#: ../src/core/core.cpp:656
-msgctxt "Core|"
-msgid "did not send an init message before trying to login, rejecting."
-msgstr "在尝试登录前没有发送初始化消息,拒绝。"
-
-#: ../src/core/core.cpp:676
-msgctxt "Core|"
-msgid ""
-"<b>Invalid username or password!</b><br>The username/password combination "
-"you supplied could not be found in the database."
-msgstr "<b>用户名或密码无效!</b><br>您提供的用户名/密码组合在数据库中找不到。"
-
-#: ../src/core/core.cpp:682
-#, qt-format
 msgctxt "Core|"
-msgid "initialized and authenticated successfully as \"%1\" (UserId: %2)."
-msgstr "已成功初始化并认证为“%1”(用户ID:%2)。"
-
-#: ../src/core/core.cpp:695
-msgctxt "Core|"
-msgid "Non-authed client disconnected."
-msgstr "非认证客户端已断开。"
+msgid "Non-authed client disconnected:"
+msgstr ""
 
-#: ../src/core/core.cpp:724
+#: ../src/core/core.cpp:592
 msgctxt "Core|"
 msgid "Could not initialize session for client:"
 msgstr "无法初始化客户端会话:"
 
-#: ../src/core/core.cpp:750
+#: ../src/core/core.cpp:619
 msgctxt "Core|"
 msgid "Could not find a session for client:"
 msgstr "无法找到客户端会话:"
@@ -1635,17 +1637,74 @@ msgctxt "CoreAccountSettingsPage|"
 msgid "Remote Cores"
 msgstr "远程核心"
 
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr "客戶端"
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr "过旧,拒绝。"
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr "在尝试登录前没有发送初始化消息,拒绝。"
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr "<b>客户端没有初始化!</b><br>您需要先发送一个 init(初始化) 消息才能尝试登录。"
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr "<b>用户名或密码无效!</b><br>您提供的用户名/密码组合在数据库中找不到。"
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
 #: ../src/qtui/coreconfigwizard.cpp:69
 msgctxt "CoreConfigWizard|"
 msgid "Core Configuration Wizard"
 msgstr "核心配置向导"
 
-#: ../src/qtui/coreconfigwizard.cpp:103
+#: ../src/qtui/coreconfigwizard.cpp:98
 msgctxt "CoreConfigWizard|"
 msgid "Your core has been successfully configured. Logging you in..."
 msgstr "您的核心已经配置成功。正在为您登录..."
 
-#: ../src/qtui/coreconfigwizard.cpp:112
+#: ../src/qtui/coreconfigwizard.cpp:107
 #, qt-format
 msgctxt "CoreConfigWizard|"
 msgid ""
@@ -1653,7 +1712,7 @@ msgid ""
 "over."
 msgstr "核心配置失败:<br><b>%1</b><br>点击 <em>下一步</em> 重新开始。"
 
-#: ../src/qtui/coreconfigwizard.cpp:131
+#: ../src/qtui/coreconfigwizard.cpp:126
 msgctxt "CoreConfigWizard|"
 msgid ""
 "Your are now logged into your freshly configured Quassel Core!<br>Please "
@@ -1702,46 +1761,46 @@ msgctxt "CoreConfigWizardIntroPage|"
 msgid "This wizard will guide you through the setup of your Quassel Core."
 msgstr "此向导将指引您完成 Quassel 核心的设置。"
 
-#: ../src/qtui/coreconfigwizard.cpp:167
+#: ../src/qtui/coreconfigwizard.cpp:162
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid "Create Admin User"
 msgstr "创建管理员用户"
 
-#: ../src/qtui/coreconfigwizard.cpp:168
+#: ../src/qtui/coreconfigwizard.cpp:163
 msgctxt "CoreConfigWizardPages::AdminUserPage|"
 msgid ""
 "First, we will create a user on the core. This first user will have "
 "administrator privileges."
 msgstr "首先,我们将在核心上创建一位用户。第一位用户将拥有管理员权限。"
 
-#: ../src/qtui/coreconfigwizard.cpp:150
+#: ../src/qtui/coreconfigwizard.cpp:145
 msgctxt "CoreConfigWizardPages::IntroPage|"
 msgid "Introduction"
 msgstr "介绍"
 
-#: ../src/qtui/coreconfigwizard.cpp:203
+#: ../src/qtui/coreconfigwizard.cpp:198
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Select Storage Backend"
 msgstr "选择存储后端"
 
-#: ../src/qtui/coreconfigwizard.cpp:204
+#: ../src/qtui/coreconfigwizard.cpp:199
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid ""
 "Please select a database backend for the Quassel Core storage to store the "
 "backlog and other data in."
 msgstr "请选择一个用于 Quassel 核心存储的储备和其他数据用的数据库后端。"
 
-#: ../src/qtui/coreconfigwizard.cpp:305
+#: ../src/qtui/coreconfigwizard.cpp:300
 msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
 msgid "Connection Properties"
 msgstr "连接属性"
 
-#: ../src/qtui/coreconfigwizard.cpp:347
+#: ../src/qtui/coreconfigwizard.cpp:342
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid "Storing Your Settings"
 msgstr "正在保存您的设置"
 
-#: ../src/qtui/coreconfigwizard.cpp:348
+#: ../src/qtui/coreconfigwizard.cpp:343
 msgctxt "CoreConfigWizardPages::SyncPage|"
 msgid ""
 "Your settings are now stored in the core, and you will be logged in "
@@ -1839,103 +1898,62 @@ msgctxt "CoreConnectDlg|"
 msgid "Connect to Core"
 msgstr "连接到核心"
 
-#: ../src/client/coreconnection.cpp:190
+#: ../src/client/coreconnection.cpp:193
 msgctxt "CoreConnection|"
 msgid "Network is down"
 msgstr "网络已断"
 
-#: ../src/client/coreconnection.cpp:225 ../src/client/coreconnection.cpp:367
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
 msgctxt "CoreConnection|"
 msgid "Disconnected"
 msgstr "连接已断开"
 
-#: ../src/client/coreconnection.cpp:228
+#: ../src/client/coreconnection.cpp:230
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Looking up %1..."
 msgstr "正在查找 %1..."
 
-#: ../src/client/coreconnection.cpp:231 ../src/client/coreconnection.cpp:520
+#: ../src/client/coreconnection.cpp:233
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connecting to %1..."
 msgstr "正在连接 %1..."
 
-#: ../src/client/coreconnection.cpp:234 ../src/client/coreconnection.cpp:660
+#: ../src/client/coreconnection.cpp:236
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Connected to %1"
 msgstr "已连接到 %1"
 
-#: ../src/client/coreconnection.cpp:237
+#: ../src/client/coreconnection.cpp:239
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Disconnecting from %1..."
 msgstr "正在从 %1 断开..."
 
-#: ../src/client/coreconnection.cpp:303
-msgctxt "CoreConnection|"
-msgid ""
-"The Quassel Core you try to connect to is too old! Please consider "
-"upgrading."
-msgstr "您试图连接的 Quassel 核心过于陈旧!请考虑升级。"
-
-#: ../src/client/coreconnection.cpp:340
-msgctxt "CoreConnection|"
-msgid "Invalid data received from core"
-msgstr "从核心接收的数据无效"
-
-#: ../src/client/coreconnection.cpp:405
+#: ../src/client/coreconnection.cpp:363
 msgctxt "CoreConnection|"
 msgid "Disconnected from core."
 msgstr "已从核心断开。"
 
-#: ../src/client/coreconnection.cpp:498 ../src/client/coreconnection.cpp:592
-#: ../src/client/coreconnection.cpp:641
-msgctxt "CoreConnection|"
-msgid "Unencrypted connection canceled"
-msgstr "已取消了未加密连接"
-
-#: ../src/client/coreconnection.cpp:535
-msgctxt "CoreConnection|"
-msgid "Synchronizing to core..."
-msgstr "正在与核心同步..."
-
-#: ../src/client/coreconnection.cpp:558
-#, qt-format
-msgctxt "CoreConnection|"
-msgid ""
-"<b>The Quassel Core you are trying to connect to is too old!</b><br>Need at "
-"least core/client protocol v%1 to connect."
-msgstr "<b>您试图连接的 Quassel 核心过于陈旧!</b><br>至少需要核心/客户端协议 v%1 才能连接。"
-
-#: ../src/client/coreconnection.cpp:684
-msgctxt "CoreConnection|"
-msgid "Logging in..."
-msgstr "正在登录..."
-
-#: ../src/client/coreconnection.cpp:689
-msgctxt "CoreConnection|"
-msgid "Login canceled"
-msgstr "登录已取消"
-
-#: ../src/client/coreconnection.cpp:718
+#: ../src/client/coreconnection.cpp:501
 msgctxt "CoreConnection|"
 msgid "Receiving session state"
 msgstr "正在接收会话状态"
 
-#: ../src/client/coreconnection.cpp:720
+#: ../src/client/coreconnection.cpp:503
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronizing to %1..."
 msgstr "正在与 %1 同步..."
 
-#: ../src/client/coreconnection.cpp:746
+#: ../src/client/coreconnection.cpp:539
 msgctxt "CoreConnection|"
 msgid "Receiving network states"
 msgstr "正在接收网络状态"
 
-#: ../src/client/coreconnection.cpp:800
+#: ../src/client/coreconnection.cpp:590
 #, qt-format
 msgctxt "CoreConnection|"
 msgid "Synchronized to %1"
@@ -2114,52 +2132,52 @@ msgctxt "CoreInfoDlg|"
 msgid " %1:%2:%3 (since %4)"
 msgstr " %1:%2:%3 (始于 %4)"
 
-#: ../src/core/corenetwork.cpp:166
+#: ../src/core/corenetwork.cpp:167
 msgctxt "CoreNetwork|"
 msgid "Connection failed. Cycling to next Server"
 msgstr "连接失败。轮转到下个服务器"
 
-#: ../src/core/corenetwork.cpp:174 ../src/core/corenetwork.cpp:175
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connecting to %1:%2..."
 msgstr "正在连接到 %1:%2..."
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Disconnecting. (%1)"
 msgstr "正在断开。(%1)"
 
-#: ../src/core/corenetwork.cpp:227
+#: ../src/core/corenetwork.cpp:228
 msgctxt "CoreNetwork|"
 msgid "Core Shutdown"
 msgstr "核心关闭"
 
-#: ../src/core/corenetwork.cpp:422
+#: ../src/core/corenetwork.cpp:423
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Could not connect to %1 (%2)"
 msgstr "无法连接到 %1 (%2)"
 
-#: ../src/core/corenetwork.cpp:424
+#: ../src/core/corenetwork.cpp:425
 #, qt-format
 msgctxt "CoreNetwork|"
 msgid "Connection failure: %1"
 msgstr "连接失败:%1"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 msgctxt "CoreSession|"
 msgid "Client"
 msgstr "客戶端"
 
-#: ../src/core/coresession.cpp:230
+#: ../src/core/coresession.cpp:227
 #, qt-format
 msgctxt "CoreSession|"
 msgid "disconnected (UserId: %1)."
 msgstr "已断开(用户ID:%1)。"
 
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:474
 #, qt-format
 msgctxt "CoreSession|"
 msgid ""
@@ -2167,7 +2185,7 @@ msgid ""
 " create network %1!"
 msgstr "CoreSession::createNetwork():在尝试创建网络 %1 时收到来自核心的无效的网络ID!"
 
-#: ../src/core/coresession.cpp:523
+#: ../src/core/coresession.cpp:506
 msgctxt "CoreSession|"
 msgid ""
 "CoreSession::createNetwork(): Trying to create a network that already "
@@ -2215,8 +2233,8 @@ msgstr "正在向 %2 发送 CTCP-%1 请求"
 
 #: ../src/core/coreuserinputhandler.cpp:190
 #: ../src/core/coreuserinputhandler.cpp:361
-#: ../src/core/coreuserinputhandler.cpp:605
-#: ../src/core/coreuserinputhandler.cpp:643
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
@@ -2231,7 +2249,7 @@ msgid ""
 msgstr "[用法] /delkey <昵称|频道> 删除昵称或频道对应的加密密钥,在频道或查询中,只用 /delkey 即可。"
 
 #: ../src/core/coreuserinputhandler.cpp:208
-#: ../src/core/coreuserinputhandler.cpp:661
+#: ../src/core/coreuserinputhandler.cpp:662
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "No key has been set for %1."
@@ -2244,7 +2262,7 @@ msgid "The key for %1 has been deleted."
 msgstr "%1 的密钥已经删除。"
 
 #: ../src/core/coreuserinputhandler.cpp:217
-#: ../src/core/coreuserinputhandler.cpp:669
+#: ../src/core/coreuserinputhandler.cpp:670
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2277,7 +2295,7 @@ msgid "Initiated key exchange with %1."
 msgstr ""
 
 #: ../src/core/coreuserinputhandler.cpp:397
-#: ../src/core/coreuserinputhandler.cpp:627
+#: ../src/core/coreuserinputhandler.cpp:628
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "Error: Setting an encryption key requires Quassel to have been built with "
@@ -2286,13 +2304,13 @@ msgid ""
 "with QCA present."
 msgstr "错误:设置加密密钥要求编译的 Quassel 内建 Qt 加密架构(QCA)库支持。联系您的发行商查找带 QCA 支持的 Quassel 软件包,或者用现有的 QCA 重新编译 Quassel。"
 
-#: ../src/core/coreuserinputhandler.cpp:555
+#: ../src/core/coreuserinputhandler.cpp:556
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "Starting query with %1"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:615
+#: ../src/core/coreuserinputhandler.cpp:616
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
@@ -2300,26 +2318,26 @@ msgid ""
 "it."
 msgstr "[用法] /setkey <昵称|频道> <密钥> 设置昵称或频道对应的加密密钥。在频道或查询缓冲区中时,使用 /setkey <密钥> 将设置相应于频道或缓存的密钥。"
 
-#: ../src/core/coreuserinputhandler.cpp:624
+#: ../src/core/coreuserinputhandler.cpp:625
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 has been set."
 msgstr "%1 的密钥已经设置。"
 
-#: ../src/core/coreuserinputhandler.cpp:653
+#: ../src/core/coreuserinputhandler.cpp:654
 msgctxt "CoreUserInputHandler|"
 msgid ""
 "[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
 " or just /showkey when in a channel or query."
 msgstr "[用法] /delkey <昵称|频道> 删除昵称或频道对应的加密密钥,在频道或查询中,只用 /delkey 即可。"
 
-#: ../src/core/coreuserinputhandler.cpp:665
+#: ../src/core/coreuserinputhandler.cpp:666
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "The key for %1 is %2:%3"
 msgstr ""
 
-#: ../src/core/coreuserinputhandler.cpp:793
+#: ../src/core/coreuserinputhandler.cpp:794
 #, qt-format
 msgctxt "CoreUserInputHandler|"
 msgid "[Error] Could not encrypt your message: %1"
@@ -2797,7 +2815,7 @@ msgid "highlight rule"
 msgstr "高亮规则"
 
 #: ../src/qtui/settingspages/identitiessettingspage.ui:31
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:369
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
 msgctxt "IdentitiesSettingsPage|"
 msgid "Rename Identity"
 msgstr "重命名身份"
@@ -2833,55 +2851,55 @@ msgctxt "IdentitiesSettingsPage|"
 msgid "Identities"
 msgstr "身份"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:204
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
 msgctxt "IdentitiesSettingsPage|"
 msgid ""
 "<b>The following problems need to be corrected before your changes can be "
 "applied:</b><ul>"
 msgstr "<b>在应用更改前,您需要修正收下问题:</b><ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>All identities need an identity name set</li>"
 msgstr "<li>所有的身份需要一个身份名称组</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>Every identity needs at least one nickname defined</li>"
 msgstr "<li>每个身份必须定义至少一个昵称</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify a real name for every identity</li>"
 msgstr "<li>您必须为每个身份指定一个真名</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
 msgctxt "IdentitiesSettingsPage|"
 msgid "<li>You need to specify an ident for every identity</li>"
 msgstr "<li>您需要为每个身份指定一个标识(ID)</li>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
 msgctxt "IdentitiesSettingsPage|"
 msgid "</ul>"
 msgstr "</ul>"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
 msgctxt "IdentitiesSettingsPage|"
 msgid "One or more identities are invalid"
 msgstr "一个或多个身份无效"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:355
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
 msgctxt "IdentitiesSettingsPage|"
 msgid "Delete Identity?"
 msgstr "删除身份?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Do you really want to delete identity \"%1\"?"
 msgstr "您真的要删除身份“%1”?"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
 #, qt-format
 msgctxt "IdentitiesSettingsPage|"
 msgid "Please enter a new name for the identity \"%1\"!"
@@ -3911,379 +3929,396 @@ msgctxt "KeySequenceWidget|"
 msgid "Reassign"
 msgstr "重新指派"
 
-#: ../src/qtui/mainwin.cpp:350
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr "<b>Quassel 核心版本 %1</b><br>编译:%2<br>已运行 %3天%4小时%5分(始于 %6)"
+
+#: ../src/qtui/mainwin.cpp:355
 msgctxt "MainWin|"
 msgid "General"
 msgstr "常规"
 
-#: ../src/qtui/mainwin.cpp:352
+#: ../src/qtui/mainwin.cpp:357
 msgctxt "MainWin|"
 msgid "&Connect to Core..."
 msgstr "连接到核心(&C)..."
 
-#: ../src/qtui/mainwin.cpp:354
+#: ../src/qtui/mainwin.cpp:359
 msgctxt "MainWin|"
 msgid "&Disconnect from Core"
 msgstr "从核心断开(&D)"
 
-#: ../src/qtui/mainwin.cpp:356
+#: ../src/qtui/mainwin.cpp:361
 msgctxt "MainWin|"
 msgid "Core &Info..."
 msgstr "核心信息(&I)..."
 
-#: ../src/qtui/mainwin.cpp:358
+#: ../src/qtui/mainwin.cpp:363
 msgctxt "MainWin|"
 msgid "Configure &Networks..."
 msgstr "配置网络(&N)..."
 
-#: ../src/qtui/mainwin.cpp:361
+#: ../src/qtui/mainwin.cpp:366
 msgctxt "MainWin|"
 msgid "&Quit"
 msgstr "退出(&Q)"
 
-#: ../src/qtui/mainwin.cpp:365
+#: ../src/qtui/mainwin.cpp:370
 msgctxt "MainWin|"
 msgid "&Configure Chat Lists..."
 msgstr "配置聊天列表(&C)..."
 
-#: ../src/qtui/mainwin.cpp:368
+#: ../src/qtui/mainwin.cpp:373
 msgctxt "MainWin|"
 msgid "&Lock Layout"
 msgstr "锁定布局(&L)"
 
-#: ../src/qtui/mainwin.cpp:372
+#: ../src/qtui/mainwin.cpp:377
 msgctxt "MainWin|"
 msgid "Show &Search Bar"
 msgstr "显示搜索栏(&S)"
 
-#: ../src/qtui/mainwin.cpp:374
+#: ../src/qtui/mainwin.cpp:379
 msgctxt "MainWin|"
 msgid "Show Away Log"
 msgstr "显示离开记录"
 
-#: ../src/qtui/mainwin.cpp:376
+#: ../src/qtui/mainwin.cpp:381
 msgctxt "MainWin|"
 msgid "Show &Menubar"
 msgstr "显示菜单栏(&M)"
 
-#: ../src/qtui/mainwin.cpp:379
+#: ../src/qtui/mainwin.cpp:384
 msgctxt "MainWin|"
 msgid "Show Status &Bar"
 msgstr "显示状态栏(&B)"
 
-#: ../src/qtui/mainwin.cpp:385
+#: ../src/qtui/mainwin.cpp:390
 msgctxt "MainWin|"
 msgid "&Full Screen Mode"
 msgstr "全屏模式(&F)"
 
-#: ../src/qtui/mainwin.cpp:392
+#: ../src/qtui/mainwin.cpp:397
 msgctxt "MainWin|"
 msgid "Configure &Shortcuts..."
 msgstr "配置快捷键(&S)..."
 
-#: ../src/qtui/mainwin.cpp:398 ../src/qtui/mainwin.cpp:402
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
 msgctxt "MainWin|"
 msgid "&Configure Quassel..."
 msgstr "配置 Quassel(&C)..."
 
-#: ../src/qtui/mainwin.cpp:408
+#: ../src/qtui/mainwin.cpp:413
 msgctxt "MainWin|"
 msgid "&About Quassel"
 msgstr "关于 Quassel(&A)"
 
-#: ../src/qtui/mainwin.cpp:413
+#: ../src/qtui/mainwin.cpp:418
 msgctxt "MainWin|"
 msgid "About &Qt"
 msgstr "关于&Qt"
 
-#: ../src/qtui/mainwin.cpp:417
+#: ../src/qtui/mainwin.cpp:422
 msgctxt "MainWin|"
 msgid "Debug &NetworkModel"
 msgstr "调试网络模型(&N)"
 
-#: ../src/qtui/mainwin.cpp:419
+#: ../src/qtui/mainwin.cpp:424
 msgctxt "MainWin|"
 msgid "Debug &BufferViewOverlay"
 msgstr "调试缓存视图覆盖(&B)"
 
-#: ../src/qtui/mainwin.cpp:421
+#: ../src/qtui/mainwin.cpp:426
 msgctxt "MainWin|"
 msgid "Debug &MessageModel"
 msgstr "调试消息模型(&M)"
 
-#: ../src/qtui/mainwin.cpp:423
+#: ../src/qtui/mainwin.cpp:428
 msgctxt "MainWin|"
 msgid "Debug &HotList"
 msgstr "调试日志(&L)"
 
-#: ../src/qtui/mainwin.cpp:425
+#: ../src/qtui/mainwin.cpp:430
 msgctxt "MainWin|"
 msgid "Debug &Log"
 msgstr "调试日志(&L)"
 
-#: ../src/qtui/mainwin.cpp:427
+#: ../src/qtui/mainwin.cpp:432
 msgctxt "MainWin|"
 msgid "Reload Stylesheet"
 msgstr "重新加载样式表"
 
-#: ../src/qtui/mainwin.cpp:430
+#: ../src/qtui/mainwin.cpp:435
 msgctxt "MainWin|"
 msgid "Hide Current Buffer"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:434
+#: ../src/qtui/mainwin.cpp:439
 msgctxt "MainWin|"
 msgid "Navigation"
 msgstr "导航"
 
-#: ../src/qtui/mainwin.cpp:436
+#: ../src/qtui/mainwin.cpp:441
 msgctxt "MainWin|"
 msgid "Jump to hot chat"
 msgstr ""
 
-#: ../src/qtui/mainwin.cpp:448
+#: ../src/qtui/mainwin.cpp:453
 msgctxt "MainWin|"
 msgid "Set Quick Access #0"
 msgstr "设置快速访问 #0"
 
-#: ../src/qtui/mainwin.cpp:450
+#: ../src/qtui/mainwin.cpp:455
 msgctxt "MainWin|"
 msgid "Set Quick Access #1"
 msgstr "设置快速访问 #1"
 
-#: ../src/qtui/mainwin.cpp:452
+#: ../src/qtui/mainwin.cpp:457
 msgctxt "MainWin|"
 msgid "Set Quick Access #2"
 msgstr "设置快速访问 #2"
 
-#: ../src/qtui/mainwin.cpp:454
+#: ../src/qtui/mainwin.cpp:459
 msgctxt "MainWin|"
 msgid "Set Quick Access #3"
 msgstr "设置快速访问 #3"
 
-#: ../src/qtui/mainwin.cpp:456
+#: ../src/qtui/mainwin.cpp:461
 msgctxt "MainWin|"
 msgid "Set Quick Access #4"
 msgstr "设置快速访问 #4"
 
-#: ../src/qtui/mainwin.cpp:458
+#: ../src/qtui/mainwin.cpp:463
 msgctxt "MainWin|"
 msgid "Set Quick Access #5"
 msgstr "设置快速访问 #5"
 
-#: ../src/qtui/mainwin.cpp:460
+#: ../src/qtui/mainwin.cpp:465
 msgctxt "MainWin|"
 msgid "Set Quick Access #6"
 msgstr "设置快速访问 #6"
 
-#: ../src/qtui/mainwin.cpp:462
+#: ../src/qtui/mainwin.cpp:467
 msgctxt "MainWin|"
 msgid "Set Quick Access #7"
 msgstr "设置快速访问 #7"
 
-#: ../src/qtui/mainwin.cpp:464
+#: ../src/qtui/mainwin.cpp:469
 msgctxt "MainWin|"
 msgid "Set Quick Access #8"
 msgstr "设置快速访问 #8"
 
-#: ../src/qtui/mainwin.cpp:466
+#: ../src/qtui/mainwin.cpp:471
 msgctxt "MainWin|"
 msgid "Set Quick Access #9"
 msgstr "设置快速访问 #9"
 
-#: ../src/qtui/mainwin.cpp:469
+#: ../src/qtui/mainwin.cpp:474
 msgctxt "MainWin|"
 msgid "Quick Access #0"
 msgstr "快速访问 #0"
 
-#: ../src/qtui/mainwin.cpp:471
+#: ../src/qtui/mainwin.cpp:476
 msgctxt "MainWin|"
 msgid "Quick Access #1"
 msgstr "快速访问 #1"
 
-#: ../src/qtui/mainwin.cpp:473
+#: ../src/qtui/mainwin.cpp:478
 msgctxt "MainWin|"
 msgid "Quick Access #2"
 msgstr "快速访问 #2"
 
-#: ../src/qtui/mainwin.cpp:475
+#: ../src/qtui/mainwin.cpp:480
 msgctxt "MainWin|"
 msgid "Quick Access #3"
 msgstr "快速访问 #3"
 
-#: ../src/qtui/mainwin.cpp:477
+#: ../src/qtui/mainwin.cpp:482
 msgctxt "MainWin|"
 msgid "Quick Access #4"
 msgstr "快速访问 #4"
 
-#: ../src/qtui/mainwin.cpp:479
+#: ../src/qtui/mainwin.cpp:484
 msgctxt "MainWin|"
 msgid "Quick Access #5"
 msgstr "快速访问 #5"
 
-#: ../src/qtui/mainwin.cpp:481
+#: ../src/qtui/mainwin.cpp:486
 msgctxt "MainWin|"
 msgid "Quick Access #6"
 msgstr "快速访问 #6"
 
-#: ../src/qtui/mainwin.cpp:483
+#: ../src/qtui/mainwin.cpp:488
 msgctxt "MainWin|"
 msgid "Quick Access #7"
 msgstr "快速访问 #7"
 
-#: ../src/qtui/mainwin.cpp:485
+#: ../src/qtui/mainwin.cpp:490
 msgctxt "MainWin|"
 msgid "Quick Access #8"
 msgstr "快速访问 #8"
 
-#: ../src/qtui/mainwin.cpp:487
+#: ../src/qtui/mainwin.cpp:492
 msgctxt "MainWin|"
 msgid "Quick Access #9"
 msgstr "快速访问 #9"
 
-#: ../src/qtui/mainwin.cpp:491
+#: ../src/qtui/mainwin.cpp:496
 msgctxt "MainWin|"
 msgid "Activate Next Chat List"
 msgstr "激活下一个聊天列表"
 
-#: ../src/qtui/mainwin.cpp:493
+#: ../src/qtui/mainwin.cpp:498
 msgctxt "MainWin|"
 msgid "Activate Previous Chat List"
 msgstr "激活上一个聊天列表"
 
-#: ../src/qtui/mainwin.cpp:495
+#: ../src/qtui/mainwin.cpp:500
 msgctxt "MainWin|"
 msgid "Go to Next Chat"
 msgstr "转到下个聊天"
 
-#: ../src/qtui/mainwin.cpp:497
+#: ../src/qtui/mainwin.cpp:502
 msgctxt "MainWin|"
 msgid "Go to Previous Chat"
 msgstr "转到上个聊天"
 
-#: ../src/qtui/mainwin.cpp:506
+#: ../src/qtui/mainwin.cpp:511
 msgctxt "MainWin|"
 msgid "&File"
 msgstr "文件(&F)"
 
-#: ../src/qtui/mainwin.cpp:519
+#: ../src/qtui/mainwin.cpp:524
 msgctxt "MainWin|"
 msgid "&Networks"
 msgstr "网络(&N)"
 
-#: ../src/qtui/mainwin.cpp:525
+#: ../src/qtui/mainwin.cpp:530
 msgctxt "MainWin|"
 msgid "&View"
 msgstr "查看(&V)"
 
-#: ../src/qtui/mainwin.cpp:526
+#: ../src/qtui/mainwin.cpp:531
 msgctxt "MainWin|"
 msgid "&Chat Lists"
 msgstr "聊天列表(&C)"
 
-#: ../src/qtui/mainwin.cpp:528
+#: ../src/qtui/mainwin.cpp:533
 msgctxt "MainWin|"
 msgid "&Toolbars"
 msgstr "工具栏(&T)"
 
-#: ../src/qtui/mainwin.cpp:542
+#: ../src/qtui/mainwin.cpp:547
 msgctxt "MainWin|"
 msgid "&Settings"
 msgstr "设置(&S)"
 
-#: ../src/qtui/mainwin.cpp:551
+#: ../src/qtui/mainwin.cpp:556
 msgctxt "MainWin|"
 msgid "&Help"
 msgstr "帮助(&H)"
 
-#: ../src/qtui/mainwin.cpp:559
+#: ../src/qtui/mainwin.cpp:564
 msgctxt "MainWin|"
 msgid "Debug"
 msgstr "调试"
 
-#: ../src/qtui/mainwin.cpp:835
+#: ../src/qtui/mainwin.cpp:840
 msgctxt "MainWin|"
 msgid "Nicks"
 msgstr "昵称"
 
-#: ../src/qtui/mainwin.cpp:844
+#: ../src/qtui/mainwin.cpp:849
 msgctxt "MainWin|"
 msgid "Show Nick List"
 msgstr "显示昵称列表"
 
-#: ../src/qtui/mainwin.cpp:857
+#: ../src/qtui/mainwin.cpp:862
 msgctxt "MainWin|"
 msgid "Chat Monitor"
 msgstr "聊天监视器"
 
-#: ../src/qtui/mainwin.cpp:869
+#: ../src/qtui/mainwin.cpp:874
 msgctxt "MainWin|"
 msgid "Show Chat Monitor"
 msgstr "显示聊天监视器"
 
-#: ../src/qtui/mainwin.cpp:875
+#: ../src/qtui/mainwin.cpp:880
 msgctxt "MainWin|"
 msgid "Inputline"
 msgstr "输入行"
 
-#: ../src/qtui/mainwin.cpp:884
+#: ../src/qtui/mainwin.cpp:889
 msgctxt "MainWin|"
 msgid "Show Input Line"
 msgstr "显示输入行"
 
-#: ../src/qtui/mainwin.cpp:899
+#: ../src/qtui/mainwin.cpp:904
 msgctxt "MainWin|"
 msgid "Topic"
 msgstr "主题"
 
-#: ../src/qtui/mainwin.cpp:911
+#: ../src/qtui/mainwin.cpp:916
 msgctxt "MainWin|"
 msgid "Show Topic Line"
 msgstr "显示话题行"
 
-#: ../src/qtui/mainwin.cpp:1005
+#: ../src/qtui/mainwin.cpp:1010
 msgctxt "MainWin|"
 msgid "Main Toolbar"
 msgstr "主工具栏"
 
-#: ../src/qtui/mainwin.cpp:1048
+#: ../src/qtui/mainwin.cpp:1053
 msgctxt "MainWin|"
 msgid "Connected to core."
 msgstr "已连接到核心。"
 
-#: ../src/qtui/mainwin.cpp:1147
+#: ../src/qtui/mainwin.cpp:1152
 msgctxt "MainWin|"
 msgid "Not connected to core."
 msgstr "未连接到核心。"
 
-#: ../src/qtui/mainwin.cpp:1165 ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "Unencrypted Connection"
 msgstr "未加密的连接"
 
-#: ../src/qtui/mainwin.cpp:1165
+#: ../src/qtui/mainwin.cpp:1170
 msgctxt "MainWin|"
 msgid "<b>Your client does not support SSL encryption</b>"
 msgstr "<b>您的客户端不支持 SSL 加密</b>"
 
-#: ../src/qtui/mainwin.cpp:1167 ../src/qtui/mainwin.cpp:1177
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
 msgctxt "MainWin|"
 msgid ""
 "Sensitive data, like passwords, will be transmitted unencrypted to your "
 "Quassel core."
 msgstr "像密码这样的敏感信息将以未加密的形式转送到您的 Quassel 核心。"
 
-#: ../src/qtui/mainwin.cpp:1175
+#: ../src/qtui/mainwin.cpp:1180
 msgctxt "MainWin|"
 msgid "<b>Your core does not support SSL encryption</b>"
 msgstr "<b>您的核心不支持 SSL 加密</b>"
 
-#: ../src/qtui/mainwin.cpp:1193 ../src/qtui/mainwin.cpp:1214
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
 msgctxt "MainWin|"
 msgid "Untrusted Security Certificate"
 msgstr "不信任的安全证书"
 
-#: ../src/qtui/mainwin.cpp:1194
+#: ../src/qtui/mainwin.cpp:1199
 #, qt-format
 msgctxt "MainWin|"
 msgid ""
@@ -4291,33 +4326,33 @@ msgid ""
 "following reasons:</b>"
 msgstr "<b>核心于 %1 提供的 SSL 证书不可信,原因如下:</b>"
 
-#: ../src/qtui/mainwin.cpp:1197
+#: ../src/qtui/mainwin.cpp:1202
 msgctxt "MainWin|"
 msgid "Continue"
 msgstr "继续"
 
-#: ../src/qtui/mainwin.cpp:1198
+#: ../src/qtui/mainwin.cpp:1203
 msgctxt "MainWin|"
 msgid "Show Certificate"
 msgstr "显示证书"
 
-#: ../src/qtui/mainwin.cpp:1215
+#: ../src/qtui/mainwin.cpp:1220
 msgctxt "MainWin|"
 msgid ""
 "Would you like to accept this certificate forever without being prompted?"
 msgstr "您想要永远接受此证书而不再提醒吗?"
 
-#: ../src/qtui/mainwin.cpp:1217
+#: ../src/qtui/mainwin.cpp:1222
 msgctxt "MainWin|"
 msgid "Current Session Only"
 msgstr "只对当前会话"
 
-#: ../src/qtui/mainwin.cpp:1218
+#: ../src/qtui/mainwin.cpp:1223
 msgctxt "MainWin|"
 msgid "Forever"
 msgstr "永远"
 
-#: ../src/qtui/mainwin.cpp:1229
+#: ../src/qtui/mainwin.cpp:1234
 msgctxt "MainWin|"
 msgid "Core Connection Error"
 msgstr "核心连接错误"
@@ -4794,7 +4829,7 @@ msgid ""
 "the special characters {, }, [, ], \\, |, `, ^, _ and -."
 msgstr "有效的昵称可以包含英文字母、数字和{、}、[、]、\\、|、`、^、_ 和 - 这几个特殊字符。"
 
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
 msgctxt "NickEditDlg|"
 msgid "Add Nickname"
 msgstr "添加昵称"
@@ -4809,7 +4844,7 @@ msgctxt "NotificationsSettingsPage|"
 msgid "Notifications"
 msgstr "通知"
 
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
 msgctxt "PhononNotificationBackend::ConfigWidget|"
 msgid "Select Audio File"
 msgstr "选择音频文件"
@@ -5417,6 +5452,42 @@ msgid ""
 "network"
 msgstr "要在连接网络后自动加入的一组 IRC 频道"
 
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr "表单"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr " 秒"
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
 #: ../src/core/sqlitestorage.cpp:60
 msgctxt "SqliteStorage|"
 msgid ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644 (file)
index 0000000..4215026
--- /dev/null
@@ -0,0 +1,6008 @@
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Quassel IRC\n"
+"Report-Msgid-Bugs-To: http://bugs.quassel-irc.org/\n"
+"PO-Revision-Date: 2014-01-29 09:56+0000\n"
+"Last-Translator: Daniel Albers <daniel@lbe.rs>\n"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/quassel/language/zh_TW/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Qt-Contexts: true\n"
+
+#: ../src/qtui/ui/aboutdlg.ui:17
+msgctxt "AboutDlg|"
+msgid "About Quassel"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:59
+msgctxt "AboutDlg|"
+msgid ""
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:15pt; font-weight:600; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Quassel IRC</p></body></html>"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:75
+msgctxt "AboutDlg|"
+msgid ""
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:10pt; font-weight:600; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Version 0.2.0-pre, Build &gt;= 474 (2008-02-08)</p></body></html>"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:115
+msgctxt "AboutDlg|"
+msgid "&About"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:135
+msgctxt "AboutDlg|"
+msgid "A&uthors"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:155
+msgctxt "AboutDlg|"
+msgid "&Contributors"
+msgstr ""
+
+#: ../src/qtui/ui/aboutdlg.ui:175
+msgctxt "AboutDlg|"
+msgid "&Thanks To"
+msgstr ""
+
+#: ../src/qtui/aboutdlg.cpp:33
+#, qt-format
+msgctxt "AboutDlg|"
+msgid "<b>Version:</b> %1<br><b>Protocol version:</b> %2<br><b>Built:</b> %3"
+msgstr ""
+
+#: ../src/qtui/aboutdlg.cpp:49
+msgctxt "AboutDlg|"
+msgid ""
+"<b>A modern, distributed IRC Client</b><br><br>&copy;%1 by the "
+"Quassel Project<br><a href=\"http://quassel-irc.org\">http://quassel-"
+"irc.org</a><br><a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a"
+" href=\"http://www.freenode.net\">Freenode</a><br><br>Quassel IRC is dual-"
+"licensed under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a>"
+" and <a href=\"http://www.gnu.org/licenses/gpl-3.0.txt\">GPLv3</a>.<br>Most "
+"icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen "
+"Team</a> and used under the <a "
+"href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>Please use "
+"<a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to "
+"report bugs."
+msgstr ""
+
+#: ../src/qtui/aboutdlg.cpp:67
+msgctxt "AboutDlg|"
+msgid "Quassel IRC is mainly developed by:"
+msgstr ""
+
+#: ../src/qtui/aboutdlg.cpp:84
+msgctxt "AboutDlg|"
+msgid ""
+"We would like to thank the following contributors (in alphabetical order) "
+"and everybody we forgot to mention here:"
+msgstr ""
+
+#: ../src/qtui/aboutdlg.cpp:201
+msgctxt "AboutDlg|"
+msgid ""
+"Special thanks goes to:<br><dl><dt><img src=\":/pics/quassel-"
+"eye.png\">&nbsp;<b>John \"nox\" Hand</b></dt><dd>for the original Quassel "
+"icon - The All-Seeing Eye</dt><dt><img src=\":/pics/oxygen.png\">&nbsp;<b><a"
+" href=\"http://www.oxygen-icons.org\">The Oxygen Team</a></b></dt><dd>for "
+"creating all the artwork you see throughout Quassel</dd><dt><img "
+"src=\":/pics/qt-logo-32.png\">&nbsp;<b><a "
+"href=\"http://www.trolltech.com\">Qt Software formerly known as "
+"Trolltech</a></b></dt><dd>for creating Qt and Qtopia, and for sponsoring "
+"development of QuasselTopia with Greenphones and more</dd><dt><a "
+"href=\"http://www.nokia.com\"><img "
+"src=\":/pics/nokia.png\"></a></b></dt><dd>for keeping Qt alive, and for "
+"sponsoring development of Quassel Mobile with N810s</dd>"
+msgstr ""
+
+#: ../src/core/abstractsqlstorage.cpp:127
+#, qt-format
+msgctxt "AbstractSqlStorage|"
+msgid ""
+"Installed Schema (version %1) is not up to date. Upgrading to version %2..."
+msgstr ""
+
+#: ../src/core/abstractsqlstorage.cpp:129
+msgctxt "AbstractSqlStorage|"
+msgid "Upgrade failed..."
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasesmodel.cpp:57
+msgctxt "AliasesModel|"
+msgid ""
+"<b>The shortcut for the alias</b><br />It can be used as a regular slash "
+"command.<br /><br /><b>Example:</b> \"foo\" can be used per /foo"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasesmodel.cpp:61
+msgctxt "AliasesModel|"
+msgid ""
+"<b>The string the shortcut will be expanded to</b><br /><b>special "
+"variables:</b><br /> - <b>$i</b> represents the i'th parameter.<br /> - "
+"<b>$i..j</b> represents the i'th to j'th parameter separated by spaces.<br "
+"/> - <b>$i..</b> represents all parameters from i on separated by spaces.<br"
+" /> - <b>$i:hostname</b> represents the hostname of the user identified by "
+"the i'th parameter or a * if unknown.<br /> - <b>$0</b> the whole string.<br"
+" /> - <b>$nick</b> your current nickname<br /> - <b>$channel</b> the name of"
+" the selected channel<br /><br />Multiple commands can be separated with "
+"semicolons<br /><br /><b>Example:</b> \"Test $1; Test $2; Test All $0\" will"
+" be expanded to three separate messages \"Test 1\", \"Test 2\" and \"Test "
+"All 1 2 3\" when called like /test 1 2 3"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasesmodel.cpp:185
+msgctxt "AliasesModel|"
+msgid "Alias"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasesmodel.cpp:186
+msgctxt "AliasesModel|"
+msgid "Expansion"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasessettingspage.ui:13
+msgctxt "AliasesSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasessettingspage.ui:27
+msgctxt "AliasesSettingsPage|"
+msgid "New"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasessettingspage.ui:41
+msgctxt "AliasesSettingsPage|"
+msgid "Delete"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasessettingspage.cpp:29
+msgctxt "AliasesSettingsPage|"
+msgid "IRC"
+msgstr ""
+
+#: ../src/qtui/settingspages/aliasessettingspage.cpp:29
+msgctxt "AliasesSettingsPage|"
+msgid "Aliases"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:14
+msgctxt "AppearanceSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:22
+msgctxt "AppearanceSettingsPage|"
+msgid "Client style:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:29
+msgctxt "AppearanceSettingsPage|"
+msgid "Set application style"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:36
+msgctxt "AppearanceSettingsPage|"
+msgid "Language:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:43
+msgctxt "AppearanceSettingsPage|"
+msgid "Set the application language. Requires restart!"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:47
+msgctxt "AppearanceSettingsPage|"
+msgid "<Untranslated>"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:52
+#: ../src/qtui/settingspages/appearancesettingspage.cpp:76
+msgctxt "AppearanceSettingsPage|"
+msgid "<System Default>"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:75
+msgctxt "AppearanceSettingsPage|"
+msgid "Use custom stylesheet"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:109
+msgctxt "AppearanceSettingsPage|"
+msgid "Path:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:141
+msgctxt "AppearanceSettingsPage|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:150
+msgctxt "AppearanceSettingsPage|"
+msgid "Show system tray icon"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:184
+msgctxt "AppearanceSettingsPage|"
+msgid "Hide to tray on close button"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:216
+msgctxt "AppearanceSettingsPage|"
+msgid "Enable animations"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:231
+msgctxt "AppearanceSettingsPage|"
+msgid "Message Redirection"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:237
+msgctxt "AppearanceSettingsPage|"
+msgid "User Notices:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:280
+msgctxt "AppearanceSettingsPage|"
+msgid "Server Notices:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:294
+msgctxt "AppearanceSettingsPage|"
+msgid "Default Target"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:301
+msgctxt "AppearanceSettingsPage|"
+msgid "Status Window"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:308
+msgctxt "AppearanceSettingsPage|"
+msgid "Current Chat"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.ui:315
+msgctxt "AppearanceSettingsPage|"
+msgid "Errors:"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.cpp:35
+msgctxt "AppearanceSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/appearancesettingspage.cpp:242
+msgctxt "AppearanceSettingsPage|"
+msgid "Please choose a stylesheet file"
+msgstr ""
+
+#: ../src/qtui/awaylogview.cpp:33
+msgctxt "AwayLogView|"
+msgid "Away Log"
+msgstr ""
+
+#: ../src/qtui/awaylogview.cpp:46
+msgctxt "AwayLogView|"
+msgid "Show Network Name"
+msgstr ""
+
+#: ../src/qtui/awaylogview.cpp:51
+msgctxt "AwayLogView|"
+msgid "Show Buffer Name"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:14
+msgctxt "BacklogSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:22
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"Number of messages to be requested from the core when using scrolling up in "
+"the buffer view."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:25
+msgctxt "BacklogSettingsPage|"
+msgid "Dynamic backlog amount:"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:75
+msgctxt "BacklogSettingsPage|"
+msgid "Backlog request method:"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:83
+msgctxt "BacklogSettingsPage|"
+msgid "Fixed amount per chat"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:88
+msgctxt "BacklogSettingsPage|"
+msgid "Unread messages per chat"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:93
+msgctxt "BacklogSettingsPage|"
+msgid "Globally unread messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:123
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"The simplest requester. It fetches a fixed amount of lines for each chat "
+"window from the backlog."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:138
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"amount of messages per buffer that are requested after the core connection "
+"has been established."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:141
+msgctxt "BacklogSettingsPage|"
+msgid "Initial backlog amount:"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:205
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"This requester fetches unread messages for each chat window individually. The amount of lines can be limited per chat.\n"
+"\n"
+"You can also choose to fetch additional older chatlines to provide a better context."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:222
+#: ../src/qtui/settingspages/backlogsettingspage.ui:232
+#: ../src/qtui/settingspages/backlogsettingspage.ui:354
+msgctxt "BacklogSettingsPage|"
+msgid "Maximum amount of messages to be fetched per buffer."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:225
+#: ../src/qtui/settingspages/backlogsettingspage.ui:347
+msgctxt "BacklogSettingsPage|"
+msgid "Limit:"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:235
+#: ../src/qtui/settingspages/backlogsettingspage.ui:357
+msgctxt "BacklogSettingsPage|"
+msgid "Unlimited"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:260
+#: ../src/qtui/settingspages/backlogsettingspage.ui:270
+#: ../src/qtui/settingspages/backlogsettingspage.ui:382
+#: ../src/qtui/settingspages/backlogsettingspage.ui:392
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"Amount of messages to be fetched in addition to the unread messages. The "
+"Limit does not apply here."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:263
+#: ../src/qtui/settingspages/backlogsettingspage.ui:385
+msgctxt "BacklogSettingsPage|"
+msgid "Additional Messages:"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:324
+msgctxt "BacklogSettingsPage|"
+msgid ""
+"This requester fetches all messages newer than the oldest unread message for all chats.\n"
+"\n"
+"Note: This requester is not recommended if you use hidden chat windows or have inactive chats (i.e.: no stale queries or channels).\n"
+"It is useful to limit the total amount of the backlog and is probably the fastest.\n"
+"\n"
+"You can also chose to fetch additional older chatlines to provide a better context."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.ui:344
+msgctxt "BacklogSettingsPage|"
+msgid "Maximum amount of messages to be fetched over all buffers."
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.cpp:27
+msgctxt "BacklogSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/backlogsettingspage.cpp:27
+msgctxt "BacklogSettingsPage|"
+msgid "Backlog Fetching"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:386
+#, qt-format
+msgctxt "BufferItem|"
+msgid "<p> %1 - %2 </p>"
+msgstr ""
+
+#: ../src/uisupport/bufferview.cpp:272
+msgctxt "BufferView|"
+msgid "Merge buffers permanently?"
+msgstr ""
+
+#: ../src/uisupport/bufferview.cpp:273
+#, qt-format
+msgctxt "BufferView|"
+msgid ""
+"Do you want to merge the buffer \"%1\" permanently into buffer \"%2\"?\n"
+" This cannot be reversed!"
+msgstr ""
+
+#: ../src/qtui/settingspages/buffervieweditdlg.ui:14
+msgctxt "BufferViewEditDlg|"
+msgid "Dialog"
+msgstr ""
+
+#: ../src/qtui/settingspages/buffervieweditdlg.ui:22
+msgctxt "BufferViewEditDlg|"
+msgid "Please enter a name for the chat list:"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:575
+msgctxt "BufferViewEditDlg|"
+msgid "Add Chat List"
+msgstr ""
+
+#: ../src/uisupport/bufferviewfilter.cpp:54
+msgctxt "BufferViewFilter|"
+msgid "Show / Hide Chats"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:14
+msgctxt "BufferViewSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:31
+msgctxt "BufferViewSettingsPage|"
+msgid "Re&name..."
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:48
+msgctxt "BufferViewSettingsPage|"
+msgid "&Add..."
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:71
+msgctxt "BufferViewSettingsPage|"
+msgid "De&lete"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:84
+msgctxt "BufferViewSettingsPage|"
+msgid "Chat List Settings"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:92
+msgctxt "BufferViewSettingsPage|"
+msgid "Network:"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:100
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:123
+msgctxt "BufferViewSettingsPage|"
+msgid "All"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:110
+msgctxt "BufferViewSettingsPage|"
+msgid ""
+"This option is not available when all Networks are visible.\n"
+"In this mode no separate status buffer is displayed."
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:114
+msgctxt "BufferViewSettingsPage|"
+msgid "Show status window"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:121
+msgctxt "BufferViewSettingsPage|"
+msgid "Show channels"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:128
+msgctxt "BufferViewSettingsPage|"
+msgid "Show queries"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:135
+msgctxt "BufferViewSettingsPage|"
+msgid "Hide inactive chats"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:142
+msgctxt "BufferViewSettingsPage|"
+msgid "Add new chats automatically"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:149
+msgctxt "BufferViewSettingsPage|"
+msgid "Sort alphabetically"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:156
+msgctxt "BufferViewSettingsPage|"
+msgid "Minimum Activity:"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:164
+msgctxt "BufferViewSettingsPage|"
+msgid "No Activity"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:169
+msgctxt "BufferViewSettingsPage|"
+msgid "Other Activity"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:174
+msgctxt "BufferViewSettingsPage|"
+msgid "New Message"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:179
+msgctxt "BufferViewSettingsPage|"
+msgid "Highlight"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.ui:205
+msgctxt "BufferViewSettingsPage|"
+msgid "Preview:"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:36
+msgctxt "BufferViewSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:36
+msgctxt "BufferViewSettingsPage|"
+msgid "Custom Chat Lists"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:378
+msgctxt "BufferViewSettingsPage|"
+msgid "Delete Chat List?"
+msgstr ""
+
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:379
+#, qt-format
+msgctxt "BufferViewSettingsPage|"
+msgid "Do you really want to delete the chat list \"%1\"?"
+msgstr ""
+
+#: ../src/qtui/ui/bufferviewwidget.ui:26
+msgctxt "BufferViewWidget|"
+msgid "BufferView"
+msgstr ""
+
+#: ../src/qtui/bufferwidget.cpp:78
+msgctxt "BufferWidget|"
+msgid "Zoom In"
+msgstr ""
+
+#: ../src/qtui/bufferwidget.cpp:84
+msgctxt "BufferWidget|"
+msgid "Zoom Out"
+msgstr ""
+
+#: ../src/qtui/bufferwidget.cpp:89
+msgctxt "BufferWidget|"
+msgid "Actual Size"
+msgstr ""
+
+#: ../src/qtui/bufferwidget.cpp:93
+msgctxt "BufferWidget|"
+msgid "Set Marker Line"
+msgstr ""
+
+#: ../src/qtui/bufferwidget.cpp:97
+msgctxt "BufferWidget|"
+msgid "Go to Marker Line"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:566
+#, qt-format
+msgctxt "ChannelBufferItem|"
+msgid "<b>Channel %1</b>"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:569
+#, qt-format
+msgctxt "ChannelBufferItem|"
+msgid "<b>Users:</b> %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:573
+#, qt-format
+msgctxt "ChannelBufferItem|"
+msgid "<b>Mode:</b> %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:584
+#, qt-format
+msgctxt "ChannelBufferItem|"
+msgid "<b>Topic:</b> %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:589
+msgctxt "ChannelBufferItem|"
+msgid "Not active <br /> Double-click to join"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:592
+#, qt-format
+msgctxt "ChannelBufferItem|"
+msgid "<p> %1 </p>"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:14
+msgctxt "ChannelListDlg|"
+msgid "Channel List"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:38
+msgctxt "ChannelListDlg|"
+msgid "Search Pattern:"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:48
+msgctxt "ChannelListDlg|"
+msgid ""
+"Toggle between simple and advanced mode.\n"
+"Advanced mode allows one to pass search strings to the IRC Server."
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:62
+msgctxt "ChannelListDlg|"
+msgid "Show Channels"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:86
+msgctxt "ChannelListDlg|"
+msgid "Filter:"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:98
+msgctxt "ChannelListDlg|"
+msgid "Errors Occurred:"
+msgstr ""
+
+#: ../src/qtui/ui/channellistdlg.ui:132
+msgctxt "ChannelListDlg|"
+msgid ""
+"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:8pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'Lucida Grande'; font-size:13pt;\">SUPER EVIL CATASTROPHIC ERROR!!11</span></p>\n"
+"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Lucida Grande'; font-size:13pt;\"></p></body></html>"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:14
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:22
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Operation Mode:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:29
+msgctxt "ChatMonitorSettingsPage|"
+msgid ""
+"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">Operation modes:</span></p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;\"><span style=\" font-weight:400; text-decoration: underline;\">Opt-In:</span> <span style=\" font-weight:400;\">Only buffers on the right side are shown in chatmonitor</span></p>\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" text-decoration: underline;\">Opt-Out:</span> Buffers on the right side will be ignored in chatmonitor</p></body></html>"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:61
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Available:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:88
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Move selected buffers to the left"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:102
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Move selected buffers to the right"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:133
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:258
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Show:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:147
+msgctxt "ChatMonitorSettingsPage|"
+msgid ""
+"Show highlights in chatmonitor even if the originating buffer is ignored"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:150
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Always show highlighted messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:157
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Show own messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:35
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:35
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Chat Monitor"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:59
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Opt In"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:60
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Opt Out"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:261
+msgctxt "ChatMonitorSettingsPage|"
+msgid "Ignore:"
+msgstr ""
+
+#: ../src/qtui/chatmonitorview.cpp:54
+msgctxt "ChatMonitorView|"
+msgid "Show Own Messages"
+msgstr ""
+
+#: ../src/qtui/chatmonitorview.cpp:61
+msgctxt "ChatMonitorView|"
+msgid "Show Network Name"
+msgstr ""
+
+#: ../src/qtui/chatmonitorview.cpp:66
+msgctxt "ChatMonitorView|"
+msgid "Show Buffer Name"
+msgstr ""
+
+#: ../src/qtui/chatmonitorview.cpp:73
+msgctxt "ChatMonitorView|"
+msgid "Configure..."
+msgstr ""
+
+#: ../src/qtui/chatscene.cpp:813
+msgctxt "ChatScene|"
+msgid "Copy Selection"
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:13
+msgctxt "ChatViewSearchBar|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:19
+#: ../src/qtui/ui/chatviewsearchbar.ui:33
+#: ../src/qtui/ui/chatviewsearchbar.ui:44
+msgctxt "ChatViewSearchBar|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:55
+msgctxt "ChatViewSearchBar|"
+msgid "case sensitive"
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:62
+msgctxt "ChatViewSearchBar|"
+msgid "search nick"
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:69
+msgctxt "ChatViewSearchBar|"
+msgid "search message"
+msgstr ""
+
+#: ../src/qtui/ui/chatviewsearchbar.ui:82
+msgctxt "ChatViewSearchBar|"
+msgid "ignore joins, parts, etc."
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:14
+msgctxt "ChatViewSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:22
+msgctxt "ChatViewSettingsPage|"
+msgid "Timestamp format:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:29
+msgctxt "ChatViewSettingsPage|"
+msgid ""
+"<html><head/><body><p>Usage examples:</p>\n"
+"<table cellpadding=\"2\">\n"
+"<tr><td>dd.MM.yyyy</td><td>21.05.2001</td></tr>\n"
+"<tr><td>ddd MMMM d yy</td><td>Tue May 21 01</td></tr>\n"
+"<tr><td>hh:mm:ss.zzz</td><td>14:13:09.042</td></tr>\n"
+"<tr><td>h:m:s ap</td><td>2:13:9 pm</td></tr>\n"
+"</table>\n"
+"</body></html>"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:42
+msgctxt "ChatViewSettingsPage|"
+msgid "[hh:mm:ss]"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:69
+msgctxt "ChatViewSettingsPage|"
+msgid "Custom chat window font:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:102
+msgctxt "ChatViewSettingsPage|"
+msgid "Show colored text in the chat window"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:105
+msgctxt "ChatViewSettingsPage|"
+msgid "Allow colored text (mIRC color codes)"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:121
+msgctxt "ChatViewSettingsPage|"
+msgid ""
+"Show a website preview window when hovering the mouse over a web address"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:124
+msgctxt "ChatViewSettingsPage|"
+msgid "Show previews of webpages on URL hover"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:140
+msgctxt "ChatViewSettingsPage|"
+msgid ""
+"Set the marker line to the bottom of the current chat window when selecting "
+"another channel"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:143
+msgctxt "ChatViewSettingsPage|"
+msgid "Set marker line automatically when switching chats"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:159
+msgctxt "ChatViewSettingsPage|"
+msgid "Custom Colors"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:177
+msgctxt "ChatViewSettingsPage|"
+msgid "Action:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:184
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:208
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:232
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:269
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:293
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:324
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:348
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:372
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:396
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:413
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:453
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:470
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:487
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:504
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:521
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:538
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:555
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:572
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:589
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:606
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:623
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:640
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:657
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:674
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:691
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:708
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:736
+msgctxt "ChatViewSettingsPage|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:201
+msgctxt "ChatViewSettingsPage|"
+msgid "Timestamp:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:225
+msgctxt "ChatViewSettingsPage|"
+msgid "Channel message:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:262
+msgctxt "ChatViewSettingsPage|"
+msgid "Highlight foreground:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:286
+msgctxt "ChatViewSettingsPage|"
+msgid "Command message:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:310
+msgctxt "ChatViewSettingsPage|"
+msgid "Highlight background:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:317
+msgctxt "ChatViewSettingsPage|"
+msgid "Server message:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:341
+msgctxt "ChatViewSettingsPage|"
+msgid "Marker line:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:365
+msgctxt "ChatViewSettingsPage|"
+msgid "Error message:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:389
+msgctxt "ChatViewSettingsPage|"
+msgid "Background:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:433
+msgctxt "ChatViewSettingsPage|"
+msgid "Use Sender Coloring"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.ui:729
+msgctxt "ChatViewSettingsPage|"
+msgid "Own messages:"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
+msgctxt "ChatViewSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
+msgctxt "ChatViewSettingsPage|"
+msgid "Chat View"
+msgstr ""
+
+#: ../src/qtui/settingspages/chatviewsettingspage.cpp:41
+msgctxt "ChatViewSettingsPage|"
+msgid "You need at least version 0.6 of quasselcore to use this feature"
+msgstr ""
+
+#: ../src/client/client.cpp:318
+msgctxt "Client|"
+msgid "Identity already exists in client!"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:61
+#: ../src/client/clientauthhandler.cpp:256
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection canceled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:84
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:154
+msgctxt "ClientAuthHandler|"
+msgid "Synchronizing to core..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:167
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid ""
+"<b>The Quassel Core you are trying to connect to is too old!</b><br>We need "
+"at least protocol v%1, but the core speaks v%2 only."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:169
+msgctxt "ClientAuthHandler|"
+msgid "Incompatible protocol version, connection to core refused"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:176
+msgctxt "ClientAuthHandler|"
+msgid "The core refused connection from this client"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:207
+msgctxt "ClientAuthHandler|"
+msgid "Unencrypted connection cancelled"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:275
+#, qt-format
+msgctxt "ClientAuthHandler|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:317
+msgctxt "ClientAuthHandler|"
+msgid "Logging in..."
+msgstr ""
+
+#: ../src/client/clientauthhandler.cpp:322
+msgctxt "ClientAuthHandler|"
+msgid "Login canceled"
+msgstr ""
+
+#: ../src/client/clientbacklogmanager.cpp:178
+#, qt-format
+msgctxt "ClientBacklogManager|"
+msgid "Processed %1 messages in %2 seconds."
+msgstr ""
+
+#: ../src/client/clientbufferviewmanager.cpp:60
+msgctxt "ClientBufferViewManager|"
+msgid "All Chats"
+msgstr ""
+
+#: ../src/client/clientuserinputhandler.cpp:98
+msgctxt "ClientUserInputHandler|"
+msgid "/JOIN expects a channel"
+msgstr ""
+
+#: ../src/client/clientuserinputhandler.cpp:110
+msgctxt "ClientUserInputHandler|"
+msgid "/QUERY expects at least a nick"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:14
+msgctxt "ConnectionSettingsPage|"
+msgid "Configure the IRC Connection"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:20
+msgctxt "ConnectionSettingsPage|"
+msgid "Enable Ping Timeout Detection"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:37
+msgctxt "ConnectionSettingsPage|"
+msgid "Ping interval:"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:44
+#: ../src/qtui/settingspages/connectionsettingspage.ui:155
+#: ../src/qtui/settingspages/connectionsettingspage.ui:213
+msgctxt "ConnectionSettingsPage|"
+msgid " seconds"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:80
+msgctxt "ConnectionSettingsPage|"
+msgid "Disconnect after"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:103
+msgctxt "ConnectionSettingsPage|"
+msgid "missed pings"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:128
+msgctxt "ConnectionSettingsPage|"
+msgid ""
+"This enables periodic polling of user information using /WHO. This is mostly"
+" interesting for tracking users' away status."
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:131
+msgctxt "ConnectionSettingsPage|"
+msgid "Enable Automatic User Information Lookup (/WHO)"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:148
+msgctxt "ConnectionSettingsPage|"
+msgid "Update interval:"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:177
+msgctxt "ConnectionSettingsPage|"
+msgid "Ignore channels with more than:"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:184
+msgctxt "ConnectionSettingsPage|"
+msgid " users"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:206
+msgctxt "ConnectionSettingsPage|"
+msgid "Minimum delay between requests:"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.ui:250
+msgctxt "ConnectionSettingsPage|"
+msgid "Enable standard-compliant CTCP behavior"
+msgstr ""
+
+#: ../src/qtui/settingspages/connectionsettingspage.cpp:27
+msgctxt "ConnectionSettingsPage|"
+msgid "IRC"
+msgstr ""
+
+#: ../src/qtui/chatitem.cpp:803
+msgctxt "ContentsChatItem|"
+msgid "Copy Link Address"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:39
+msgctxt "ContextMenuActionProvider|"
+msgid "Connect"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:40
+msgctxt "ContextMenuActionProvider|"
+msgid "Disconnect"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:42
+msgctxt "ContextMenuActionProvider|"
+msgid "Join"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:43
+msgctxt "ContextMenuActionProvider|"
+msgid "Part"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:44
+msgctxt "ContextMenuActionProvider|"
+msgid "Delete Chat(s)..."
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:45
+msgctxt "ContextMenuActionProvider|"
+msgid "Go to Chat"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:47
+msgctxt "ContextMenuActionProvider|"
+msgid "Joins"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:48
+msgctxt "ContextMenuActionProvider|"
+msgid "Parts"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:49
+msgctxt "ContextMenuActionProvider|"
+msgid "Quits"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:50
+msgctxt "ContextMenuActionProvider|"
+msgid "Nick Changes"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:51
+msgctxt "ContextMenuActionProvider|"
+msgid "Mode Changes"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:52
+msgctxt "ContextMenuActionProvider|"
+msgid "Day Changes"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:53
+msgctxt "ContextMenuActionProvider|"
+msgid "Topic Changes"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:54
+msgctxt "ContextMenuActionProvider|"
+msgid "Set as Default..."
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:55
+msgctxt "ContextMenuActionProvider|"
+msgid "Use Defaults..."
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:57
+msgctxt "ContextMenuActionProvider|"
+msgid "Join Channel..."
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:59
+msgctxt "ContextMenuActionProvider|"
+msgid "Start Query"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:60
+msgctxt "ContextMenuActionProvider|"
+msgid "Show Query"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:61
+msgctxt "ContextMenuActionProvider|"
+msgid "Whois"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:63
+msgctxt "ContextMenuActionProvider|"
+msgid "Version"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:64
+msgctxt "ContextMenuActionProvider|"
+msgid "Time"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:65
+msgctxt "ContextMenuActionProvider|"
+msgid "Ping"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:66
+msgctxt "ContextMenuActionProvider|"
+msgid "Client info"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:67
+msgctxt "ContextMenuActionProvider|"
+msgid "Custom..."
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:79
+msgctxt "ContextMenuActionProvider|"
+msgid "Give Operator Status"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:80
+msgctxt "ContextMenuActionProvider|"
+msgid "Take Operator Status"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:81
+msgctxt "ContextMenuActionProvider|"
+msgid "Give Half-Operator Status"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:82
+msgctxt "ContextMenuActionProvider|"
+msgid "Take Half-Operator Status"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:83
+msgctxt "ContextMenuActionProvider|"
+msgid "Give Voice"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:84
+msgctxt "ContextMenuActionProvider|"
+msgid "Take Voice"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:85
+msgctxt "ContextMenuActionProvider|"
+msgid "Kick From Channel"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:86
+msgctxt "ContextMenuActionProvider|"
+msgid "Ban From Channel"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:87
+msgctxt "ContextMenuActionProvider|"
+msgid "Kick && Ban"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:89
+msgctxt "ContextMenuActionProvider|"
+msgid "Hide Chat(s) Temporarily"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:90
+msgctxt "ContextMenuActionProvider|"
+msgid "Hide Chat(s) Permanently"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:91
+msgctxt "ContextMenuActionProvider|"
+msgid "Show Channel List"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:92
+msgctxt "ContextMenuActionProvider|"
+msgid "Show Ignore List"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:105
+msgctxt "ContextMenuActionProvider|"
+msgid "Hide Events"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:113
+msgctxt "ContextMenuActionProvider|"
+msgid "CTCP"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:128
+msgctxt "ContextMenuActionProvider|"
+msgid "Actions"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:132
+msgctxt "ContextMenuActionProvider|"
+msgid "Ignore"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:137
+msgctxt "ContextMenuActionProvider|"
+msgid "Add Ignore Rule"
+msgstr ""
+
+#: ../src/uisupport/contextmenuactionprovider.cpp:138
+msgctxt "ContextMenuActionProvider|"
+msgid "Existing Rules"
+msgstr ""
+
+#: ../src/core/core.cpp:193
+msgctxt "Core|"
+msgid "Could not initialize any storage backend! Exiting..."
+msgstr ""
+
+#: ../src/core/core.cpp:194
+msgctxt "Core|"
+msgid ""
+"Currently, Quassel supports SQLite3 and PostgreSQL. You need to build your\n"
+"Qt library with the sqlite or postgres plugin enabled in order for quasselcore\n"
+"to work."
+msgstr ""
+
+#: ../src/core/core.cpp:253
+msgctxt "Core|"
+msgid "Calling restoreState() even though active sessions exist!"
+msgstr ""
+
+#: ../src/core/core.cpp:287
+msgctxt "Core|"
+msgid "Core is already configured! Not configuring again..."
+msgstr ""
+
+#: ../src/core/core.cpp:290
+msgctxt "Core|"
+msgid "Admin user or password not set."
+msgstr ""
+
+#: ../src/core/core.cpp:293
+msgctxt "Core|"
+msgid "Could not setup storage!"
+msgstr ""
+
+#: ../src/core/core.cpp:298
+msgctxt "Core|"
+msgid "Creating admin user..."
+msgstr ""
+
+#: ../src/core/core.cpp:451
+#, qt-format
+msgctxt "Core|"
+msgid "Invalid listen address %1"
+msgstr ""
+
+#: ../src/core/core.cpp:460
+#, qt-format
+msgctxt "Core|"
+msgid "Listening for GUI clients on IPv6 %1 port %2 using protocol version %3"
+msgstr ""
+
+#: ../src/core/core.cpp:469
+#, qt-format
+msgctxt "Core|"
+msgid "Could not open IPv6 interface %1:%2: %3"
+msgstr ""
+
+#: ../src/core/core.cpp:477
+#, qt-format
+msgctxt "Core|"
+msgid "Listening for GUI clients on IPv4 %1 port %2 using protocol version %3"
+msgstr ""
+
+#: ../src/core/core.cpp:488
+#, qt-format
+msgctxt "Core|"
+msgid "Could not open IPv4 interface %1:%2: %3"
+msgstr ""
+
+#: ../src/core/core.cpp:496
+#, qt-format
+msgctxt "Core|"
+msgid "Invalid listen address %1, unknown network protocol"
+msgstr ""
+
+#: ../src/core/core.cpp:505
+msgctxt "Core|"
+msgid "Could not open any network interfaces to listen on!"
+msgstr ""
+
+#: ../src/core/core.cpp:545
+msgctxt "Core|"
+msgid "Client connected from"
+msgstr ""
+
+#: ../src/core/core.cpp:548
+msgctxt "Core|"
+msgid "Closing server for basic setup."
+msgstr ""
+
+#: ../src/core/core.cpp:560
+msgctxt "Core|"
+msgid "Non-authed client disconnected:"
+msgstr ""
+
+#: ../src/core/core.cpp:592
+msgctxt "Core|"
+msgid "Could not initialize session for client:"
+msgstr ""
+
+#: ../src/core/core.cpp:619
+msgctxt "Core|"
+msgid "Could not find a session for client:"
+msgstr ""
+
+#: ../src/client/coreaccount.h:40
+msgctxt "CoreAccount|"
+msgid "Internal Core"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:14
+#: ../src/qtui/settingspages/coreaccountsettingspage.cpp:260
+msgctxt "CoreAccountEditDlg|"
+msgid "Edit Core Account"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:20
+msgctxt "CoreAccountEditDlg|"
+msgid "Account Details"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:26
+msgctxt "CoreAccountEditDlg|"
+msgid "Account Name:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:33
+msgctxt "CoreAccountEditDlg|"
+msgid "Local Core"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:40
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:173
+msgctxt "CoreAccountEditDlg|"
+msgid "Hostname:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:47
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:180
+msgctxt "CoreAccountEditDlg|"
+msgid "localhost"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:54
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:187
+msgctxt "CoreAccountEditDlg|"
+msgid "Port:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:93
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:226
+msgctxt "CoreAccountEditDlg|"
+msgid "User:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:103
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:236
+msgctxt "CoreAccountEditDlg|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:117
+msgctxt "CoreAccountEditDlg|"
+msgid "Remember"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:127
+msgctxt "CoreAccountEditDlg|"
+msgid "Use a Proxy"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:139
+msgctxt "CoreAccountEditDlg|"
+msgid "Proxy Type:"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:147
+msgctxt "CoreAccountEditDlg|"
+msgid "Socks 5"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccounteditdlg.ui:152
+msgctxt "CoreAccountEditDlg|"
+msgid "HTTP"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.cpp:262
+msgctxt "CoreAccountEditDlg|"
+msgid "Add Core Account"
+msgstr ""
+
+#: ../src/client/coreaccountmodel.cpp:68
+msgctxt "CoreAccountModel|"
+msgid "Internal Core"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:20
+msgctxt "CoreAccountSettingsPage|"
+msgid "Connect to Quassel Core"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:30
+msgctxt "CoreAccountSettingsPage|"
+msgid "Core Accounts"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:45
+msgctxt "CoreAccountSettingsPage|"
+msgid "Edit..."
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:56
+msgctxt "CoreAccountSettingsPage|"
+msgid "Add..."
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:67
+msgctxt "CoreAccountSettingsPage|"
+msgid "Delete"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:96
+msgctxt "CoreAccountSettingsPage|"
+msgid "Automatically connect on startup"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:136
+msgctxt "CoreAccountSettingsPage|"
+msgid "Connect to last account used"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.ui:148
+msgctxt "CoreAccountSettingsPage|"
+msgid "Always connect to"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreaccountsettingspage.cpp:29
+msgctxt "CoreAccountSettingsPage|"
+msgid "Remote Cores"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54 ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:54
+msgctxt "CoreAuthHandler|"
+msgid "too old, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:55
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Your Quassel Client is too old!</b><br>This core needs at least "
+"client/core protocol version %1 (got: %2).<br>Please consider upgrading your"
+" client."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:69
+msgctxt "CoreAuthHandler|"
+msgid "Starting encryption for Client:"
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:90
+msgctxt "CoreAuthHandler|"
+msgid "did not send an init message before trying to login, rejecting."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:91
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Client not initialized!</b><br>You need to send an init message before "
+"trying to login."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:105
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>SSL is required!</b><br>You need to use SSL in order to connect to this "
+"core."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:146
+msgctxt "CoreAuthHandler|"
+msgid ""
+"<b>Invalid username or password!</b><br>The username/password combination "
+"you supplied could not be found in the database."
+msgstr ""
+
+#: ../src/core/coreauthhandler.cpp:151
+#, qt-format
+msgctxt "CoreAuthHandler|"
+msgid ""
+"Client %1 initialized and authenticated successfully as \"%2\" (UserId: %3)."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:69
+msgctxt "CoreConfigWizard|"
+msgid "Core Configuration Wizard"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:98
+msgctxt "CoreConfigWizard|"
+msgid "Your core has been successfully configured. Logging you in..."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:107
+#, qt-format
+msgctxt "CoreConfigWizard|"
+msgid ""
+"Core configuration failed:<br><b>%1</b><br>Press <em>Next</em> to start "
+"over."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:126
+msgctxt "CoreConfigWizard|"
+msgid ""
+"Your are now logged into your freshly configured Quassel Core!<br>Please "
+"remember to configure your identities and networks now."
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid "Username:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:32
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:46
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid "Repeat password:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:60
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid "Remember password"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:69
+msgctxt "CoreConfigWizardAdminUserPage|"
+msgid ""
+"<b>Note:</b> Adding more users and changing your username/password is not possible via Quassel's client interface yet.\n"
+"If you need to do these things, please run \"<tt><nobr>quasselcore --help</nobr></tt>\"."
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardintropage.ui:13
+msgctxt "CoreConfigWizardIntroPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardintropage.ui:19
+msgctxt "CoreConfigWizardIntroPage|"
+msgid "This wizard will guide you through the setup of your Quassel Core."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:162
+msgctxt "CoreConfigWizardPages::AdminUserPage|"
+msgid "Create Admin User"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:163
+msgctxt "CoreConfigWizardPages::AdminUserPage|"
+msgid ""
+"First, we will create a user on the core. This first user will have "
+"administrator privileges."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:145
+msgctxt "CoreConfigWizardPages::IntroPage|"
+msgid "Introduction"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:198
+msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
+msgid "Select Storage Backend"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:199
+msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
+msgid ""
+"Please select a database backend for the Quassel Core storage to store the "
+"backlog and other data in."
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:300
+msgctxt "CoreConfigWizardPages::StorageSelectionPage|"
+msgid "Connection Properties"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:342
+msgctxt "CoreConfigWizardPages::SyncPage|"
+msgid "Storing Your Settings"
+msgstr ""
+
+#: ../src/qtui/coreconfigwizard.cpp:343
+msgctxt "CoreConfigWizardPages::SyncPage|"
+msgid ""
+"Your settings are now stored in the core, and you will be logged in "
+"automatically."
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
+msgctxt "CoreConfigWizardStorageSelectionPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
+msgctxt "CoreConfigWizardStorageSelectionPage|"
+msgid "Storage Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:56
+msgctxt "CoreConfigWizardStorageSelectionPage|"
+msgid "Description"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:62
+msgctxt "CoreConfigWizardStorageSelectionPage|"
+msgid "Foobar"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "Your Choices"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:35
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "Admin User:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:42
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "foo"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:55
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "Storage Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:62
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "bar"
+msgstr ""
+
+#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:102
+msgctxt "CoreConfigWizardSyncPage|"
+msgid "Please wait while your settings are being transmitted to the core..."
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectauthdlg.ui:14
+msgctxt "CoreConnectAuthDlg|"
+msgid "Authentication Required"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectauthdlg.ui:20
+msgctxt "CoreConnectAuthDlg|"
+msgid "Please enter your account data:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectauthdlg.ui:35
+msgctxt "CoreConnectAuthDlg|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectauthdlg.ui:49
+msgctxt "CoreConnectAuthDlg|"
+msgid "Username:"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectauthdlg.ui:58
+msgctxt "CoreConnectAuthDlg|"
+msgid "Remember password"
+msgstr ""
+
+#: ../src/qtui/coreconnectdlg.cpp:81
+#, qt-format
+msgctxt "CoreConnectAuthDlg|"
+msgid "Please enter your credentials for %1:"
+msgstr ""
+
+#: ../src/qtui/coreconnectdlg.cpp:41
+msgctxt "CoreConnectDlg|"
+msgid "Connect to Core"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:193
+msgctxt "CoreConnection|"
+msgid "Network is down"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:227 ../src/client/coreconnection.cpp:328
+msgctxt "CoreConnection|"
+msgid "Disconnected"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:230
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Looking up %1..."
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:233
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Connecting to %1..."
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:236
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Connected to %1"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:239
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Disconnecting from %1..."
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:363
+msgctxt "CoreConnection|"
+msgid "Disconnected from core."
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:501
+msgctxt "CoreConnection|"
+msgid "Receiving session state"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:503
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Synchronizing to %1..."
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:539
+msgctxt "CoreConnection|"
+msgid "Receiving network states"
+msgstr ""
+
+#: ../src/client/coreconnection.cpp:590
+#, qt-format
+msgctxt "CoreConnection|"
+msgid "Synchronized to %1"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Network Status Detection"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:26
+msgctxt "CoreConnectionSettingsPage|"
+msgid ""
+"Rely on KDE's hardware layer to detect if we're online. Recommended for most"
+" KDE users"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:29
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Use KDE's network status detection (via Solid)"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:41
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:57
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:154
+msgctxt "CoreConnectionSettingsPage|"
+msgid ""
+"Actively ping the remote core and disconnect if we didn't get a reply after "
+"a certain time"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:44
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Ping timeout after"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:60
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:157
+msgctxt "CoreConnectionSettingsPage|"
+msgid " seconds"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:100
+msgctxt "CoreConnectionSettingsPage|"
+msgid ""
+"Only disconnect if the network socket gets closed by the operating system. "
+"This may take a long time after actually losing connectivity"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:103
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Never time out actively"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:113
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Automatically reconnect on network failures"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:147
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Retry every"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.cpp:24
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Remote Cores"
+msgstr ""
+
+#: ../src/qtui/settingspages/coreconnectionsettingspage.cpp:24
+msgctxt "CoreConnectionSettingsPage|"
+msgid "Connection"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
+msgctxt "CoreConnectionStatusWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
+msgctxt "CoreConnectionStatusWidget|"
+msgid "Message"
+msgstr ""
+
+#: ../src/qtui/coreconnectionstatuswidget.cpp:66
+msgctxt "CoreConnectionStatusWidget|seconds"
+msgid "s"
+msgstr ""
+
+#: ../src/qtui/coreconnectionstatuswidget.cpp:66
+msgctxt "CoreConnectionStatusWidget|milliseconds"
+msgid "ms"
+msgstr ""
+
+#: ../src/qtui/coreconnectionstatuswidget.cpp:67
+#, qt-format
+msgctxt "CoreConnectionStatusWidget|"
+msgid "(Lag: %1 %2)"
+msgstr ""
+
+#: ../src/qtui/coreconnectionstatuswidget.cpp:83
+msgctxt "CoreConnectionStatusWidget|"
+msgid "The connection to your core is encrypted with SSL."
+msgstr ""
+
+#: ../src/qtui/coreconnectionstatuswidget.cpp:87
+msgctxt "CoreConnectionStatusWidget|"
+msgid "The connection to your core is not encrypted."
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:13
+msgctxt "CoreInfoDlg|"
+msgid "Core Information"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:21
+msgctxt "CoreInfoDlg|"
+msgid "Version:"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:28
+msgctxt "CoreInfoDlg|"
+msgid "<core version>"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:35
+msgctxt "CoreInfoDlg|"
+msgid "Uptime:"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:42
+msgctxt "CoreInfoDlg|"
+msgid "Connected Clients:"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:49
+msgctxt "CoreInfoDlg|"
+msgid "<connected clients>"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:56
+msgctxt "CoreInfoDlg|"
+msgid "<core uptime>"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:63
+msgctxt "CoreInfoDlg|"
+msgid "Build date:"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:70
+msgctxt "CoreInfoDlg|"
+msgid "<build date>"
+msgstr ""
+
+#: ../src/qtui/ui/coreinfodlg.ui:81
+msgctxt "CoreInfoDlg|"
+msgid "Close"
+msgstr ""
+
+#: ../src/qtui/coreinfodlg.cpp:57
+#, qt-format
+msgctxt "CoreInfoDlg|"
+msgid "%n Day(s)"
+msgid_plural "%n Day(s)"
+msgstr[0] ""
+
+#: ../src/qtui/coreinfodlg.cpp:58
+#, qt-format
+msgctxt "CoreInfoDlg|"
+msgid " %1:%2:%3 (since %4)"
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:167
+msgctxt "CoreNetwork|"
+msgid "Connection failed. Cycling to next Server"
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:175 ../src/core/corenetwork.cpp:176
+#, qt-format
+msgctxt "CoreNetwork|"
+msgid "Connecting to %1:%2..."
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:228
+#, qt-format
+msgctxt "CoreNetwork|"
+msgid "Disconnecting. (%1)"
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:228
+msgctxt "CoreNetwork|"
+msgid "Core Shutdown"
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:423
+#, qt-format
+msgctxt "CoreNetwork|"
+msgid "Could not connect to %1 (%2)"
+msgstr ""
+
+#: ../src/core/corenetwork.cpp:425
+#, qt-format
+msgctxt "CoreNetwork|"
+msgid "Connection failure: %1"
+msgstr ""
+
+#: ../src/core/coresession.cpp:227
+msgctxt "CoreSession|"
+msgid "Client"
+msgstr ""
+
+#: ../src/core/coresession.cpp:227
+#, qt-format
+msgctxt "CoreSession|"
+msgid "disconnected (UserId: %1)."
+msgstr ""
+
+#: ../src/core/coresession.cpp:474
+#, qt-format
+msgctxt "CoreSession|"
+msgid ""
+"CoreSession::createNetwork(): Got invalid networkId from Core when trying to"
+" create network %1!"
+msgstr ""
+
+#: ../src/core/coresession.cpp:506
+msgctxt "CoreSession|"
+msgid ""
+"CoreSession::createNetwork(): Trying to create a network that already "
+"exists, updating instead!"
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:75
+msgctxt "CoreSessionEventProcessor|"
+msgid ""
+"No free and valid nicks in nicklist found. use: /nick <othernick> to "
+"continue"
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:447
+msgctxt "CoreSessionEventProcessor|"
+msgid "Unable to perform key exchange, missing qca-ossl plugin."
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:458
+msgctxt "CoreSessionEventProcessor|"
+msgid "Unable to parse the DH1080_INIT. Key exchange failed."
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:462
+#: ../src/core/coresessioneventprocessor.cpp:470
+msgctxt "CoreSessionEventProcessor|"
+msgid "Your key is set and messages will be encrypted."
+msgstr ""
+
+#: ../src/core/coresessioneventprocessor.cpp:472
+msgctxt "CoreSessionEventProcessor|"
+msgid "Failed to parse DH1080_FINISH. Key exchange failed."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:88
+msgctxt "CoreUserInputHandler|"
+msgid "away"
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:169
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "sending CTCP-%1 request to %2"
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:190
+#: ../src/core/coreuserinputhandler.cpp:361
+#: ../src/core/coreuserinputhandler.cpp:606
+#: ../src/core/coreuserinputhandler.cpp:644
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"Error: QCA provider plugin not found. It is usually provided by the qca-ossl"
+" plugin."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:201
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"[usage] /delkey <nick|channel> deletes the encryption key for nick or "
+"channel or just /delkey when in a channel or query."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:208
+#: ../src/core/coreuserinputhandler.cpp:662
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "No key has been set for %1."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:213
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "The key for %1 has been deleted."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:217
+#: ../src/core/coreuserinputhandler.cpp:670
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"Error: Setting an encryption key requires Quassel to have been built with "
+"support for the Qt Cryptographic Architecture (QCA2) library. Contact your "
+"distributor about a Quassel package with QCA2 support, or rebuild Quassel "
+"with QCA2 present."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:371
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"[usage] /keyx [<nick>] Initiates a DH1080 key exchange with the target."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:378
+msgctxt "CoreUserInputHandler|"
+msgid "It is only possible to exchange keys in a query buffer."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:388
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "Failed to initiate key exchange with %1."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:393
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "Initiated key exchange with %1."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:397
+#: ../src/core/coreuserinputhandler.cpp:628
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"Error: Setting an encryption key requires Quassel to have been built with "
+"support for the Qt Cryptographic Architecture (QCA) library. Contact your "
+"distributor about a Quassel package with QCA support, or rebuild Quassel "
+"with QCA present."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:556
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "Starting query with %1"
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:616
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"[usage] /setkey <nick|channel> <key> sets the encryption key for nick or "
+"channel. /setkey <key> when in a channel or query buffer sets the key for "
+"it."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:625
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "The key for %1 has been set."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:654
+msgctxt "CoreUserInputHandler|"
+msgid ""
+"[usage] /showkey <nick|channel> shows the encryption key for nick or channel"
+" or just /showkey when in a channel or query."
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:666
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "The key for %1 is %2:%3"
+msgstr ""
+
+#: ../src/core/coreuserinputhandler.cpp:794
+#, qt-format
+msgctxt "CoreUserInputHandler|"
+msgid "[Error] Could not encrypt your message: %1"
+msgstr ""
+
+#: ../src/qtui/settingspages/createidentitydlg.ui:17
+msgctxt "CreateIdentityDlg|"
+msgid "Create New Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/createidentitydlg.ui:25
+msgctxt "CreateIdentityDlg|"
+msgid "Identity name:"
+msgstr ""
+
+#: ../src/qtui/settingspages/createidentitydlg.ui:37
+msgctxt "CreateIdentityDlg|"
+msgid "Create blank identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/createidentitydlg.ui:49
+msgctxt "CreateIdentityDlg|"
+msgid "Duplicate:"
+msgstr ""
+
+#: ../src/qtui/ui/debugbufferviewoverlay.ui:13
+msgctxt "DebugBufferViewOverlay|"
+msgid "Debug BufferView Overlay"
+msgstr ""
+
+#: ../src/qtui/ui/debugbufferviewoverlay.ui:26
+msgctxt "DebugBufferViewOverlay|"
+msgid "Overlay View"
+msgstr ""
+
+#: ../src/qtui/ui/debugbufferviewoverlay.ui:39
+msgctxt "DebugBufferViewOverlay|"
+msgid "Overlay Properties"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:50
+msgctxt "DebugBufferViewOverlay|"
+msgid "BufferViews:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:51
+msgctxt "DebugBufferViewOverlay|"
+msgid "All Networks:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:52
+msgctxt "DebugBufferViewOverlay|"
+msgid "Networks:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:53
+msgctxt "DebugBufferViewOverlay|"
+msgid "Buffers:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:54
+msgctxt "DebugBufferViewOverlay|"
+msgid "Removed buffers:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:55
+msgctxt "DebugBufferViewOverlay|"
+msgid "Temp. removed buffers:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:57
+msgctxt "DebugBufferViewOverlay|"
+msgid "Allowed buffer types:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:58
+msgctxt "DebugBufferViewOverlay|"
+msgid "Minimum activity:"
+msgstr ""
+
+#: ../src/qtui/debugbufferviewoverlay.cpp:60
+msgctxt "DebugBufferViewOverlay|"
+msgid "Is initialized:"
+msgstr ""
+
+#: ../src/qtui/ui/debugconsole.ui:14
+msgctxt "DebugConsole|"
+msgid "Debug Console"
+msgstr ""
+
+#: ../src/qtui/ui/debugconsole.ui:44
+msgctxt "DebugConsole|"
+msgid "local"
+msgstr ""
+
+#: ../src/qtui/ui/debugconsole.ui:54
+msgctxt "DebugConsole|"
+msgid "core"
+msgstr ""
+
+#: ../src/qtui/ui/debugconsole.ui:82
+msgctxt "DebugConsole|"
+msgid "Evaluate!"
+msgstr ""
+
+#: ../src/qtui/ui/debuglogwidget.ui:13
+msgctxt "DebugLogWidget|"
+msgid "Debug Log"
+msgstr ""
+
+#: ../src/qtui/ui/debuglogwidget.ui:43
+msgctxt "DebugLogWidget|"
+msgid "Close"
+msgstr ""
+
+#: ../src/qtui/dockmanagernotificationbackend.cpp:184
+msgctxt "DockManagerNotificationBackend::ConfigWidget|"
+msgid "Mark dockmanager entry"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:224 ../src/core/eventstringifier.cpp:370
+msgctxt "EventStringifier|"
+msgid "[Whois] "
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:239
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "%1 invited you to channel %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:341
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "%1 has changed topic for %2 to: \"%3\""
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:347
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Operwall] %1: %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:355
+msgctxt "EventStringifier|"
+msgid ""
+"Received non-RFC-compliant RPL_ISUPPORT: this can lead to unexpected "
+"behavior!"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:384
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "%1 is away: \"%2\""
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:391
+msgctxt "EventStringifier|"
+msgid "You are no longer marked as being away"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:399
+msgctxt "EventStringifier|"
+msgid "You have been marked as being away"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:421
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is %2 (%3)"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:437
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is online via %2 (%3)"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:439
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whowas] %1 was online via %2 (%3)"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:449
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whowas] %1 was %2@%3 (%4)"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:458
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Who] End of /WHO list for %1"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:470
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is logged in since %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:474
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is idling for %2 (since %3)"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:484
+msgctxt "EventStringifier|"
+msgid "[Whois] End of /WHOIS list"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:507
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is a user on channels: %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:509
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 has voice on channels: %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:511
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is an operator on channels: %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:532
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Channel %1 has %2 users. Topic is: \"%3\""
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:540
+msgctxt "EventStringifier|"
+msgid "End of channel list"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:558
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Homepage for %1 is %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:575
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Channel %1 created on %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:589
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whois] %1 is authed as %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:592
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Whowas] %1 was authed as %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:601
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "No topic is set for %1."
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:609
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Topic for %1 is \"%2\""
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:621
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Topic set by %1 on %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:634
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "%1 has been invited to %2"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:642
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "[Who] %1"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:649
+msgctxt "EventStringifier|"
+msgid "End of /WHOWAS"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:659
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Nick %1 contains illegal characters"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:669
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Nick already in use: %1"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:679
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Nick/channel is temporarily unavailable: %1"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:702
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "sending CTCP-%1 request to %2"
+msgstr ""
+
+#. Optional "unknown" in "Received unknown CTCP-FOO request by bar"
+#: ../src/core/eventstringifier.cpp:717
+msgctxt "EventStringifier|"
+msgid "unknown"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:718
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Received %1CTCP-%2 request by %3"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:721
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Received CTCP-%1 answer from %2: %3"
+msgstr ""
+
+#: ../src/core/eventstringifier.cpp:736
+#, qt-format
+msgctxt "EventStringifier|"
+msgid "Received CTCP-PING answer from %1 with %2 seconds round trip time"
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:49
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Invalid command string for /exec: %1"
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:58
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Name \"%1\" is invalid: ../ or ..\\ are not allowed!"
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:69
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Could not find script \"%1\""
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:93
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Script \"%1\" crashed with exit code %2."
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:111
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Script \"%1\" could not start."
+msgstr ""
+
+#: ../src/client/execwrapper.cpp:113
+#, qt-format
+msgctxt "ExecWrapper|"
+msgid "Script \"%1\" caused error %2."
+msgstr ""
+
+#: ../src/uisupport/fontselector.cpp:32
+msgctxt "FontSelector|"
+msgid "Choose..."
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:14
+msgctxt "HighlightSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:20
+msgctxt "HighlightSettingsPage|"
+msgid "Custom Highlights"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:33
+#: ../src/qtui/settingspages/highlightsettingspage.cpp:29
+msgctxt "HighlightSettingsPage|"
+msgid "Highlight"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:38
+msgctxt "HighlightSettingsPage|"
+msgid "RegEx"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:43
+msgctxt "HighlightSettingsPage|"
+msgid "CS"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:48
+msgctxt "HighlightSettingsPage|"
+msgid "Enable"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:53
+msgctxt "HighlightSettingsPage|"
+msgid "Channel"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:69
+msgctxt "HighlightSettingsPage|"
+msgid "Add"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:76
+msgctxt "HighlightSettingsPage|"
+msgid "Remove"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:101
+msgctxt "HighlightSettingsPage|"
+msgid "Highlight Nicks"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:107
+msgctxt "HighlightSettingsPage|"
+msgid "All nicks from identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:114
+msgctxt "HighlightSettingsPage|"
+msgid "Current nick"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:124
+msgctxt "HighlightSettingsPage|"
+msgid "None"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.ui:131
+msgctxt "HighlightSettingsPage|"
+msgid "Case sensitive"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.cpp:29
+msgctxt "HighlightSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.cpp:184
+msgctxt "HighlightSettingsPage|"
+msgid "this shouldn't be empty"
+msgstr ""
+
+#: ../src/qtui/settingspages/highlightsettingspage.h:46
+msgctxt "HighlightSettingsPage|"
+msgid "highlight rule"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.ui:31
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:370
+msgctxt "IdentitiesSettingsPage|"
+msgid "Rename Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.ui:34
+#: ../src/qtui/settingspages/identitiessettingspage.ui:77
+msgctxt "IdentitiesSettingsPage|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.ui:51
+msgctxt "IdentitiesSettingsPage|"
+msgid "Add Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.ui:54
+msgctxt "IdentitiesSettingsPage|"
+msgid "Add..."
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.ui:74
+msgctxt "IdentitiesSettingsPage|"
+msgid "Remove Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:31
+msgctxt "IdentitiesSettingsPage|"
+msgid "IRC"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:31
+msgctxt "IdentitiesSettingsPage|"
+msgid "Identities"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:205
+msgctxt "IdentitiesSettingsPage|"
+msgid ""
+"<b>The following problems need to be corrected before your changes can be "
+"applied:</b><ul>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:206
+msgctxt "IdentitiesSettingsPage|"
+msgid "<li>All identities need an identity name set</li>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:207
+msgctxt "IdentitiesSettingsPage|"
+msgid "<li>Every identity needs at least one nickname defined</li>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:208
+msgctxt "IdentitiesSettingsPage|"
+msgid "<li>You need to specify a real name for every identity</li>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:209
+msgctxt "IdentitiesSettingsPage|"
+msgid "<li>You need to specify an ident for every identity</li>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:210
+msgctxt "IdentitiesSettingsPage|"
+msgid "</ul>"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:211
+msgctxt "IdentitiesSettingsPage|"
+msgid "One or more identities are invalid"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:356
+msgctxt "IdentitiesSettingsPage|"
+msgid "Delete Identity?"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:357
+#, qt-format
+msgctxt "IdentitiesSettingsPage|"
+msgid "Do you really want to delete identity \"%1\"?"
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:371
+#, qt-format
+msgctxt "IdentitiesSettingsPage|"
+msgid "Please enter a new name for the identity \"%1\"!"
+msgstr ""
+
+#: ../src/common/identity.cpp:147
+msgctxt "Identity|"
+msgid "Quassel IRC User"
+msgstr ""
+
+#: ../src/common/identity.cpp:177
+msgctxt "Identity|"
+msgid "<empty>"
+msgstr ""
+
+#: ../src/common/identity.cpp:183
+msgctxt "Identity|"
+msgid "Gone fishing."
+msgstr ""
+
+#: ../src/common/identity.cpp:187
+msgctxt "Identity|"
+msgid "Not here. No, really. not here!"
+msgstr ""
+
+#: ../src/common/identity.cpp:190
+msgctxt "Identity|"
+msgid "All Quassel clients vanished from the face of the earth..."
+msgstr ""
+
+#: ../src/common/identity.cpp:193
+msgctxt "Identity|"
+msgid "Kindergarten is elsewhere!"
+msgstr ""
+
+#: ../src/common/identity.cpp:194 ../src/common/identity.cpp:195
+msgctxt "Identity|"
+msgid "http://quassel-irc.org - Chat comfortably. Anywhere."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:30
+msgctxt "IdentityEditWidget|"
+msgid "General"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:38
+msgctxt "IdentityEditWidget|"
+msgid "Real Name:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:45
+msgctxt "IdentityEditWidget|"
+msgid "The \"Real Name\" is shown in /whois."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:54
+msgctxt "IdentityEditWidget|"
+msgid "Nicknames"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:90
+msgctxt "IdentityEditWidget|"
+msgid "Add Nickname"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:93
+msgctxt "IdentityEditWidget|"
+msgid "&Add..."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:116
+msgctxt "IdentityEditWidget|"
+msgid "Remove Nickname"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:119
+msgctxt "IdentityEditWidget|"
+msgid "Remove"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:136
+msgctxt "IdentityEditWidget|"
+msgid "Rename Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:139
+msgctxt "IdentityEditWidget|"
+msgid "Re&name..."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:165
+msgctxt "IdentityEditWidget|"
+msgid "Move upwards in list"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:168
+#: ../src/qtui/settingspages/identityeditwidget.ui:182
+msgctxt "IdentityEditWidget|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:179
+msgctxt "IdentityEditWidget|"
+msgid "Move downwards in list"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:227
+msgctxt "IdentityEditWidget|"
+msgid "A&way"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:233
+msgctxt "IdentityEditWidget|"
+msgid "Default Away Settings"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:244
+msgctxt "IdentityEditWidget|"
+msgid "Nick to be used when being away"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:254
+msgctxt "IdentityEditWidget|"
+msgid "Default away reason"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:261
+msgctxt "IdentityEditWidget|"
+msgid "Away Nick:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:268
+#: ../src/qtui/settingspages/identityeditwidget.ui:297
+#: ../src/qtui/settingspages/identityeditwidget.ui:366
+msgctxt "IdentityEditWidget|"
+msgid "Away Reason:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:280
+msgctxt "IdentityEditWidget|"
+msgid "Set away when all clients have detached from the core"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:283
+msgctxt "IdentityEditWidget|"
+msgid "Away On Detach"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:315
+msgctxt "IdentityEditWidget|"
+msgid "Not implemented yet"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:318
+msgctxt "IdentityEditWidget|"
+msgid "Away On Idle"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:332
+msgctxt "IdentityEditWidget|"
+msgid "Set away after"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:342
+msgctxt "IdentityEditWidget|"
+msgid "minutes of being idle"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:399
+#: ../src/qtui/settingspages/identityeditwidget.cpp:238
+msgctxt "IdentityEditWidget|"
+msgid "Advanced"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:407
+msgctxt "IdentityEditWidget|"
+msgid "Ident:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:414
+msgctxt "IdentityEditWidget|"
+msgid ""
+"The \"ident\" is part of your hostmask and, together with your host, "
+"uniquely identifies you within the IRC network."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:423
+msgctxt "IdentityEditWidget|"
+msgid "Messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:431
+msgctxt "IdentityEditWidget|"
+msgid "Part Reason:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:444
+msgctxt "IdentityEditWidget|"
+msgid "Quit Reason:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:454
+msgctxt "IdentityEditWidget|"
+msgid "Kick Reason:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:488
+msgctxt "IdentityEditWidget|"
+msgid ""
+"You need an SSL Capable Client to edit your Cores SSL Key and Certificate"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:517
+msgctxt "IdentityEditWidget|"
+msgid ""
+"Warning: you are not connected with a secured connection to the Quassel Core!\n"
+"Proceeding will cause an unencrypted transfer of your SSL Key and SSL Certificate!"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:546
+msgctxt "IdentityEditWidget|"
+msgid "Continue"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:584
+msgctxt "IdentityEditWidget|"
+msgid "Use SSL Key"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:598
+msgctxt "IdentityEditWidget|"
+msgid "Key Type:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:605
+#: ../src/qtui/settingspages/identityeditwidget.cpp:353
+#: ../src/qtui/settingspages/identityeditwidget.cpp:365
+msgctxt "IdentityEditWidget|"
+msgid "No Key loaded"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:625
+#: ../src/qtui/settingspages/identityeditwidget.ui:723
+#: ../src/qtui/settingspages/identityeditwidget.cpp:354
+#: ../src/qtui/settingspages/identityeditwidget.cpp:408
+msgctxt "IdentityEditWidget|"
+msgid "Load"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:637
+msgctxt "IdentityEditWidget|"
+msgid "Use SSL Certificate"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:656
+msgctxt "IdentityEditWidget|"
+msgid "Organisation:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:663
+#: ../src/qtui/settingspages/identityeditwidget.ui:697
+#: ../src/qtui/settingspages/identityeditwidget.cpp:406
+#: ../src/qtui/settingspages/identityeditwidget.cpp:407
+msgctxt "IdentityEditWidget|"
+msgid "No Certificate loaded"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.ui:690
+msgctxt "IdentityEditWidget|"
+msgid "CommonName:"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:321
+msgctxt "IdentityEditWidget|"
+msgid "Load a Key"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:344
+msgctxt "IdentityEditWidget|"
+msgid "Failed to read key"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:344
+msgctxt "IdentityEditWidget|"
+msgid ""
+"Failed to read the key file. It is either incompatible or invalid. Note that"
+" the key file must not have a passphrase."
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:359
+msgctxt "IdentityEditWidget|"
+msgid "RSA"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:362
+msgctxt "IdentityEditWidget|"
+msgid "DSA"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:367
+#: ../src/qtui/settingspages/identityeditwidget.cpp:413
+msgctxt "IdentityEditWidget|"
+msgid "Clear"
+msgstr ""
+
+#: ../src/qtui/settingspages/identityeditwidget.cpp:379
+msgctxt "IdentityEditWidget|"
+msgid "Load a Certificate"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:115
+msgctxt "IdentityPage|"
+msgid "Setup Identity"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:120
+msgctxt "IdentityPage|"
+msgid "Default Identity"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:15
+msgctxt "IgnoreListEditDlg|"
+msgid "Configure Ignore Rule"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:27
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Strictness:</b></p>\n"
+"<p><u>Dynamic:</u></p>\n"
+"<p>Messages are filtered \"on the fly\".\n"
+"Whenever you disable/delete the ignore rule, the messages are shown again.</p>\n"
+"<p><u>Permanent:</u></p>\n"
+"<p>Messages are filtered before they get stored in the database.</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:35
+msgctxt "IgnoreListEditDlg|"
+msgid "Strictness"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:41
+msgctxt "IgnoreListEditDlg|"
+msgid "Dynamic"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:48
+msgctxt "IgnoreListEditDlg|"
+msgid "Permanent"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:58
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Rule Type:</b></p>\n"
+"<p><u>Sender:</u></p>\n"
+"<p>The rule is matched against the sender string\n"
+"<i>nick!ident@host.name<i></p>\n"
+"<p><u>Message:</u></p>\n"
+"<p>The rule is matched against the actual message content</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:66
+msgctxt "IgnoreListEditDlg|"
+msgid "Rule Type"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:72
+msgctxt "IgnoreListEditDlg|"
+msgid "Sender"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:79
+msgctxt "IgnoreListEditDlg|"
+msgid "Message"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:86
+msgctxt "IgnoreListEditDlg|"
+msgid "CTCP"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:98
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Ignore rule:</b></p>\n"
+"<p>Depending on the type of the rule, the text is matched against either:</p>\n"
+"<p><u>- the message content:</u></p>\n"
+"<p><i>Example:</i>\n"
+"<br />\n"
+"<i>*foobar*</i> matches any text containing the word <i>foobar</i></p>\n"
+"<p><u>- the sender string</u>  <i>(nick!ident@host.name)</i></p>\n"
+"<p><i>Examples:</i>\n"
+"<br />\n"
+"- <i>*@foobar.com</i> matches any sender from host <i>foobar.com</i>\n"
+"<br />\n"
+"- <i>stupid!.+</i> (RegEx) matches any sender with nickname <i>stupid</i> from any host</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:112
+msgctxt "IgnoreListEditDlg|"
+msgid "Ignore Rule"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:123
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Use regular expressions:</b></p>\n"
+"<p>If enabled, rules follow regular expression syntax.</p>\n"
+"<p>Otherwise rules allow wildcard matching with the following special characters:</p>\n"
+"<p> *: representing \"any amount of any character\"\n"
+"<br />\n"
+"?: representing \"exactly one character\"</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:131
+msgctxt "IgnoreListEditDlg|"
+msgid "Regular expression"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:143
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Scope:</b></p>\n"
+"<p><u>Global:</u></p>\n"
+"<p>The rule is active for any channel on any network</p>\n"
+"<p><u>Network:</u></p>\n"
+"<p>The list below is interpreted as a list of networks for which the rule should match</p>\n"
+"<p><u>Channel:</u></p>\n"
+"<p>The list below is interpreted as a list of channels for which the rule should match</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:152
+msgctxt "IgnoreListEditDlg|"
+msgid "Scope"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:160
+msgctxt "IgnoreListEditDlg|"
+msgid "Global"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:167
+msgctxt "IgnoreListEditDlg|"
+msgid "Network"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:174
+msgctxt "IgnoreListEditDlg|"
+msgid "Channel"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:183
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Scope rule:</b></p>\n"
+"<p>A scope rule is a semicolon separated list of either <i>network</i> or <i>channel</i> names.</p>\n"
+"<p><i>Example:</i>\n"
+"<br />\n"
+"<i>#quassel*; #foobar</i>\n"
+"<br />\n"
+"would match on #foobar and on any channel starting with <i>#quassel</i></p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:214
+msgctxt "IgnoreListEditDlg|"
+msgid ""
+"<p><b>Enable / Disable:</b></p>\n"
+"<p>Only enabled rules are filtered.\n"
+"<br />\n"
+"For dynamic rules, disabling actually shows the filtered messages again.</p>"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelisteditdlg.ui:220
+msgctxt "IgnoreListEditDlg|"
+msgid "Rule is enabled"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:71
+msgctxt "IgnoreListModel|"
+msgid ""
+"<b>Enable / Disable:</b><br />Only enabled rules are filtered.<br />For "
+"dynamic rules, disabling actually shows the filtered messages again"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:75
+msgctxt "IgnoreListModel|"
+msgid ""
+"<b>Ignore rule:</b><br />Depending on the type of the rule, the text is "
+"matched against either:<br /><br />- <u>the message content:</u><br "
+"/><i>Example:<i><br />    \"*foobar*\" matches any text containing the word "
+"\"foobar\"<br /><br />- <u>the sender string "
+"<i>nick!ident@host.name<i></u><br /><i>Example:</i><br />    "
+"\"*@foobar.com\" matches any sender from host foobar.com<br />    "
+"\"stupid!.+\" (RegEx) matches any sender with nickname \"stupid\" from any "
+"host<br />"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:91
+msgctxt "IgnoreListModel|"
+msgid "By Sender"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:93
+msgctxt "IgnoreListModel|"
+msgid "By Message"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:208
+msgctxt "IgnoreListModel|"
+msgid "Enabled"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:209
+msgctxt "IgnoreListModel|"
+msgid "Type"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistmodel.cpp:210
+msgctxt "IgnoreListModel|"
+msgid "Ignore Rule"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.ui:14
+msgctxt "IgnoreListSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.ui:28
+msgctxt "IgnoreListSettingsPage|"
+msgid "New"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.ui:42
+msgctxt "IgnoreListSettingsPage|"
+msgid "Delete"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.ui:56
+msgctxt "IgnoreListSettingsPage|"
+msgid "&Edit"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.cpp:34
+msgctxt "IgnoreListSettingsPage|"
+msgid "IRC"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.cpp:34
+msgctxt "IgnoreListSettingsPage|"
+msgid "Ignore List"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.cpp:144
+msgctxt "IgnoreListSettingsPage|"
+msgid "Rule already exists"
+msgstr ""
+
+#: ../src/qtui/settingspages/ignorelistsettingspage.cpp:145
+#, qt-format
+msgctxt "IgnoreListSettingsPage|"
+msgid ""
+"There is already a rule\n"
+"\"%1\"\n"
+"Please choose another rule."
+msgstr ""
+
+#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
+msgctxt "IndicatorNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
+msgctxt "IndicatorNotificationConfigWidget|"
+msgid ""
+"This enables support for the Ayatana Project's application indicator "
+"(libindicate)."
+msgstr ""
+
+#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:23
+msgctxt "IndicatorNotificationConfigWidget|"
+msgid "Show messages in application indicator"
+msgstr ""
+
+#: ../src/qtui/ui/inputwidget.ui:26
+msgctxt "InputWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "White"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Black"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Dark blue"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Dark green"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Red"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Dark red"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Dark magenta"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:74
+msgctxt "InputWidget|"
+msgid "Orange"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Yellow"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Green"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Dark cyan"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Cyan"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Blue"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Magenta"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Dark gray"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:75
+msgctxt "InputWidget|"
+msgid "Light gray"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:85 ../src/qtui/inputwidget.cpp:86
+msgctxt "InputWidget|"
+msgid "Clear Color"
+msgstr ""
+
+#: ../src/qtui/inputwidget.cpp:133
+msgctxt "InputWidget|"
+msgid "Focus Input Line"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
+msgctxt "InputWidgetSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
+msgctxt "InputWidgetSettingsPage|"
+msgid "Custom font:"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:50
+msgctxt "InputWidgetSettingsPage|"
+msgid "Enable spell check"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:63
+msgctxt "InputWidgetSettingsPage|"
+msgid "Enable per chat history"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:79
+msgctxt "InputWidgetSettingsPage|"
+msgid "Show nick selector"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:95
+msgctxt "InputWidgetSettingsPage|"
+msgid "Show style buttons"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:111
+msgctxt "InputWidgetSettingsPage|"
+msgid "Enables (limited) Emacs key bindings in the input field."
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:114
+msgctxt "InputWidgetSettingsPage|"
+msgid "Emacs key bindings"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:127
+msgctxt "InputWidgetSettingsPage|"
+msgid "Multi-Line Editing"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:144
+msgctxt "InputWidgetSettingsPage|"
+msgid "Show at most"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:170
+msgctxt "InputWidgetSettingsPage|"
+msgid "lines"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:192
+msgctxt "InputWidgetSettingsPage|"
+msgid "Enable scrollbars"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:211
+msgctxt "InputWidgetSettingsPage|"
+msgid "Tab Completion"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:219
+msgctxt "InputWidgetSettingsPage|"
+msgid "Completion suffix:"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:235
+msgctxt "InputWidgetSettingsPage|"
+msgid ": "
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:262
+msgctxt "InputWidgetSettingsPage|"
+msgid "Add space after nick when completing mid-sentence"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
+msgctxt "InputWidgetSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
+msgctxt "InputWidgetSettingsPage|"
+msgid "Input Widget"
+msgstr ""
+
+#: ../src/common/internalpeer.cpp:58
+msgctxt "InternalPeer|"
+msgid "internal connection"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:49
+msgctxt "IrcConnectionWizard|"
+msgid "Save && Connect"
+msgstr ""
+
+#: ../src/client/irclistmodel.cpp:65
+msgctxt "IrcListModel|"
+msgid "Channel"
+msgstr ""
+
+#: ../src/client/irclistmodel.cpp:66
+msgctxt "IrcListModel|"
+msgid "Users"
+msgstr ""
+
+#: ../src/client/irclistmodel.cpp:67
+msgctxt "IrcListModel|"
+msgid "Topic"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:914
+msgctxt "IrcUserItem|"
+msgid " is away"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:929
+#, qt-format
+msgctxt "IrcUserItem|"
+msgid "idling since %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:932
+#, qt-format
+msgctxt "IrcUserItem|"
+msgid "login time: %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:935
+#, qt-format
+msgctxt "IrcUserItem|"
+msgid "server: %1"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:14
+msgctxt "ItemViewSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:22
+msgctxt "ItemViewSettingsPage|"
+msgid "Custom font:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:50
+msgctxt "ItemViewSettingsPage|"
+msgid "Show icons"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:66
+msgctxt "ItemViewSettingsPage|"
+msgid "Chat List"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:72
+msgctxt "ItemViewSettingsPage|"
+msgid "Display topic in tooltip"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:85
+msgctxt "ItemViewSettingsPage|"
+msgid "Mouse wheel changes selected chat"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:101
+msgctxt "ItemViewSettingsPage|"
+msgid "Use Custom Colors"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:118
+msgctxt "ItemViewSettingsPage|"
+msgid "Standard:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:125
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:149
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:173
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:197
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:221
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:308
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:345
+msgctxt "ItemViewSettingsPage|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:142
+msgctxt "ItemViewSettingsPage|"
+msgid "Inactive:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:166
+msgctxt "ItemViewSettingsPage|"
+msgid "Unread messages:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:190
+msgctxt "ItemViewSettingsPage|"
+msgid "Highlight:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:214
+msgctxt "ItemViewSettingsPage|"
+msgid "Other activity:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:286
+msgctxt "ItemViewSettingsPage|"
+msgid "Custom Nick List Colors"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:301
+msgctxt "ItemViewSettingsPage|"
+msgid "Online:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.ui:338
+msgctxt "ItemViewSettingsPage|"
+msgid "Away:"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:29
+msgctxt "ItemViewSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:29
+msgctxt "ItemViewSettingsPage|"
+msgid "Chat & Nick Lists"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:34
+msgctxt "ItemViewSettingsPage|"
+msgid "Network"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:37
+msgctxt "ItemViewSettingsPage|"
+msgid "Inactive"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:38
+msgctxt "ItemViewSettingsPage|"
+msgid "Normal"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:39
+msgctxt "ItemViewSettingsPage|"
+msgid "Unread messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:40
+msgctxt "ItemViewSettingsPage|"
+msgid "Highlight"
+msgstr ""
+
+#: ../src/qtui/settingspages/itemviewsettingspage.cpp:41
+msgctxt "ItemViewSettingsPage|"
+msgid "Other activity"
+msgstr ""
+
+#: ../src/qtui/knotificationbackend.cpp:130
+#, qt-format
+msgctxt "KNotificationBackend|"
+msgid "%n pending highlight(s)"
+msgid_plural "%n pending highlight(s)"
+msgstr[0] ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:80
+msgctxt "KeySequenceButton|"
+msgid "The key you just pressed is not supported by Qt."
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:81
+msgctxt "KeySequenceButton|"
+msgid "Unsupported Key"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:176
+msgctxt "KeySequenceWidget|"
+msgid ""
+"Click on the button, then enter the shortcut like you would in the program.\n"
+"Example for Ctrl+a: hold the Ctrl key and press a."
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:274
+msgctxt "KeySequenceWidget|Meta key"
+msgid "Meta"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:275
+msgctxt "KeySequenceWidget|Ctrl key"
+msgid "Ctrl"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:276
+msgctxt "KeySequenceWidget|Alt key"
+msgid "Alt"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:277
+msgctxt "KeySequenceWidget|Shift key"
+msgid "Shift"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:281
+msgctxt ""
+"KeySequenceWidget|What the user inputs now will be taken as the new shortcut"
+msgid "Input"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:288
+msgctxt "KeySequenceWidget|No shortcut defined"
+msgid "None"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:383
+#: ../src/qtui/settingspages/keysequencewidget.cpp:389
+msgctxt "KeySequenceWidget|"
+msgid "Shortcut Conflict"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:384
+#, qt-format
+msgctxt "KeySequenceWidget|"
+msgid ""
+"The \"%1\" shortcut is already in use, and cannot be configured.\n"
+"Please choose another one."
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:390
+#, qt-format
+msgctxt "KeySequenceWidget|"
+msgid ""
+"The \"%1\" shortcut is ambiguous with the shortcut for the following action:"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:392
+msgctxt "KeySequenceWidget|"
+msgid "Do you want to reassign this shortcut to the selected action?"
+msgstr ""
+
+#: ../src/qtui/settingspages/keysequencewidget.cpp:395
+msgctxt "KeySequenceWidget|"
+msgid "Reassign"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:175
+msgctxt "LegacyPeer|"
+msgid "Invalid handshake message!"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:246
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "Unknown protocol message of type %1"
+msgstr ""
+
+#: ../src/common/protocols/legacy/legacypeer.cpp:295
+#, qt-format
+msgctxt "LegacyPeer|"
+msgid "<b>Quassel Core Version %1</b><br>Built: %2<br>Up %3d%4h%5m (since %6)"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:355
+msgctxt "MainWin|"
+msgid "General"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:357
+msgctxt "MainWin|"
+msgid "&Connect to Core..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:359
+msgctxt "MainWin|"
+msgid "&Disconnect from Core"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:361
+msgctxt "MainWin|"
+msgid "Core &Info..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:363
+msgctxt "MainWin|"
+msgid "Configure &Networks..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:366
+msgctxt "MainWin|"
+msgid "&Quit"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:370
+msgctxt "MainWin|"
+msgid "&Configure Chat Lists..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:373
+msgctxt "MainWin|"
+msgid "&Lock Layout"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:377
+msgctxt "MainWin|"
+msgid "Show &Search Bar"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:379
+msgctxt "MainWin|"
+msgid "Show Away Log"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:381
+msgctxt "MainWin|"
+msgid "Show &Menubar"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:384
+msgctxt "MainWin|"
+msgid "Show Status &Bar"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:390
+msgctxt "MainWin|"
+msgid "&Full Screen Mode"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:397
+msgctxt "MainWin|"
+msgid "Configure &Shortcuts..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:403 ../src/qtui/mainwin.cpp:407
+msgctxt "MainWin|"
+msgid "&Configure Quassel..."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:413
+msgctxt "MainWin|"
+msgid "&About Quassel"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:418
+msgctxt "MainWin|"
+msgid "About &Qt"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:422
+msgctxt "MainWin|"
+msgid "Debug &NetworkModel"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:424
+msgctxt "MainWin|"
+msgid "Debug &BufferViewOverlay"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:426
+msgctxt "MainWin|"
+msgid "Debug &MessageModel"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:428
+msgctxt "MainWin|"
+msgid "Debug &HotList"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:430
+msgctxt "MainWin|"
+msgid "Debug &Log"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:432
+msgctxt "MainWin|"
+msgid "Reload Stylesheet"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:435
+msgctxt "MainWin|"
+msgid "Hide Current Buffer"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:439
+msgctxt "MainWin|"
+msgid "Navigation"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:441
+msgctxt "MainWin|"
+msgid "Jump to hot chat"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:453
+msgctxt "MainWin|"
+msgid "Set Quick Access #0"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:455
+msgctxt "MainWin|"
+msgid "Set Quick Access #1"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:457
+msgctxt "MainWin|"
+msgid "Set Quick Access #2"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:459
+msgctxt "MainWin|"
+msgid "Set Quick Access #3"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:461
+msgctxt "MainWin|"
+msgid "Set Quick Access #4"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:463
+msgctxt "MainWin|"
+msgid "Set Quick Access #5"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:465
+msgctxt "MainWin|"
+msgid "Set Quick Access #6"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:467
+msgctxt "MainWin|"
+msgid "Set Quick Access #7"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:469
+msgctxt "MainWin|"
+msgid "Set Quick Access #8"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:471
+msgctxt "MainWin|"
+msgid "Set Quick Access #9"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:474
+msgctxt "MainWin|"
+msgid "Quick Access #0"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:476
+msgctxt "MainWin|"
+msgid "Quick Access #1"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:478
+msgctxt "MainWin|"
+msgid "Quick Access #2"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:480
+msgctxt "MainWin|"
+msgid "Quick Access #3"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:482
+msgctxt "MainWin|"
+msgid "Quick Access #4"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:484
+msgctxt "MainWin|"
+msgid "Quick Access #5"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:486
+msgctxt "MainWin|"
+msgid "Quick Access #6"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:488
+msgctxt "MainWin|"
+msgid "Quick Access #7"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:490
+msgctxt "MainWin|"
+msgid "Quick Access #8"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:492
+msgctxt "MainWin|"
+msgid "Quick Access #9"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:496
+msgctxt "MainWin|"
+msgid "Activate Next Chat List"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:498
+msgctxt "MainWin|"
+msgid "Activate Previous Chat List"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:500
+msgctxt "MainWin|"
+msgid "Go to Next Chat"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:502
+msgctxt "MainWin|"
+msgid "Go to Previous Chat"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:511
+msgctxt "MainWin|"
+msgid "&File"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:524
+msgctxt "MainWin|"
+msgid "&Networks"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:530
+msgctxt "MainWin|"
+msgid "&View"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:531
+msgctxt "MainWin|"
+msgid "&Chat Lists"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:533
+msgctxt "MainWin|"
+msgid "&Toolbars"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:547
+msgctxt "MainWin|"
+msgid "&Settings"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:556
+msgctxt "MainWin|"
+msgid "&Help"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:564
+msgctxt "MainWin|"
+msgid "Debug"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:840
+msgctxt "MainWin|"
+msgid "Nicks"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:849
+msgctxt "MainWin|"
+msgid "Show Nick List"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:862
+msgctxt "MainWin|"
+msgid "Chat Monitor"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:874
+msgctxt "MainWin|"
+msgid "Show Chat Monitor"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:880
+msgctxt "MainWin|"
+msgid "Inputline"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:889
+msgctxt "MainWin|"
+msgid "Show Input Line"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:904
+msgctxt "MainWin|"
+msgid "Topic"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:916
+msgctxt "MainWin|"
+msgid "Show Topic Line"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1010
+msgctxt "MainWin|"
+msgid "Main Toolbar"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1053
+msgctxt "MainWin|"
+msgid "Connected to core."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1152
+msgctxt "MainWin|"
+msgid "Not connected to core."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1170 ../src/qtui/mainwin.cpp:1180
+msgctxt "MainWin|"
+msgid "Unencrypted Connection"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1170
+msgctxt "MainWin|"
+msgid "<b>Your client does not support SSL encryption</b>"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1172 ../src/qtui/mainwin.cpp:1182
+msgctxt "MainWin|"
+msgid ""
+"Sensitive data, like passwords, will be transmitted unencrypted to your "
+"Quassel core."
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1180
+msgctxt "MainWin|"
+msgid "<b>Your core does not support SSL encryption</b>"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1198 ../src/qtui/mainwin.cpp:1219
+msgctxt "MainWin|"
+msgid "Untrusted Security Certificate"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1199
+#, qt-format
+msgctxt "MainWin|"
+msgid ""
+"<b>The SSL certificate provided by the core at %1 is untrusted for the "
+"following reasons:</b>"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1202
+msgctxt "MainWin|"
+msgid "Continue"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1203
+msgctxt "MainWin|"
+msgid "Show Certificate"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1220
+msgctxt "MainWin|"
+msgid ""
+"Would you like to accept this certificate forever without being prompted?"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1222
+msgctxt "MainWin|"
+msgid "Current Session Only"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1223
+msgctxt "MainWin|"
+msgid "Forever"
+msgstr ""
+
+#: ../src/qtui/mainwin.cpp:1234
+msgctxt "MainWin|"
+msgid "Core Connection Error"
+msgstr ""
+
+#: ../src/client/messagemodel.cpp:404
+#, qt-format
+msgctxt "MessageModel|"
+msgid "Requesting %1 messages from backlog for buffer %2:%3"
+msgstr ""
+
+#: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
+msgctxt "MsgProcessorStatusWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
+msgctxt "MsgProcessorStatusWidget|"
+msgid "Receiving Backlog"
+msgstr ""
+
+#: ../src/uisupport/multilineedit.cpp:718
+#, qt-format
+msgctxt "MultiLineEdit|"
+msgid "Do you really want to paste %n line(s)?"
+msgid_plural "Do you really want to paste %n line(s)?"
+msgstr[0] ""
+
+#: ../src/uisupport/multilineedit.cpp:727
+msgctxt "MultiLineEdit|"
+msgid "Paste Protection"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:14
+msgctxt "NetworkAddDlg|"
+msgid "Add Network"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:22
+msgctxt "NetworkAddDlg|"
+msgid "Use preset:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:57
+msgctxt "NetworkAddDlg|"
+msgid "Manually specify network settings"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:67
+msgctxt "NetworkAddDlg|"
+msgid "Manual Settings"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:75
+msgctxt "NetworkAddDlg|"
+msgid "Network name:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:85
+msgctxt "NetworkAddDlg|"
+msgid "Server address:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:95
+msgctxt "NetworkAddDlg|"
+msgid "Port:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:115
+msgctxt "NetworkAddDlg|"
+msgid "Server password:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkadddlg.ui:131
+msgctxt "NetworkAddDlg|"
+msgid "Use secure connection"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkeditdlg.ui:13
+msgctxt "NetworkEditDlg|"
+msgid "Dialog"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkeditdlg.ui:21
+msgctxt "NetworkEditDlg|"
+msgid "Please enter a network name:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:840
+msgctxt "NetworkEditDlg|"
+msgid "Add Network"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:213
+#, qt-format
+msgctxt "NetworkItem|"
+msgid "Server: %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:214
+#, qt-format
+msgctxt "NetworkItem|"
+msgid "Users: %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:217
+#, qt-format
+msgctxt "NetworkItem|"
+msgid "Lag: %1 msecs"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:963
+msgctxt "NetworkModel|"
+msgid "Chat"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:963
+msgctxt "NetworkModel|"
+msgid "Topic"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:963
+msgctxt "NetworkModel|"
+msgid "Nick Count"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:177
+msgctxt "NetworkModelController|"
+msgid "Do you want to delete the following buffer(s) permanently?"
+msgid_plural "Do you want to delete the following buffer(s) permanently?"
+msgstr[0] ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:190
+#, qt-format
+msgctxt "NetworkModelController|"
+msgid "...and <b>%1</b> more<br><br>"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:191
+msgctxt "NetworkModelController|"
+msgid ""
+"<b>Note:</b> This will delete all related data, including all backlog data, "
+"from the core's database and cannot be undone."
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:193
+msgctxt "NetworkModelController|"
+msgid ""
+"<br>Active channel buffers cannot be deleted, please part the channel first."
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:195
+msgctxt "NetworkModelController|"
+msgid "Remove buffers permanently?"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:530
+msgctxt "NetworkModelController::JoinDlg|"
+msgid "Join Channel"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:533
+msgctxt "NetworkModelController::JoinDlg|"
+msgid "Network:"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:535
+msgctxt "NetworkModelController::JoinDlg|"
+msgid "Channel:"
+msgstr ""
+
+#: ../src/uisupport/networkmodelcontroller.cpp:537
+msgctxt "NetworkModelController::JoinDlg|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:158
+msgctxt "NetworkPage|"
+msgid "Setup Network Connection"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:14
+msgctxt "NetworksSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:48
+msgctxt "NetworksSettingsPage|"
+msgid "Re&name..."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:65
+#: ../src/qtui/settingspages/networkssettingspage.ui:235
+msgctxt "NetworksSettingsPage|"
+msgid "&Add..."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:88
+#: ../src/qtui/settingspages/networkssettingspage.ui:252
+msgctxt "NetworksSettingsPage|"
+msgid "De&lete"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:124
+msgctxt "NetworksSettingsPage|"
+msgid "Network Details"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:132
+msgctxt "NetworksSettingsPage|"
+msgid "Identity:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:149
+#: ../src/qtui/settingspages/networkssettingspage.ui:281
+#: ../src/qtui/settingspages/networkssettingspage.ui:295
+msgctxt "NetworksSettingsPage|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:190
+msgctxt "NetworksSettingsPage|"
+msgid "Servers"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:193
+msgctxt "NetworksSettingsPage|"
+msgid "Manage servers for this network"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:217
+msgctxt "NetworksSettingsPage|"
+msgid "&Edit..."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:278
+msgctxt "NetworksSettingsPage|"
+msgid "Move upwards in list"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:292
+msgctxt "NetworksSettingsPage|"
+msgid "Move downwards in list"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:337
+msgctxt "NetworksSettingsPage|"
+msgid "Commands"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:340
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Configure automatic identification or misc. commands to be executed after "
+"connecting to a server"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:346
+msgctxt "NetworksSettingsPage|"
+msgid "Commands to execute on connect:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:362
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Specify a list of IRC commands to be executed upon connect.\n"
+"Note that Quassel IRC automatically rejoins channels, so /join will rarely be needed here!"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:374
+msgctxt "NetworksSettingsPage|"
+msgid "Connection"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:383
+msgctxt "NetworksSettingsPage|"
+msgid "Automatically reconnect to the IRC network after connection failures"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:386
+msgctxt "NetworksSettingsPage|"
+msgid "Automatic Reconnect"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:397
+msgctxt "NetworksSettingsPage|"
+msgid "Wait"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:404
+msgctxt "NetworksSettingsPage|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:420
+msgctxt "NetworksSettingsPage|"
+msgid "between retries"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:444
+msgctxt "NetworksSettingsPage|"
+msgid "Number of retries:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:464
+msgctxt "NetworksSettingsPage|"
+msgid "Unlimited"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:489
+msgctxt "NetworksSettingsPage|"
+msgid "Rejoin all channels after reconnect"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:516
+#: ../src/qtui/settingspages/networkssettingspage.ui:525
+msgctxt "NetworksSettingsPage|"
+msgid "Auto Identify"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:540
+msgctxt "NetworksSettingsPage|"
+msgid "NickServ"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:557
+msgctxt "NetworksSettingsPage|"
+msgid "Service:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:567
+#: ../src/qtui/settingspages/networkssettingspage.ui:615
+msgctxt "NetworksSettingsPage|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:580
+msgctxt "NetworksSettingsPage|"
+msgid "Use SASL Authentication"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:625
+msgctxt "NetworksSettingsPage|"
+msgid "Account:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:635
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"<html><head/><body><p><span style=\" font-weight:600;\">Note:</span> because"
+" the identity has an ssl certificate set, SASL EXTERNAL will be "
+"used.</p></body></html>"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:659
+msgctxt "NetworksSettingsPage|"
+msgid "Encodings"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:662
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Configure advanced settings such as message encodings and automatic "
+"reconnect"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:671
+msgctxt "NetworksSettingsPage|"
+msgid "Control encodings for in- and outgoing messages"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:674
+msgctxt "NetworksSettingsPage|"
+msgid "Use Custom Encodings"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:685
+#: ../src/qtui/settingspages/networkssettingspage.ui:705
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Specify which encoding your messages will be sent in.\n"
+"UTF-8 should be a sane choice for most networks."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:689
+msgctxt "NetworksSettingsPage|"
+msgid "Send messages in:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:716
+#: ../src/qtui/settingspages/networkssettingspage.ui:736
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Incoming messages encoded in Utf8 will always be treated as such.\n"
+"This setting defines the encoding for messages that are not Utf8."
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:720
+msgctxt "NetworksSettingsPage|"
+msgid "Receive fallback:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:747
+#: ../src/qtui/settingspages/networkssettingspage.ui:761
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"This specifies how control messages, nicks and servernames are encoded.\n"
+"Unless you *really* know what you do, leave this as ISO-8859-1!"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.ui:751
+msgctxt "NetworksSettingsPage|"
+msgid "Server encoding:"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:37
+msgctxt "NetworksSettingsPage|"
+msgid "IRC"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:37
+msgctxt "NetworksSettingsPage|"
+msgid "Networks"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:184
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"<b>The following problems need to be corrected before your changes can be "
+"applied:</b><ul>"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:185
+msgctxt "NetworksSettingsPage|"
+msgid "<li>All networks need at least one server defined</li>"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:186
+msgctxt "NetworksSettingsPage|"
+msgid "</ul>"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:187
+msgctxt "NetworksSettingsPage|"
+msgid "Invalid Network Settings"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:650
+msgctxt "NetworksSettingsPage|"
+msgid "Delete Network?"
+msgstr ""
+
+#: ../src/qtui/settingspages/networkssettingspage.cpp:651
+#, qt-format
+msgctxt "NetworksSettingsPage|"
+msgid ""
+"Do you really want to delete the network \"%1\" and all related settings, "
+"including the backlog?"
+msgstr ""
+
+#: ../src/qtui/settingspages/nickeditdlg.ui:13
+msgctxt "NickEditDlg|"
+msgid "Edit Nickname"
+msgstr ""
+
+#: ../src/qtui/settingspages/nickeditdlg.ui:19
+msgctxt "NickEditDlg|"
+msgid "Please enter a valid nickname:"
+msgstr ""
+
+#: ../src/qtui/settingspages/nickeditdlg.ui:32
+msgctxt "NickEditDlg|"
+msgid ""
+"A valid nickname may contain letters from the English alphabet, digits, and "
+"the special characters {, }, [, ], \\, |, `, ^, _ and -."
+msgstr ""
+
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
+msgctxt "NickEditDlg|"
+msgid "Add Nickname"
+msgstr ""
+
+#: ../src/qtui/settingspages/notificationssettingspage.cpp:28
+msgctxt "NotificationsSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/notificationssettingspage.cpp:28
+msgctxt "NotificationsSettingsPage|"
+msgid "Notifications"
+msgstr ""
+
+#: ../src/qtui/phononnotificationbackend.cpp:188
+msgctxt "PhononNotificationBackend::ConfigWidget|"
+msgid "Select Audio File"
+msgstr ""
+
+#: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
+msgctxt "PhononNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
+msgctxt "PhononNotificationConfigWidget|"
+msgid "Play a sound"
+msgstr ""
+
+#: ../src/qtui/ui/phononnotificationconfigwidget.ui:46
+msgctxt "PhononNotificationConfigWidget|"
+msgid "Prelisten to the selected sound"
+msgstr ""
+
+#: ../src/qtui/ui/phononnotificationconfigwidget.ui:59
+#: ../src/qtui/ui/phononnotificationconfigwidget.ui:69
+msgctxt "PhononNotificationConfigWidget|"
+msgid "Select the sound file to play"
+msgstr ""
+
+#: ../src/core/postgresqlstorage.cpp:72
+msgctxt "PostgreSqlStorage|"
+msgid "PostgreSQL Turbo Bomber HD!"
+msgstr ""
+
+#: ../src/client/backlogrequester.cpp:95
+#, qt-format
+msgctxt "QObject|"
+msgid "Requesting a total of up to %1 backlog messages for %2 buffers"
+msgstr ""
+
+#: ../src/client/backlogrequester.cpp:122
+#, qt-format
+msgctxt "QObject|"
+msgid ""
+"Requesting up to %1 of all unread backlog messages (plus additional %2)"
+msgstr ""
+
+#: ../src/client/backlogrequester.cpp:142
+#, qt-format
+msgctxt "QObject|"
+msgid "Requesting a total of up to %1 unread backlog messages for %2 buffers"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:56
+msgctxt "QObject|"
+msgid "Welcome to Quassel IRC"
+msgstr ""
+
+#: ../src/qtui/ircconnectionwizard.cpp:58
+msgctxt "QObject|"
+msgid ""
+"This wizard will help you to set up your default identity and your IRC "
+"network connection.<br>This only covers basic settings. You can cancel this "
+"wizard any time and use the settings dialog for more detailed changes."
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:128 ../src/uisupport/qssparser.cpp:178
+#: ../src/uisupport/qssparser.cpp:334
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid block declaration: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:147
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid palette role assignment: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:166
+#, qt-format
+msgctxt "QssParser|"
+msgid "Unknown palette role name: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:204
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid subelement name in %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:248
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid message type in %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:257
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid condition %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:269
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid message label: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:281
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid senderhash specification: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:285
+msgctxt "QssParser|"
+msgid "Senderhash can be at most \"0x0f\"!"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:301
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid format name: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:309
+#, qt-format
+msgctxt "QssParser|"
+msgid "Illegal IRC color specification (must be between 00 and 0f): %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:318
+#, qt-format
+msgctxt "QssParser|"
+msgid "Unhandled condition: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:349
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid proplist %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:368
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid chatlist item type %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:384
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid chatlist state %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:414
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid property declaration: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:438
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid font property: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:444
+#, qt-format
+msgctxt "QssParser|"
+msgid "Unknown ChatLine property: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:468
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid palette color role specification: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:475
+#, qt-format
+msgctxt "QssParser|"
+msgid "Unknown palette color role: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:482 ../src/uisupport/qssparser.cpp:505
+#: ../src/uisupport/qssparser.cpp:527
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid gradient declaration: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:491 ../src/uisupport/qssparser.cpp:513
+#: ../src/uisupport/qssparser.cpp:537
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid gradient stops list: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:646
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid font specification: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:687
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid font style specification: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:702
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid font weight specification: %1"
+msgstr ""
+
+#: ../src/uisupport/qssparser.cpp:714
+#, qt-format
+msgctxt "QssParser|"
+msgid "Invalid font size specification: %1"
+msgstr ""
+
+#: ../src/common/util.cpp:169
+msgctxt "Quassel::secondsToString()|"
+msgid "year"
+msgstr ""
+
+#: ../src/common/util.cpp:170
+msgctxt "Quassel::secondsToString()|"
+msgid "day"
+msgstr ""
+
+#: ../src/common/util.cpp:171
+msgctxt "Quassel::secondsToString()|"
+msgid "h"
+msgstr ""
+
+#: ../src/common/util.cpp:172
+msgctxt "Quassel::secondsToString()|"
+msgid "min"
+msgstr ""
+
+#: ../src/common/util.cpp:173
+msgctxt "Quassel::secondsToString()|"
+msgid "sec"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:482
+#, qt-format
+msgctxt "QueryBufferItem|"
+msgid "<b>Query with %1</b>"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:500
+#, qt-format
+msgctxt "QueryBufferItem|"
+msgid "idling since %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:503
+#, qt-format
+msgctxt "QueryBufferItem|"
+msgid "login time: %1"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:506
+#, qt-format
+msgctxt "QueryBufferItem|"
+msgid "server: %1"
+msgstr ""
+
+#: ../src/qtui/settingspages/saveidentitiesdlg.ui:13
+msgctxt "SaveIdentitiesDlg|"
+msgid "Sync With Core"
+msgstr ""
+
+#: ../src/qtui/settingspages/saveidentitiesdlg.ui:21
+msgctxt "SaveIdentitiesDlg|"
+msgid "Syncing data with core, please wait..."
+msgstr ""
+
+#: ../src/qtui/settingspages/saveidentitiesdlg.ui:81
+msgctxt "SaveIdentitiesDlg|"
+msgid "Abort"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:14
+msgctxt "ServerEditDlg|"
+msgid "Dialog"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:30
+msgctxt "ServerEditDlg|"
+msgid "Server Info"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:38
+msgctxt "ServerEditDlg|"
+msgid "Server address:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:45
+#: ../src/qtui/settingspages/servereditdlg.ui:227
+msgctxt "ServerEditDlg|"
+msgid "Port:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:72
+msgctxt "ServerEditDlg|"
+msgid "Password:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:94
+msgctxt "ServerEditDlg|"
+msgid "Use SSL"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:119
+msgctxt "ServerEditDlg|"
+msgid "Advanced"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:140
+msgctxt "ServerEditDlg|"
+msgid "SSL Version:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:147
+msgctxt "ServerEditDlg|"
+msgid ""
+"Do not change unless you're going to connect to a server not supporting "
+"SSLv3!"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:151
+msgctxt "ServerEditDlg|"
+msgid "SSLv3 (default)"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:156
+msgctxt "ServerEditDlg|"
+msgid "SSLv2"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:161
+msgctxt "ServerEditDlg|"
+msgid "TLSv1"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:171
+msgctxt "ServerEditDlg|"
+msgid "Use a Proxy"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:188
+msgctxt "ServerEditDlg|"
+msgid "Proxy Type:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:196
+msgctxt "ServerEditDlg|"
+msgid "Socks 5"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:201
+msgctxt "ServerEditDlg|"
+msgid "HTTP"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:213
+msgctxt "ServerEditDlg|"
+msgid "Proxy Host:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:220
+msgctxt "ServerEditDlg|"
+msgid "localhost"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:251
+msgctxt "ServerEditDlg|"
+msgid "Proxy Username:"
+msgstr ""
+
+#: ../src/qtui/settingspages/servereditdlg.ui:261
+msgctxt "ServerEditDlg|"
+msgid "Proxy Password:"
+msgstr ""
+
+#: ../src/qtui/ui/settingsdlg.ui:14
+msgctxt "SettingsDlg|"
+msgid "Configure Quassel"
+msgstr ""
+
+#: ../src/qtui/ui/settingsdlg.ui:35 ../src/qtui/ui/settingsdlg.ui:50
+#: ../src/qtui/settingsdlg.cpp:111
+msgctxt "SettingsDlg|"
+msgid "Settings"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:121
+msgctxt "SettingsDlg|"
+msgid "Save changes"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:122
+msgctxt "SettingsDlg|"
+msgid ""
+"There are unsaved changes on the current configuration page. Would you like "
+"to apply your changes now?"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:136 ../src/qtui/settingsdlg.cpp:140
+#, qt-format
+msgctxt "SettingsDlg|"
+msgid "Configure %1"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:220
+msgctxt "SettingsDlg|"
+msgid "Reload Settings"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:220
+msgctxt "SettingsDlg|"
+msgid "Do you like to reload the settings, undoing your changes on this page?"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:231
+msgctxt "SettingsDlg|"
+msgid "Restore Defaults"
+msgstr ""
+
+#: ../src/qtui/settingsdlg.cpp:231
+msgctxt "SettingsDlg|"
+msgid "Do you like to restore the default values for this page?"
+msgstr ""
+
+#: ../src/qtui/ui/settingspagedlg.ui:14
+msgctxt "SettingsPageDlg|"
+msgid "Configure Quassel"
+msgstr ""
+
+#: ../src/qtui/ui/settingspagedlg.ui:30
+msgctxt "SettingsPageDlg|"
+msgid "Settings"
+msgstr ""
+
+#: ../src/qtui/settingspagedlg.cpp:39
+#, qt-format
+msgctxt "SettingsPageDlg|"
+msgid "Configure %1"
+msgstr ""
+
+#: ../src/qtui/settingspagedlg.cpp:120
+msgctxt "SettingsPageDlg|"
+msgid "Reload Settings"
+msgstr ""
+
+#: ../src/qtui/settingspagedlg.cpp:120
+msgctxt "SettingsPageDlg|"
+msgid "Do you like to reload the settings, undoing your changes on this page?"
+msgstr ""
+
+#: ../src/qtui/settingspagedlg.cpp:131
+msgctxt "SettingsPageDlg|"
+msgid "Restore Defaults"
+msgstr ""
+
+#: ../src/qtui/settingspagedlg.cpp:131
+msgctxt "SettingsPageDlg|"
+msgid "Do you like to restore the default values for this page?"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutsmodel.cpp:121
+msgctxt "ShortcutsModel|"
+msgid "Action"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutsmodel.cpp:123
+msgctxt "ShortcutsModel|"
+msgid "Shortcut"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:14
+msgctxt "ShortcutsSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:22
+msgctxt "ShortcutsSettingsPage|"
+msgid "Search:"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:62
+msgctxt "ShortcutsSettingsPage|"
+msgid "Shortcut for Selected Action"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:68
+msgctxt "ShortcutsSettingsPage|"
+msgid "Default:"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:75
+#: ../src/qtui/settingspages/shortcutssettingspage.cpp:99
+#: ../src/qtui/settingspages/shortcutssettingspage.cpp:111
+msgctxt "ShortcutsSettingsPage|"
+msgid "None"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.ui:82
+msgctxt "ShortcutsSettingsPage|"
+msgid "Custom:"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.cpp:65
+msgctxt "ShortcutsSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/shortcutssettingspage.cpp:65
+msgctxt "ShortcutsSettingsPage|"
+msgid "Shortcuts"
+msgstr ""
+
+#: ../src/common/signalproxy.cpp:736
+msgctxt "SignalProxy|"
+msgid "Disconnecting"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:28
+msgctxt "SimpleNetworkEditor|"
+msgid "Network name:"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:35
+msgctxt "SimpleNetworkEditor|"
+msgid "The name of the IRC network you are configuring"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:63
+msgctxt "SimpleNetworkEditor|"
+msgid "Servers"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:81
+msgctxt "SimpleNetworkEditor|"
+msgid "A list of IRC servers belonging to this network"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:96
+msgctxt "SimpleNetworkEditor|"
+msgid "Edit this server entry"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:99
+msgctxt "SimpleNetworkEditor|"
+msgid "&Edit..."
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:116
+msgctxt "SimpleNetworkEditor|"
+msgid "Add another IRC server"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:119
+msgctxt "SimpleNetworkEditor|"
+msgid "&Add..."
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:136
+msgctxt "SimpleNetworkEditor|"
+msgid "Remove this server entry from the list"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:139
+msgctxt "SimpleNetworkEditor|"
+msgid "De&lete"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:165
+msgctxt "SimpleNetworkEditor|"
+msgid "Move upwards in list"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:168
+#: ../src/qtui/ui/simplenetworkeditor.ui:182
+msgctxt "SimpleNetworkEditor|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:179
+msgctxt "SimpleNetworkEditor|"
+msgid "Move downwards in list"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:226
+msgctxt "SimpleNetworkEditor|"
+msgid "Join Channels Automatically"
+msgstr ""
+
+#: ../src/qtui/ui/simplenetworkeditor.ui:250
+msgctxt "SimpleNetworkEditor|"
+msgid ""
+"A list of IRC channels you will join automatically after connecting to the "
+"network"
+msgstr ""
+
+#: ../src/qtui/snorenotificationbackend.cpp:61
+#: ../src/qtui/snorenotificationbackend.cpp:100
+msgctxt "SnoreNotificationBackend|"
+msgid "Private Message"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:20
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:29
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Snore"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:41
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Backend:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:64
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "Timeout:"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:80
+msgctxt "SnoreNotificationConfigWidget|"
+msgid " s"
+msgstr ""
+
+#: ../src/qtui/ui/snorentificationconfigwidget.ui:96
+msgctxt "SnoreNotificationConfigWidget|"
+msgid "0 means infinite"
+msgstr ""
+
+#: ../src/core/sqlitestorage.cpp:60
+msgctxt "SqliteStorage|"
+msgid ""
+"SQLite is a file-based database engine that does not require any setup. It "
+"is suitable for small and medium-sized databases that do not require access "
+"via network. Use SQLite if your Quassel Core should store its data on the "
+"same machine it is running on, and if you only expect a few users to use "
+"your core."
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:14
+msgctxt "SslInfoDlg|"
+msgid "Security Information"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:22
+msgctxt "SslInfoDlg|"
+msgid "<b>Hostname:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:39
+msgctxt "SslInfoDlg|"
+msgid "<b>IP address:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:56
+msgctxt "SslInfoDlg|"
+msgid "<b>Encryption:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:73
+msgctxt "SslInfoDlg|"
+msgid "<b>Protocol:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:90
+msgctxt "SslInfoDlg|"
+msgid "<b>Certificate chain:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:120
+msgctxt "SslInfoDlg|"
+msgid "Subject"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:126 ../src/qtui/ui/sslinfodlg.ui:248
+msgctxt "SslInfoDlg|"
+msgid "<b>Common name:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:143 ../src/qtui/ui/sslinfodlg.ui:265
+msgctxt "SslInfoDlg|"
+msgid "<b>Organization:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:160 ../src/qtui/ui/sslinfodlg.ui:282
+msgctxt "SslInfoDlg|"
+msgid "<b>Organizational unit:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:177 ../src/qtui/ui/sslinfodlg.ui:299
+msgctxt "SslInfoDlg|"
+msgid "<b>Country:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:194 ../src/qtui/ui/sslinfodlg.ui:316
+msgctxt "SslInfoDlg|"
+msgid "<b>State or province:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:231 ../src/qtui/ui/sslinfodlg.ui:353
+msgctxt "SslInfoDlg|"
+msgid "<b>Locality:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:242
+msgctxt "SslInfoDlg|"
+msgid "Issuer"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:367
+msgctxt "SslInfoDlg|"
+msgid "<b>Validity period:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:384
+msgctxt "SslInfoDlg|"
+msgid "<b>MD5 digest:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:401
+msgctxt "SslInfoDlg|"
+msgid "<b>SHA1 digest:</b>"
+msgstr ""
+
+#: ../src/qtui/ui/sslinfodlg.ui:431
+msgctxt "SslInfoDlg|"
+msgid "<b>Trusted:</b>"
+msgstr ""
+
+#: ../src/qtui/sslinfodlg.cpp:71
+msgctxt "SslInfoDlg|"
+msgid "Yes"
+msgstr ""
+
+#: ../src/qtui/sslinfodlg.cpp:73
+msgctxt "SslInfoDlg|"
+msgid "No, for the following reasons:<ul>"
+msgstr ""
+
+#: ../src/qtui/sslinfodlg.cpp:80
+#, qt-format
+msgctxt "SslInfoDlg|"
+msgid "%1 to %2"
+msgstr ""
+
+#: ../src/client/networkmodel.h:150
+msgctxt "StatusBufferItem|"
+msgid "Status Buffer"
+msgstr ""
+
+#: ../src/qtui/systemtray.cpp:68 ../src/qtui/systemtray.cpp:101
+msgctxt "SystemTray|"
+msgid "&Minimize"
+msgstr ""
+
+#: ../src/qtui/systemtray.cpp:103
+msgctxt "SystemTray|"
+msgid "&Restore"
+msgstr ""
+
+#: ../src/qtui/systraynotificationbackend.cpp:142
+#, qt-format
+msgctxt "SystrayNotificationBackend|"
+msgid "%n pending highlight(s)"
+msgid_plural "%n pending highlight(s)"
+msgstr[0] ""
+
+#: ../src/qtui/systraynotificationbackend.cpp:156
+msgctxt "SystrayNotificationBackend::ConfigWidget|"
+msgid "Show a message in a popup"
+msgstr ""
+
+#: ../src/uisupport/tabcompleter.cpp:52
+msgctxt "TabCompleter|"
+msgid "Tab completion"
+msgstr ""
+
+#: ../src/qtui/taskbarnotificationbackend.cpp:83
+msgctxt "TaskbarNotificationBackend::ConfigWidget|"
+msgid "Activate dock entry, timeout:"
+msgstr ""
+
+#: ../src/qtui/taskbarnotificationbackend.cpp:85
+msgctxt "TaskbarNotificationBackend::ConfigWidget|"
+msgid "Mark taskbar entry, timeout:"
+msgstr ""
+
+#: ../src/qtui/taskbarnotificationbackend.cpp:93
+msgctxt "TaskbarNotificationBackend::ConfigWidget|"
+msgid "Unlimited"
+msgstr ""
+
+#: ../src/qtui/taskbarnotificationbackend.cpp:94
+msgctxt "TaskbarNotificationBackend::ConfigWidget|"
+msgid " seconds"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:31
+msgctxt "ToolBarActionProvider|"
+msgid "Connect"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:31
+msgctxt "ToolBarActionProvider|"
+msgid "Connect to IRC"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:32
+msgctxt "ToolBarActionProvider|"
+msgid "Disconnect"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:32
+msgctxt "ToolBarActionProvider|"
+msgid "Disconnect from IRC"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:34
+msgctxt "ToolBarActionProvider|"
+msgid "Part"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:34
+msgctxt "ToolBarActionProvider|"
+msgid "Leave currently selected channel"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:35
+msgctxt "ToolBarActionProvider|"
+msgid "Join"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:35
+msgctxt "ToolBarActionProvider|"
+msgid "Join a channel"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:37
+msgctxt "ToolBarActionProvider|"
+msgid "Query"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:37
+msgctxt "ToolBarActionProvider|"
+msgid "Start a private conversation"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:38
+msgctxt "ToolBarActionProvider|"
+msgid "Whois"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:38
+msgctxt "ToolBarActionProvider|"
+msgid "Request user information"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:40
+msgctxt "ToolBarActionProvider|"
+msgid "Op"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:40
+msgctxt "ToolBarActionProvider|"
+msgid "Give operator privileges to user"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:41
+msgctxt "ToolBarActionProvider|"
+msgid "Deop"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:41
+msgctxt "ToolBarActionProvider|"
+msgid "Take operator privileges from user"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:42
+msgctxt "ToolBarActionProvider|"
+msgid "Voice"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:42
+msgctxt "ToolBarActionProvider|"
+msgid "Give voice to user"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:43
+msgctxt "ToolBarActionProvider|"
+msgid "Devoice"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:43
+msgctxt "ToolBarActionProvider|"
+msgid "Take voice from user"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:44
+msgctxt "ToolBarActionProvider|"
+msgid "Kick"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:44
+msgctxt "ToolBarActionProvider|"
+msgid "Remove user from channel"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:45
+msgctxt "ToolBarActionProvider|"
+msgid "Ban"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:45
+msgctxt "ToolBarActionProvider|"
+msgid "Ban user from channel"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:46
+msgctxt "ToolBarActionProvider|"
+msgid "Kick/Ban"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:46
+msgctxt "ToolBarActionProvider|"
+msgid "Remove and ban user from channel"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:51
+msgctxt "ToolBarActionProvider|"
+msgid "Connect to all"
+msgstr ""
+
+#: ../src/uisupport/toolbaractionprovider.cpp:58
+msgctxt "ToolBarActionProvider|"
+msgid "Disconnect from all"
+msgstr ""
+
+#: ../src/qtui/ui/topicwidget.ui:32
+msgctxt "TopicWidget|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/ui/topicwidget.ui:79
+msgctxt "TopicWidget|"
+msgid "..."
+msgstr ""
+
+#: ../src/qtui/topicwidget.cpp:120
+#, qt-format
+msgctxt "TopicWidget|"
+msgid "Users: %1"
+msgstr ""
+
+#: ../src/qtui/topicwidget.cpp:121
+#, qt-format
+msgctxt "TopicWidget|"
+msgid "Lag: %1 msecs"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
+msgctxt "TopicWidgetSettingsPage|"
+msgid "Form"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
+msgctxt "TopicWidgetSettingsPage|"
+msgid "Custom font:"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:50
+msgctxt "TopicWidgetSettingsPage|"
+msgid "Resize dynamically to fit contents"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:84
+msgctxt "TopicWidgetSettingsPage|"
+msgid "On hover only"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
+msgctxt "TopicWidgetSettingsPage|"
+msgid "Interface"
+msgstr ""
+
+#: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
+msgctxt "TopicWidgetSettingsPage|"
+msgid "Topic Widget"
+msgstr ""
+
+#. Plain Message
+#. ----------
+#. Notice Message
+#. ----------
+#. Server Message
+#. ----------
+#. Info Message
+#. ----------
+#. Error Message
+#. ----------
+#. Topic Message
+#. ----------
+#. Invite Message
+#: ../src/uisupport/uistyle.cpp:665 ../src/uisupport/uistyle.cpp:668
+#: ../src/uisupport/uistyle.cpp:709 ../src/uisupport/uistyle.cpp:712
+#: ../src/uisupport/uistyle.cpp:715 ../src/uisupport/uistyle.cpp:724
+#: ../src/uisupport/uistyle.cpp:758
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%1"
+msgstr ""
+
+#. Action Message
+#: ../src/uisupport/uistyle.cpp:671
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN %2"
+msgstr ""
+
+#. Nick Message
+#: ../src/uisupport/uistyle.cpp:675
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "You are now known as %DN%1%DN"
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:676
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN is now known as %DN%2%DN"
+msgstr ""
+
+#. Mode Message
+#: ../src/uisupport/uistyle.cpp:680
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "User mode: %DM%1%DM"
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:681
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "Mode %DM%1%DM by %DN%2%DN"
+msgstr ""
+
+#. Join Message
+#: ../src/uisupport/uistyle.cpp:685
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN %DH(%2@%3)%DH has joined %DC%4%DC"
+msgstr ""
+
+#. Part Message
+#: ../src/uisupport/uistyle.cpp:688
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN %DH(%2@%3)%DH has left %DC%4%DC"
+msgstr ""
+
+#. Quit Message
+#: ../src/uisupport/uistyle.cpp:693
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN %DH(%2@%3)%DH has quit"
+msgstr ""
+
+#. Kick Message
+#: ../src/uisupport/uistyle.cpp:701
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN has kicked %DN%2%DN from %DC%3%DC"
+msgstr ""
+
+#. Day Change Message
+#: ../src/uisupport/uistyle.cpp:719
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "{Day changed to %1}"
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:733
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "Netsplit between %DH%1%DH and %DH%2%DH ended. Users joined: "
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:737 ../src/uisupport/uistyle.cpp:753
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "%DN%1%DN (%2 more)"
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:748
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "Netsplit between %DH%1%DH and %DH%2%DH. Users quit: "
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:760 ../src/uisupport/uistyle.cpp:808
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "[%1]"
+msgstr ""
+
+#: ../src/uisupport/uistyle.cpp:806
+#, qt-format
+msgctxt "UiStyle::StyledMessage|"
+msgid "<%1>"
+msgstr ""
+
+#: ../src/client/networkmodel.cpp:786
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n Owner(s)"
+msgid_plural "%n Owner(s)"
+msgstr[0] ""
+
+#: ../src/client/networkmodel.cpp:788
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n Admin(s)"
+msgid_plural "%n Admin(s)"
+msgstr[0] ""
+
+#: ../src/client/networkmodel.cpp:790
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n Operator(s)"
+msgid_plural "%n Operator(s)"
+msgstr[0] ""
+
+#: ../src/client/networkmodel.cpp:792
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n Half-Op(s)"
+msgid_plural "%n Half-Op(s)"
+msgstr[0] ""
+
+#: ../src/client/networkmodel.cpp:794
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n Voiced"
+msgid_plural "%n Voiced"
+msgstr[0] ""
+
+#: ../src/client/networkmodel.cpp:796
+#, qt-format
+msgctxt "UserCategoryItem|"
+msgid "%n User(s)"
+msgid_plural "%n User(s)"
+msgstr[0] ""
index 238cb86..ad96497 100644 (file)
@@ -16,7 +16,7 @@ if(BUILD_GUI)
 
   if(STATIC)
     link_directories(${QT_PLUGINS_DIR}/imageformats)
-    set(CLIENT_LIBS ${CLIENT_LIBS} qjpeg qgif)
+    set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} qjpeg qgif)
   endif(STATIC)
 endif(BUILD_GUI)
 
@@ -24,55 +24,45 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}) # for version.gen
 
 # Add resources. Can't be done in other subdirs apparently.
 # Note that these variables need to contain paths relative to src/ (this dir)
-if(WITH_QT5)
-  qt5_add_resources(CLIENT_DEPS ${CLIENT_RCS})
-  qt5_add_resources(CORE_DEPS ${CORE_RCS})
-  qt5_add_resources(COMMON_DEPS ${COMMON_RCS})
-else(WITH_QT5)
-  qt4_add_resources(CLIENT_DEPS ${CLIENT_RCS})
-  qt4_add_resources(CORE_DEPS ${CORE_RCS})
-  qt4_add_resources(COMMON_DEPS ${COMMON_RCS})
-endif(WITH_QT5)
+qt_add_resources(CLIENT_DEPS ${CLIENT_RCS})
+qt_add_resources(CORE_DEPS ${CORE_RCS})
+qt_add_resources(COMMON_DEPS ${COMMON_RCS})
+
+# For Windows, Qt4 needs the QtMain module
+if (WIN32 AND NOT WITH_QT5)
+    set(MAIN Main)
+endif()
 
 if(WANT_CORE)
-  setup_qt_variables(Network Script Sql ${CORE_QT_MODULES})
-  include_directories(${QUASSEL_QT_INCLUDES})
   add_executable(quasselcore common/main.cpp ${COMMON_DEPS} ${CORE_DEPS})
-  add_dependencies(quasselcore po genversion_run)
+  qt_use_modules(quasselcore Core Network ${CORE_QT_MODULES} ${MAIN})
+  add_dependencies(quasselcore po)
   set_target_properties(quasselcore PROPERTIES
-                                    COMPILE_FLAGS "-DBUILD_CORE ${QUASSEL_QT_COMPILEFLAGS}"
+                                    COMPILE_FLAGS "-DBUILD_CORE"
                                     OUTPUT_NAME ../quasselcore)
-  target_link_libraries(quasselcore mod_core mod_common
-                                    ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
+  target_link_libraries(quasselcore mod_core mod_common ${COMMON_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
   install(TARGETS quasselcore RUNTIME DESTINATION ${BIN_INSTALL_DIR})
 endif(WANT_CORE)
 
 if(WANT_QTCLIENT)
-  setup_qt_variables(Gui Network ${CLIENT_QT_MODULES})
-  include_directories(${QUASSEL_QT_INCLUDES})
   add_executable(quasselclient WIN32 common/main.cpp ${COMMON_DEPS} ${CLIENT_DEPS})
-  add_dependencies(quasselclient po genversion_run)
+  qt_use_modules(quasselclient Core Gui Network ${CLIENT_QT_MODULES} ${MAIN})
+  add_dependencies(quasselclient po)
   set_target_properties(quasselclient PROPERTIES
-                                      COMPILE_FLAGS "-DBUILD_QTUI ${QUASSEL_QT_COMPILEFLAGS} ${CLIENT_COMPILE_FLAGS}"
+                                      COMPILE_FLAGS "-DBUILD_QTUI ${CLIENT_COMPILE_FLAGS}"
                                       OUTPUT_NAME ../quasselclient)
-  target_link_libraries(quasselclient ${LINK_KDE} mod_qtui mod_uisupport mod_client mod_common ${CLIENT_LIBS}
-                                      ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${CLIENT_LIBRARIES})
+  target_link_libraries(quasselclient ${LINK_KDE} mod_qtui mod_uisupport mod_client mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
   install(TARGETS quasselclient RUNTIME DESTINATION ${BIN_INSTALL_DIR})
 endif(WANT_QTCLIENT)
 
 if(WANT_MONO)
-  setup_qt_variables(Gui Network Script Sql ${CLIENT_QT_MODULES} ${CORE_QT_MODULES})
-  include_directories(${QUASSEL_QT_INCLUDES})
-  if(NOT WITH_QT5)
-    qt4_wrap_cpp(MOC qtui/monoapplication.h)
-  endif(NOT WITH_QT5)
-  add_executable(quassel WIN32 common/main.cpp qtui/monoapplication.cpp ${MOC} ${COMMON_DEPS} ${CLIENT_DEPS} ${CORE_DEPS})
-  add_dependencies(quassel po genversion_run)
+  add_executable(quassel WIN32 common/main.cpp qtui/monoapplication.cpp ${COMMON_DEPS} ${CLIENT_DEPS} ${CORE_DEPS})
+  qt_use_modules(quassel Core Gui Network ${CLIENT_QT_MODULES} ${CORE_QT_MODULES} ${MAIN})
+  add_dependencies(quassel po)
   set_target_properties(quassel PROPERTIES
-                                COMPILE_FLAGS "-DBUILD_MONO ${QUASSEL_QT_COMPILEFLAGS} ${CLIENT_COMPILE_FLAGS}"
+                                COMPILE_FLAGS "-DBUILD_MONO ${CLIENT_COMPILE_FLAGS}"
                                 OUTPUT_NAME ../quassel)
-  target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${CLIENT_LIBS}
-                                ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${CLIENT_LIBRARIES})
+  target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
   install(TARGETS quassel RUNTIME DESTINATION ${BIN_INSTALL_DIR})
 endif(WANT_MONO)
 
index c7b3ee3..31f0a4b 100644 (file)
@@ -1,23 +1,10 @@
 # Builds the client module
 
-# In Qt4, we still have some minor deps to QtUi: QItemSelectionModel, QSortFilterProxyModel
+# In Qt4, we still have some minor deps to QtGui: QItemSelectionModel, QSortFilterProxyModel
 # Still in Qt5: QAbstractItemView in BufferModel
 
-set(_modules )
-
-if(WITH_QT5)
-  list(APPEND _modules Widgets)
-endif(WITH_QT5)
-
-if(HAVE_DBUS)
-  list(APPEND _modules DBus)
-endif(HAVE_DBUS)
-
-setup_qt_variables(Gui Network ${_modules})
-
 set(SOURCES
     abstractmessageprocessor.cpp
-    abstractui.cpp
     backlogrequester.cpp
     buffermodel.cpp
     buffersettings.cpp
@@ -28,7 +15,6 @@ set(SOURCES
     clientbacklogmanager.cpp
     clientbufferviewconfig.cpp
     clientbufferviewmanager.cpp
-    clientcoreinfo.cpp
     clientidentity.cpp
     clientignorelistmanager.cpp
     clientirclisthelper.cpp
@@ -45,51 +31,21 @@ set(SOURCES
     messagemodel.cpp
     networkmodel.cpp
     selectionmodelsynchronizer.cpp
-    treemodel.cpp)
+    treemodel.cpp
 
-set(MOC_HDRS
-    abstractmessageprocessor.h
+    # needed for automoc
     abstractui.h
-    buffermodel.h
-    bufferviewoverlay.h
-    client.h
-    clientaliasmanager.h
-    clientauthhandler.h
-    clientbacklogmanager.h
-    clientbufferviewconfig.h
-    clientbufferviewmanager.h
     clientcoreinfo.h
-    clientidentity.h
-    clientignorelistmanager.h
-    clientirclisthelper.h
-    clienttransfer.h
-    clienttransfermanager.h
-    clientuserinputhandler.h
-    coreaccountmodel.h
-    coreconnection.h
-    execwrapper.h
-    irclistmodel.h
-    messagefilter.h
-    messagemodel.h
-    networkmodel.h
-    selectionmodelsynchronizer.h
-    treemodel.h)
-
-set(HEADERS
-    backlogsettings.h
-    backlogrequester.h
-    buffersettings.h
-    clientsettings.h
-    coreaccount.h
-   )
+)
 
-include_directories(${CMAKE_SOURCE_DIR}/src/common ${QUASSEL_QT_INCLUDES})
+if (WITH_QT5)
+    list(APPEND qt_modules Widgets)
+endif()
 
-if(NOT WITH_QT5)
-  qt4_wrap_cpp(MOC ${MOC_HDRS})
-endif(NOT WITH_QT5)
+if (HAVE_DBUS)
+    list(APPEND qt_modules DBus)
+endif()
 
-add_library(mod_client STATIC ${SOURCES} ${MOC} ${HEADERS})
+add_library(mod_client STATIC ${SOURCES})
+qt_use_modules(mod_client Network Core Gui ${qt_modules})
 add_dependencies(mod_client mod_common)
-
-set_target_properties(mod_client PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
diff --git a/src/client/abstractui.cpp b/src/client/abstractui.cpp
deleted file mode 100644 (file)
index 0fc398f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#include "abstractui.h"
-
-// this file is needed to make automoc work
index 6040798..9440419 100644 (file)
@@ -114,7 +114,9 @@ void ClientAuthHandler::onSocketStateChanged(QAbstractSocket::SocketState socket
                 text = tr("Disconnected");
                 // Ensure the disconnected() signal is sent even if we haven't reached the Connected state yet.
                 // The baseclass implementation will make sure to only send the signal once.
-                onSocketDisconnected();
+                // However, we do want to prefer a potential socket error signal that may be on route already, so
+                // give this a chance to overtake us by spinning the loop...
+                QTimer::singleShot(0, this, SLOT(onSocketDisconnected()));
             }
             break;
         default:
@@ -173,7 +175,7 @@ void ClientAuthHandler::onSocketConnected()
         if (_account.useSsl())
             magic |= Protocol::Encryption;
 #endif
-        //magic |= Protocol::Compression; // not implemented yet
+        magic |= Protocol::Compression;
 
         stream << magic;
 
@@ -195,7 +197,7 @@ void ClientAuthHandler::onSocketConnected()
 
     qDebug() << "Legacy core detected, switching to compatibility mode";
 
-    RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(Protocol::LegacyProtocol, 0), this, socket(), this);
+    RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(Protocol::LegacyProtocol, 0), this, socket(), Compressor::NoCompression, this);
     // Only needed for the legacy peer, as all others check the protocol version before instantiation
     connect(peer, SIGNAL(protocolVersionMismatch(int,int)), SLOT(onProtocolVersionMismatch(int,int)));
 
@@ -222,7 +224,13 @@ void ClientAuthHandler::onReadyRead()
     quint16 protoFeatures = static_cast<quint16>(reply>>8 & 0xffff);
     _connectionFeatures = static_cast<quint8>(reply>>24);
 
-    RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(type, protoFeatures), this, socket(), this);
+    Compressor::CompressionLevel level;
+    if (_connectionFeatures & Protocol::Compression)
+        level = Compressor::BestCompression;
+    else
+        level = Compressor::NoCompression;
+
+    RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(type, protoFeatures), this, socket(), level, this);
     if (!peer) {
         qWarning() << "No valid protocol supported for this core!";
         emit errorPopup(tr("<b>Incompatible Quassel Core!</b><br>"
@@ -251,6 +259,8 @@ void ClientAuthHandler::onProtocolVersionMismatch(int actual, int expected)
 
 void ClientAuthHandler::setPeer(RemotePeer *peer)
 {
+    qDebug().nospace() << "Using " << qPrintable(peer->protocolName()) << "...";
+
     _peer = peer;
     connect(_peer, SIGNAL(transferProgress(int,int)), SIGNAL(transferProgress(int,int)));
 
index 6683d1d..f6f2fc9 100644 (file)
@@ -21,6 +21,7 @@
 #ifndef CLIENTAUTHHANDLER_H
 #define CLIENTAUTHHANDLER_H
 
+#include "compressor.h"
 #include "authhandler.h"
 #include "coreaccount.h"
 
index db18ef4..3650385 100644 (file)
@@ -378,8 +378,6 @@ void CoreConnection::connectToCurrentAccount()
         return;
     }
 
-    resetConnection(false);
-
     if (currentAccount().isInternal()) {
         if (Quassel::runMode() != Quassel::Monolithic) {
             qWarning() << "Cannot connect to internal core in client-only mode!";
index 10e7575..dc985bd 100644 (file)
@@ -153,7 +153,7 @@ void NetworkItem::attachNetwork(Network *network)
     connect(network, SIGNAL(connectedSet(bool)),
         this, SIGNAL(networkDataChanged()));
     connect(network, SIGNAL(destroyed()),
-        this, SIGNAL(networkDataChanged()));
+        this, SLOT(onNetworkDestroyed()));
 
     emit networkDataChanged();
 }
@@ -233,6 +233,14 @@ void NetworkItem::onBeginRemoveChilds(int start, int end)
 }
 
 
+void NetworkItem::onNetworkDestroyed()
+{
+    _network = 0;
+    emit networkDataChanged();
+    removeAllChilds();
+}
+
+
 /*****************************************
 *  Fancy Buffer Items
 *****************************************/
@@ -520,6 +528,7 @@ void QueryBufferItem::setIrcUser(IrcUser *ircUser)
     }
 
     if (ircUser) {
+        connect(ircUser, SIGNAL(destroyed(QObject*)), SLOT(removeIrcUser()));
         connect(ircUser, SIGNAL(quited()), this, SLOT(removeIrcUser()));
         connect(ircUser, SIGNAL(awaySet(bool)), this, SIGNAL(dataChanged()));
         connect(ircUser, SIGNAL(encryptedSet(bool)), this, SLOT(setEncrypted(bool)));
@@ -595,10 +604,15 @@ QString ChannelBufferItem::toolTip(int column) const
 
 void ChannelBufferItem::attachIrcChannel(IrcChannel *ircChannel)
 {
-    Q_ASSERT(!_ircChannel && ircChannel);
+    if (_ircChannel) {
+        qWarning() << Q_FUNC_INFO << "IrcChannel already set; cleanup failed!?";
+        disconnect(_ircChannel, 0, this, 0);
+    }
 
     _ircChannel = ircChannel;
 
+    connect(ircChannel, SIGNAL(destroyed(QObject*)),
+        this, SLOT(ircChannelDestroyed()));
     connect(ircChannel, SIGNAL(topicSet(QString)),
         this, SLOT(setTopic(QString)));
     connect(ircChannel, SIGNAL(encryptedSet(bool)),
@@ -633,6 +647,16 @@ void ChannelBufferItem::ircChannelParted()
 }
 
 
+void ChannelBufferItem::ircChannelDestroyed()
+{
+    if (_ircChannel) {
+        _ircChannel = 0;
+        emit dataChanged();
+        removeAllChilds();
+    }
+}
+
+
 void ChannelBufferItem::join(const QList<IrcUser *> &ircUsers)
 {
     addUsersToCategory(ircUsers);
index dff7fa5..8c4597d 100644 (file)
@@ -72,6 +72,7 @@ signals:
 
 private slots:
     void onBeginRemoveChilds(int start, int end);
+    void onNetworkDestroyed();
 
 private:
     NetworkId _networkId;
@@ -211,6 +212,7 @@ public slots:
 
 private slots:
     void ircChannelParted();
+    void ircChannelDestroyed();
 
 private:
     IrcChannel *_ircChannel;
index d45a4ad..6a44218 100644 (file)
@@ -1,7 +1,5 @@
 # Builds the common module
 
-setup_qt_variables(Core Network)
-
 set(SOURCES
     aliasmanager.cpp
     authhandler.cpp
@@ -12,7 +10,7 @@ set(SOURCES
     bufferviewconfig.cpp
     bufferviewmanager.cpp
     cliparser.cpp
-    coreinfo.cpp
+    compressor.cpp
     ctcpevent.cpp
     event.cpp
     eventmanager.cpp
@@ -40,62 +38,24 @@ set(SOURCES
     transfermanager.cpp
     util.cpp
 
+    protocols/datastream/datastreampeer.cpp
     protocols/legacy/legacypeer.cpp
-)
 
-set(MOC_HDRS
-    aliasmanager.h
-    authhandler.h
-    backlogmanager.h
-    basichandler.h
-    buffersyncer.h
-    bufferviewconfig.h
-    bufferviewmanager.h
+    # needed for automoc
     coreinfo.h
-    eventmanager.h
-    identity.h
-    ignorelistmanager.h
-    internalpeer.h
-    ircchannel.h
-    irclisthelper.h
-    ircuser.h
-    network.h
-    networkconfig.h
-    peer.h
-    peerfactory.h
-    remotepeer.h
-    settings.h
-    signalproxy.h
-    syncableobject.h
-    transfer.h
-    transfermanager.h
-
-    protocols/legacy/legacypeer.h
 )
 
-set(HEADERS ${MOC_HDRS}
-    abstractcliparser.h
-    bufferinfo.h
-    cliparser.h
-    ctcpevent.h
-    event.h
-    ircevent.h
-    messageevent.h
-    networkevent.h
-    logger.h
-    message.h
-    protocol.h
-    types.h
-    util.h)
 
 if (HAVE_QCA2)
     set(SOURCES ${SOURCES} keyevent.cpp)
-    set(HEADERS ${HEADERS} keyevent.h)
 endif(HAVE_QCA2)
 
+if (NOT ZLIB_FOUND)
+    set(SOURCES ${SOURCES} ../../3rdparty/miniz/miniz.c)
+endif()
+
 if(APPLE)
   set(SOURCES ${SOURCES} mac_utils.cpp)
-  set(HEADERS ${HEADERS} mac_utils.h)
 endif(APPLE)
 
 if(CMAKE_HOST_WIN32)
@@ -105,16 +65,8 @@ if(CMAKE_HOST_UNIX)
     set(SOURCES ${SOURCES} logbacktrace_unix.cpp)
 endif(CMAKE_HOST_UNIX)
 
-include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${QUASSEL_QT_INCLUDES})  # for version.inc and version.gen
-
-if(NOT WITH_QT5)
-  qt4_wrap_cpp(MOC ${MOC_HDRS})
-endif(NOT WITH_QT5)
-
-set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES version.gen)
-
-add_library(mod_common STATIC ${SOURCES} ${HEADERS} ${MOC})
-set_target_properties(mod_common PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
+add_library(mod_common STATIC ${SOURCES})
+qt_use_modules(mod_common Core Network)
 
 if(APPLE)
   target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
index c295b70..2b6f340 100644 (file)
@@ -29,6 +29,7 @@ BufferViewConfig::BufferViewConfig(int bufferViewId, QObject *parent)
     _addNewBuffersAutomatically(true),
     _sortAlphabetically(true),
     _hideInactiveBuffers(false),
+    _hideInactiveNetworks(false),
     _disableDecoration(false),
     _allowedBufferTypes(BufferInfo::StatusBuffer | BufferInfo::ChannelBuffer | BufferInfo::QueryBuffer | BufferInfo::GroupBuffer),
     _minimumActivity(0)
@@ -133,6 +134,16 @@ void BufferViewConfig::setHideInactiveBuffers(bool hideInactiveBuffers)
     emit configChanged();
 }
 
+void BufferViewConfig::setHideInactiveNetworks(bool hideInactiveNetworks)
+{
+    if (_hideInactiveNetworks == hideInactiveNetworks)
+        return;
+
+    _hideInactiveNetworks = hideInactiveNetworks;
+    SYNC(ARG(hideInactiveNetworks))
+    emit configChanged();
+}
+
 
 QVariantList BufferViewConfig::initBufferList() const
 {
index f380d5b..ecf92eb 100644 (file)
@@ -35,6 +35,7 @@ class BufferViewConfig : public SyncableObject
     Q_PROPERTY(bool addNewBuffersAutomatically READ addNewBuffersAutomatically WRITE setAddNewBuffersAutomatically)
     Q_PROPERTY(bool sortAlphabetically READ sortAlphabetically WRITE setSortAlphabetically)
     Q_PROPERTY(bool hideInactiveBuffers READ hideInactiveBuffers WRITE setHideInactiveBuffers)
+    Q_PROPERTY(bool hideInactiveNetworks READ hideInactiveNetworks WRITE setHideInactiveNetworks)
     Q_PROPERTY(bool disableDecoration READ disableDecoration WRITE setDisableDecoration)
     Q_PROPERTY(int allowedBufferTypes READ allowedBufferTypes WRITE setAllowedBufferTypes)
     Q_PROPERTY(int minimumActivity READ minimumActivity WRITE setMinimumActivity)
@@ -72,6 +73,9 @@ public slots:
     inline bool hideInactiveBuffers() const { return _hideInactiveBuffers; }
     void setHideInactiveBuffers(bool hideInactiveBuffers);
 
+    inline bool hideInactiveNetworks() const { return _hideInactiveNetworks; }
+    void setHideInactiveNetworks(bool hideInactiveNetworks);
+
     virtual inline void requestSetBufferViewName(const QString &bufferViewName) { REQUEST(ARG(bufferViewName)) }
 
     const QList<BufferId> &bufferList() const { return _buffers; }
@@ -127,6 +131,7 @@ private:
     bool _addNewBuffersAutomatically;
     bool _sortAlphabetically;
     bool _hideInactiveBuffers;
+    bool _hideInactiveNetworks;
     bool _disableDecoration;
     int _allowedBufferTypes;
     int _minimumActivity;
diff --git a/src/common/compressor.cpp b/src/common/compressor.cpp
new file mode 100644 (file)
index 0000000..f391a43
--- /dev/null
@@ -0,0 +1,273 @@
+/***************************************************************************
+ *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   devel@quassel-irc.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) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
+ ***************************************************************************/
+
+#include "compressor.h"
+
+#include <QTcpSocket>
+#include <QTimer>
+
+#ifdef HAVE_ZLIB
+#    include <zlib.h>
+#else
+#    define MINIZ_HEADER_FILE_ONLY
+#    include "../../3rdparty/miniz/miniz.c"
+#endif
+
+const int maxBufferSize = 64 * 1024 * 1024; // protect us from zip bombs
+const int ioBufferSize = 64 * 1024;         // chunk size for inflate/deflate; should not be too large as we preallocate that space!
+
+Compressor::Compressor(QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent)
+    : QObject(parent),
+    _socket(socket),
+    _level(level),
+    _inflater(0),
+    _deflater(0)
+{
+    connect(socket, SIGNAL(readyRead()), SLOT(readData()));
+
+    bool ok = true;
+    if (level != NoCompression)
+        ok = initStreams();
+
+    if (!ok) {
+        // something went wrong during initialization... but we can only emit an error after RemotePeer has connected its signal
+        QTimer::singleShot(0, this, SIGNAL(error()));
+        return;
+    }
+
+    // It's possible that more data has already arrived during the handshake, so readyRead() wouldn't be triggered.
+    // However, we want to give RemotePeer a chance to connect to our signals, so trigger this asynchronously.
+    if (socket->bytesAvailable())
+        QTimer::singleShot(0, this, SLOT(readData()));
+}
+
+
+Compressor::~Compressor()
+{
+    // release resources allocated by zlib
+    if (_inflater) {
+        inflateEnd(_inflater);
+        delete _inflater;
+    }
+    if (_deflater) {
+        deflateEnd(_deflater);
+        delete _deflater;
+    }
+}
+
+
+bool Compressor::initStreams()
+{
+    int zlevel;
+    switch(compressionLevel()) {
+        case BestCompression:
+            zlevel = 9;
+            break;
+        case BestSpeed:
+            zlevel = 1;
+            break;
+        default:
+            zlevel = Z_DEFAULT_COMPRESSION;
+    }
+
+    _inflater = new z_stream;
+    memset(_inflater, 0, sizeof(z_stream));
+    if (Z_OK != inflateInit(_inflater)) {
+        qWarning() << "Could not initialize the inflate stream!";
+        return false;
+    }
+
+    _deflater = new z_stream;
+    memset(_deflater, 0, sizeof(z_stream));
+    if (Z_OK != deflateInit(_deflater, zlevel)) {
+        qWarning() << "Could not intialize the deflate stream!";
+        return false;
+    }
+
+    _inputBuffer.reserve(ioBufferSize); // pre-allocate space
+    _outputBuffer.resize(ioBufferSize); // not a typo; we never change the size of this buffer anyway (we *do* for _inputBuffer!)
+
+    qDebug() << "Enabling compression...";
+
+    return true;
+}
+
+
+
+qint64 Compressor::bytesAvailable() const
+{
+    return _readBuffer.size();
+}
+
+
+qint64 Compressor::read(char *data, qint64 maxSize)
+{
+    if (maxSize <= 0)
+        maxSize = _readBuffer.size();
+
+    qint64 n = qMin(maxSize, (qint64)_readBuffer.size());
+    memcpy(data, _readBuffer.constData(), n);
+
+    // TODO: don't copy for every read
+    if (n == _readBuffer.size())
+        _readBuffer.clear();
+    else
+        _readBuffer = _readBuffer.mid(n);
+
+    // If there's still data left in the socket buffer, make sure to schedule a read
+    if (_socket->bytesAvailable())
+        QTimer::singleShot(0, this, SLOT(readData()));
+
+    return n;
+}
+
+
+// The usual usage pattern is to write a blocksize first, followed by the actual data.
+// By setting NoFlush, one can indicate that the write buffer should not immediately be
+// written, which should make things a bit more efficient.
+qint64 Compressor::write(const char *data, qint64 count, WriteBufferHint flush)
+{
+    int pos = _writeBuffer.size();
+    _writeBuffer.resize(pos + count);
+    memcpy(_writeBuffer.data() + pos, data, count);
+
+    if (flush != NoFlush)
+        writeData();
+
+    return count;
+}
+
+
+void Compressor::readData()
+{
+    // don't try to read more data if we're already closing
+    if (_socket->state() !=  QAbstractSocket::ConnectedState)
+        return;
+
+    if (!_socket->bytesAvailable() || _readBuffer.size() >= maxBufferSize)
+        return;
+
+    if (compressionLevel() == NoCompression) {
+        _readBuffer.append(_socket->read(maxBufferSize - _readBuffer.size()));
+        emit readyRead();
+        return;
+    }
+
+    // We let zlib directly append to the readBuffer, which means we pre-allocate extra space for ioBufferSize.
+    // Afterwards, we'll shrink the buffer appropriately. Since shrinking should not reallocate, the readBuffer's
+    // capacity should over time adapt to the largest message sizes we encounter. However, this is not a bad thing
+    // considering that otherwise (using an intermediate buffer) we'd copy around data for every single message.
+    // TODO: Benchmark if it would still make sense to squeeze the buffer from time to time (e.g. after initial sync)!
+
+    while (_socket->bytesAvailable() && _readBuffer.size() + ioBufferSize < maxBufferSize && _inputBuffer.size() < ioBufferSize) {
+        _readBuffer.resize(_readBuffer.size() + ioBufferSize);
+        _inputBuffer.append(_socket->read(ioBufferSize - _inputBuffer.size()));
+
+        _inflater->next_in = reinterpret_cast<unsigned char *>(_inputBuffer.data());
+        _inflater->avail_in = _inputBuffer.size();
+        _inflater->next_out = reinterpret_cast<unsigned char *>(_readBuffer.data() + _readBuffer.size() - ioBufferSize);
+        _inflater->avail_out = ioBufferSize;
+
+        const unsigned char *orig_out = _inflater->next_out; // so we see if we have actually produced any output
+
+        int status = inflate(_inflater, Z_SYNC_FLUSH); // get as much data as possible
+
+        // adjust input and output buffers
+        _readBuffer.resize(_inflater->next_out - reinterpret_cast<unsigned char *>(_readBuffer.data()));
+        if (_inflater->avail_in > 0)
+            memmove(_inputBuffer.data(), _inflater->next_in, _inflater->avail_in);
+        _inputBuffer.resize(_inflater->avail_in);
+
+        if (_inflater->next_out != orig_out)
+            emit readyRead();
+
+        switch(status) {
+            case Z_NEED_DICT:
+            case Z_DATA_ERROR:
+            case Z_MEM_ERROR:
+            case Z_STREAM_ERROR:
+                qWarning() << "Error while decompressing stream:" << status;
+                emit error(StreamError);
+                return;
+            case Z_BUF_ERROR:
+                // means that we need more input to continue, so this is not an actual error
+                return;
+            case Z_STREAM_END:
+                qWarning() << "Reached end of zlib stream!"; // this should really never happen
+                return;
+            default:
+                // just try to get more out of the stream
+                break;
+        }
+    }
+    //qDebug() << "inflate in:" << _inflater->total_in << "out:" << _inflater->total_out << "ratio:" << (double)_inflater->total_in/_inflater->total_out;
+}
+
+
+void Compressor::writeData()
+{
+    if (compressionLevel() == NoCompression) {
+        _socket->write(_writeBuffer);
+        _writeBuffer.clear();
+        return;
+    }
+
+    _deflater->next_in = reinterpret_cast<unsigned char *>(_writeBuffer.data());
+    _deflater->avail_in = _writeBuffer.size();
+
+    int status;
+    do {
+        _deflater->next_out = reinterpret_cast<unsigned char *>(_outputBuffer.data());
+        _deflater->avail_out = ioBufferSize;
+        status = deflate(_deflater, Z_PARTIAL_FLUSH);
+        if (status != Z_OK && status != Z_BUF_ERROR) {
+            qWarning() << "Error while compressing stream:" << status;
+            emit error(StreamError);
+            return;
+        }
+
+        if (_deflater->avail_out == static_cast<unsigned int>(ioBufferSize))
+            continue; // nothing to write here
+
+        if (!_socket->write(_outputBuffer.constData(), ioBufferSize - _deflater->avail_out)) {
+            qWarning() << "Error while writing to socket:" << _socket->errorString();
+            emit error(DeviceError);
+            return;
+        }
+    } while (_deflater->avail_out == 0); // the output buffer being full is the only reason we should have to loop here!
+
+    if (_deflater->avail_in > 0) {
+        qWarning() << "Oops, something weird happened: data still remaining in write buffer!";
+        emit error(StreamError);
+    }
+
+    _writeBuffer.resize(0);
+
+    //qDebug() << "deflate in:" << _deflater->total_in << "out:" << _deflater->total_out << "ratio:" << (double)_deflater->total_out/_deflater->total_in;
+}
+
+
+void Compressor::flush()
+{
+    if (compressionLevel() == NoCompression && _socket->state() == QAbstractSocket::ConnectedState)
+        _socket->flush();
+
+    // FIXME: missing impl for enabled compression; but then we're not using this method yet
+}
similarity index 52%
rename from src/client/clientcoreinfo.cpp
rename to src/common/compressor.h
index ebd1e07..d910322 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#include "clientcoreinfo.h"
+#ifndef COMPRESSOR_H
+#define COMPRESSOR_H
 
-// this file is needed to make automoc work
+#include <QObject>
+
+class QTcpSocket;
+
+#ifdef HAVE_ZLIB
+    typedef struct z_stream_s *z_streamp;
+#else
+    typedef struct mz_stream_s *z_streamp;
+#endif
+
+class Compressor : public QObject
+{
+    Q_OBJECT
+
+public:
+    enum CompressionLevel {
+        NoCompression,
+        DefaultCompression,
+        BestCompression,
+        BestSpeed
+    };
+
+    enum Error {
+        NoError,
+        StreamError,
+        DeviceError
+    };
+
+    enum WriteBufferHint {
+        NoFlush,
+        Flush
+    };
+
+    Compressor(QTcpSocket *socket, CompressionLevel level, QObject *parent = 0);
+    ~Compressor();
+
+    CompressionLevel compressionLevel() const { return _level; }
+
+    qint64 bytesAvailable() const;
+
+    qint64 read(char *data, qint64 maxSize);
+    qint64 write(const char *data, qint64 count, WriteBufferHint flush = Flush);
+
+    void flush();
+
+signals:
+    void readyRead();
+    void error(Compressor::Error errorCode = StreamError);
+
+private slots:
+    void readData();
+
+private:
+    bool initStreams();
+    void writeData();
+
+private:
+    QTcpSocket *_socket;
+    CompressionLevel _level;
+
+    QByteArray _readBuffer;
+    QByteArray _writeBuffer;
+
+    QByteArray _inputBuffer;
+    QByteArray _outputBuffer;
+
+    z_streamp _inflater;
+    z_streamp _deflater;
+};
+
+#endif
diff --git a/src/common/coreinfo.cpp b/src/common/coreinfo.cpp
deleted file mode 100644 (file)
index a2d4df8..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#include "coreinfo.h"
-
-// this file is needed to make automoc work
diff --git a/src/common/genversion.cpp b/src/common/genversion.cpp
deleted file mode 100644 (file)
index 405d391..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-/** This is called at compile time and generates a suitable version.gen.
- *  usage: genversion git_root target_file
- */
-
-#include <QDebug>
-#include <QProcess>
-#include <QString>
-#include <QStringList>
-#include <QRegExp>
-#include <QFile>
-#include <QCoreApplication>
-
-int main(int argc, char **argv)
-{
-    if (argc < 3) {
-        qFatal("Usage: ./genversion <git_root> <target_file>");
-        return 255;
-    }
-
-    QCoreApplication app(argc, argv);
-
-    QString gitroot = app.arguments()[1];
-    QString target = app.arguments()[2];
-    QString basever, protover, clientneeds, coreneeds, descrver, dirty;
-    QString committish, commitdate;
-
-    // check Git for information if present
-    if (QFile::exists(gitroot + "/.git")) {
-        // try to execute git-describe to get a version string
-        QProcess git;
-        git.setWorkingDirectory(gitroot);
-    #ifdef Q_OS_WIN
-        git.start("cmd.exe", QStringList() << "/C" << "git" << "describe" << "--long");
-    #else
-        git.start("git", QStringList() << "describe" << "--long");
-    #endif
-        if (git.waitForFinished(10000)) {
-            QString descr = git.readAllStandardOutput().trimmed();
-            if (!descr.isEmpty() && !descr.contains("fatal")) {
-                // seems we have a valid git describe string
-                descrver = descr;
-                // check if the workdir is dirty
-        #ifdef Q_OS_WIN
-                git.start("cmd.exe", QStringList() << "/C" << "git" << "diff-index" << "--name-only" << "HEAD");
-        #else
-                git.start("git", QStringList() << "diff-index" << "--name-only" << "HEAD");
-        #endif
-                if (git.waitForFinished(10000)) {
-                    if (!git.readAllStandardOutput().isEmpty()) dirty = "*";
-                }
-                // get a full committish
-        #ifdef Q_OS_WIN
-                git.start("cmd.exe", QStringList() << "/C" << "git" << "rev-parse" << "HEAD");
-        #else
-                git.start("git", QStringList() << "rev-parse" << "HEAD");
-        #endif
-                if (git.waitForFinished(10000)) {
-                    committish = git.readAllStandardOutput().trimmed();
-                }
-                // Now we do some replacement magic...
-                //QRegExp rxCheckTag("(.*)-0-g[0-9a-f]+\n$");
-                //QRegExp rxGittify("(.*)-(\\d+)-g([0-9a-f]+)\n$");
-                //gitversion.replace(rxCheckTag, QString("\\1%1").arg(dirty));
-                //gitversion.replace(rxGittify, QString("\\1:git-\\3+\\2%1").arg(dirty));
-            }
-        }
-    }
-
-    // parse version.inc
-    QFile verfile(gitroot + "/version.inc");
-    if (verfile.open(QIODevice::ReadOnly | QIODevice::Text)) {
-        QString ver = verfile.readAll();
-
-        QRegExp rxBasever("baseVersion\\s*=\\s*\"(.*)\";");
-        if (rxBasever.indexIn(ver) >= 0)
-            basever = rxBasever.cap(1);
-
-        QRegExp rxProtover("protocolVersion\\s*=\\s*(\\d+)");
-        if (rxProtover.indexIn(ver) >= 0)
-            protover = rxProtover.cap(1);
-
-        QRegExp rxClientneeds("clientNeedsProtocol\\s*=\\s*(\\d+)");
-        if (rxClientneeds.indexIn(ver) >= 0)
-            clientneeds = rxClientneeds.cap(1);
-
-        QRegExp rxCoreneeds("coreNeedsProtocol\\s*=\\s*(\\d+)");
-        if (rxCoreneeds.indexIn(ver) >= 0)
-            coreneeds = rxCoreneeds.cap(1);
-
-        if (committish.isEmpty()) {
-            QRegExp rxCommit("distCommittish\\s*=\\s*([0-9a-f]+)");
-            if (rxCommit.indexIn(ver) >= 0) committish = rxCommit.cap(1);
-        }
-
-        QRegExp rxTimestamp("distCommitDate\\s*=\\s*([0-9]+)");
-        if (rxTimestamp.indexIn(ver) >= 0) commitdate = rxTimestamp.cap(1);
-        verfile.close();
-    }
-
-    // generate the contents for version.gen
-    QByteArray contents = QString("QString buildinfo = \"%1,%2,%3,%4,%5,%6,%7,%8\";\n")
-                          .arg(basever, descrver, dirty, committish, commitdate, protover, clientneeds, coreneeds)
-                          .toAscii();
-
-    QFile gen(target);
-    if (!gen.open(QIODevice::ReadWrite | QIODevice::Text)) {
-        qFatal("%s", qPrintable(QString("Could not write %1!").arg(target)));
-        return EXIT_FAILURE;
-    }
-    QByteArray oldContents = gen.readAll();
-    if (oldContents != contents) { // only touch the file if something changed
-        gen.seek(0);
-        gen.resize(0);
-        gen.write(contents);
-        gen.waitForBytesWritten(10000);
-    }
-    gen.close();
-
-    return EXIT_SUCCESS;
-}
index d922608..e0757b1 100644 (file)
@@ -35,25 +35,25 @@ class Identity : public SyncableObject
     SYNCABLE_OBJECT
     Q_OBJECT
 
-    Q_PROPERTY(IdentityId identityId READ id WRITE setId STORED false)
-    Q_PROPERTY(QString identityName READ identityName WRITE setIdentityName STORED false)
-    Q_PROPERTY(QString realName READ realName WRITE setRealName STORED false)
-    Q_PROPERTY(QStringList nicks READ nicks WRITE setNicks STORED false)
-    Q_PROPERTY(QString awayNick READ awayNick WRITE setAwayNick STORED false)
-    Q_PROPERTY(bool awayNickEnabled READ awayNickEnabled WRITE setAwayNickEnabled STORED false)
-    Q_PROPERTY(QString awayReason READ awayReason WRITE setAwayReason STORED false)
-    Q_PROPERTY(bool awayReasonEnabled READ awayReasonEnabled WRITE setAwayReasonEnabled STORED false)
-    Q_PROPERTY(bool autoAwayEnabled READ autoAwayEnabled WRITE setAutoAwayEnabled STORED false)
-    Q_PROPERTY(int autoAwayTime READ autoAwayTime WRITE setAutoAwayTime STORED false)
-    Q_PROPERTY(QString autoAwayReason READ autoAwayReason WRITE setAutoAwayReason STORED false)
-    Q_PROPERTY(bool autoAwayReasonEnabled READ autoAwayReasonEnabled WRITE setAutoAwayReasonEnabled STORED false)
-    Q_PROPERTY(bool detachAwayEnabled READ detachAwayEnabled WRITE setDetachAwayEnabled STORED false)
-    Q_PROPERTY(QString detachAwayReason READ detachAwayReason WRITE setDetachAwayReason STORED false)
-    Q_PROPERTY(bool detachAwayReasonEnabled READ detachAwayReasonEnabled WRITE setDetachAwayReasonEnabled STORED false)
-    Q_PROPERTY(QString ident READ ident WRITE setIdent STORED false)
-    Q_PROPERTY(QString kickReason READ kickReason WRITE setKickReason STORED false)
-    Q_PROPERTY(QString partReason READ partReason WRITE setPartReason STORED false)
-    Q_PROPERTY(QString quitReason READ quitReason WRITE setQuitReason STORED false)
+    Q_PROPERTY(IdentityId identityId READ id WRITE setId)
+    Q_PROPERTY(QString identityName READ identityName WRITE setIdentityName)
+    Q_PROPERTY(QString realName READ realName WRITE setRealName)
+    Q_PROPERTY(QStringList nicks READ nicks WRITE setNicks)
+    Q_PROPERTY(QString awayNick READ awayNick WRITE setAwayNick)
+    Q_PROPERTY(bool awayNickEnabled READ awayNickEnabled WRITE setAwayNickEnabled)
+    Q_PROPERTY(QString awayReason READ awayReason WRITE setAwayReason)
+    Q_PROPERTY(bool awayReasonEnabled READ awayReasonEnabled WRITE setAwayReasonEnabled)
+    Q_PROPERTY(bool autoAwayEnabled READ autoAwayEnabled WRITE setAutoAwayEnabled)
+    Q_PROPERTY(int autoAwayTime READ autoAwayTime WRITE setAutoAwayTime)
+    Q_PROPERTY(QString autoAwayReason READ autoAwayReason WRITE setAutoAwayReason)
+    Q_PROPERTY(bool autoAwayReasonEnabled READ autoAwayReasonEnabled WRITE setAutoAwayReasonEnabled)
+    Q_PROPERTY(bool detachAwayEnabled READ detachAwayEnabled WRITE setDetachAwayEnabled)
+    Q_PROPERTY(QString detachAwayReason READ detachAwayReason WRITE setDetachAwayReason)
+    Q_PROPERTY(bool detachAwayReasonEnabled READ detachAwayReasonEnabled WRITE setDetachAwayReasonEnabled)
+    Q_PROPERTY(QString ident READ ident WRITE setIdent)
+    Q_PROPERTY(QString kickReason READ kickReason WRITE setKickReason)
+    Q_PROPERTY(QString partReason READ partReason WRITE setPartReason)
+    Q_PROPERTY(QString quitReason READ quitReason WRITE setQuitReason)
 
 public :
         Identity(IdentityId id = 0, QObject *parent = 0);
@@ -169,8 +169,8 @@ class CertManager : public SyncableObject
 {
     SYNCABLE_OBJECT
     Q_OBJECT
-    Q_PROPERTY(QByteArray sslKey READ sslKeyPem WRITE setSslKey STORED false)
-    Q_PROPERTY(QByteArray sslCert READ sslCertPem WRITE setSslCert STORED false)
+    Q_PROPERTY(QByteArray sslKey READ sslKeyPem WRITE setSslKey)
+    Q_PROPERTY(QByteArray sslCert READ sslCertPem WRITE setSslCert)
 
 public :
         CertManager(IdentityId id, QObject *parent = 0) : SyncableObject(QString::number(id.toInt()), parent) {}
index d9fe9e9..693ed9c 100644 (file)
@@ -37,13 +37,13 @@ class IrcChannel : public SyncableObject
     SYNCABLE_OBJECT
     Q_OBJECT
 
-    Q_PROPERTY(QString name READ name STORED false)
-    Q_PROPERTY(QString topic READ topic WRITE setTopic STORED false)
-    Q_PROPERTY(QString password READ password WRITE setPassword STORED false)
-    Q_PROPERTY(bool encrypted READ encrypted WRITE setEncrypted STORED false)
+    Q_PROPERTY(QString name READ name)
+    Q_PROPERTY(QString topic READ topic WRITE setTopic)
+    Q_PROPERTY(QString password READ password WRITE setPassword)
+    Q_PROPERTY(bool encrypted READ encrypted WRITE setEncrypted)
 
 public :
-        IrcChannel(const QString &channelname, Network *network);
+    IrcChannel(const QString &channelname, Network *network);
     ~IrcChannel();
 
     bool isKnownUser(IrcUser *ircuser) const;
index b092459..3424a63 100644 (file)
@@ -39,22 +39,22 @@ class IrcUser : public SyncableObject
     SYNCABLE_OBJECT
     Q_OBJECT
 
-    Q_PROPERTY(QString user READ user WRITE setUser STORED false)
-    Q_PROPERTY(QString host READ host WRITE setHost STORED false)
-    Q_PROPERTY(QString nick READ nick WRITE setNick STORED false)
-    Q_PROPERTY(QString realName READ realName WRITE setRealName STORED false)
-    Q_PROPERTY(bool away READ isAway WRITE setAway STORED false)
-    Q_PROPERTY(QString awayMessage READ awayMessage WRITE setAwayMessage STORED false)
-    Q_PROPERTY(QDateTime idleTime READ idleTime WRITE setIdleTime STORED false)
-    Q_PROPERTY(QDateTime loginTime READ loginTime WRITE setLoginTime STORED false)
-    Q_PROPERTY(QString server READ server WRITE setServer STORED false)
-    Q_PROPERTY(QString ircOperator READ ircOperator WRITE setIrcOperator STORED false)
-    Q_PROPERTY(int lastAwayMessage READ lastAwayMessage WRITE setLastAwayMessage STORED false)
-    Q_PROPERTY(QString whoisServiceReply READ whoisServiceReply WRITE setWhoisServiceReply STORED false)
-    Q_PROPERTY(QString suserHost READ suserHost WRITE setSuserHost STORED false)
-    Q_PROPERTY(bool encrypted READ encrypted WRITE setEncrypted STORED false)
-
-    Q_PROPERTY(QStringList channels READ channels STORED false)
+    Q_PROPERTY(QString user READ user WRITE setUser)
+    Q_PROPERTY(QString host READ host WRITE setHost)
+    Q_PROPERTY(QString nick READ nick WRITE setNick)
+    Q_PROPERTY(QString realName READ realName WRITE setRealName)
+    Q_PROPERTY(bool away READ isAway WRITE setAway)
+    Q_PROPERTY(QString awayMessage READ awayMessage WRITE setAwayMessage)
+    Q_PROPERTY(QDateTime idleTime READ idleTime WRITE setIdleTime)
+    Q_PROPERTY(QDateTime loginTime READ loginTime WRITE setLoginTime)
+    Q_PROPERTY(QString server READ server WRITE setServer)
+    Q_PROPERTY(QString ircOperator READ ircOperator WRITE setIrcOperator)
+    Q_PROPERTY(int lastAwayMessage READ lastAwayMessage WRITE setLastAwayMessage)
+    Q_PROPERTY(QString whoisServiceReply READ whoisServiceReply WRITE setWhoisServiceReply)
+    Q_PROPERTY(QString suserHost READ suserHost WRITE setSuserHost)
+    Q_PROPERTY(bool encrypted READ encrypted WRITE setEncrypted)
+
+    Q_PROPERTY(QStringList channels READ channels)
     Q_PROPERTY(QString userModes READ userModes WRITE setUserModes)
 
 public :
index d6d8d71..cc9cbf6 100644 (file)
@@ -54,7 +54,7 @@ void Quassel::logBacktrace(const QString &filename)
         //       void *dli_saddr;           /* Exact value of nearest symbol.  */
         //     } Dl_info;
 
-    #if __LP64__
+    #ifdef __LP64__
         int addrSize = 16;
     #else
         int addrSize = 8;
index 2036194..149167c 100644 (file)
@@ -52,10 +52,7 @@ Q_IMPORT_PLUGIN(qgif)
 
 int main(int argc, char **argv)
 {
-    // Setup build information and version string
-  # include "version.gen"
-    buildinfo.append(QString(",%1,%2").arg(__DATE__, __TIME__));
-    Quassel::setupBuildInfo(buildinfo);
+    Quassel::setupBuildInfo();
     QCoreApplication::setApplicationName(Quassel::buildInfo().applicationName);
     QCoreApplication::setOrganizationName(Quassel::buildInfo().organizationName);
     QCoreApplication::setOrganizationDomain(Quassel::buildInfo().organizationDomain);
index 3fc7dff..09c33ff 100644 (file)
@@ -234,8 +234,12 @@ IrcUser *Network::newIrcUser(const QString &hostmask, const QVariantMap &initDat
 
         _ircUsers[nick] = ircuser;
 
-        SYNC_OTHER(addIrcUser, ARG(hostmask))
-        // emit ircUserAdded(hostmask);
+        // This method will be called with a nick instead of hostmask by setInitIrcUsersAndChannels().
+        // Not a problem because initData contains all we need; however, making sure here to get the real
+        // hostmask out of the IrcUser afterwards.
+        QString mask = ircuser->hostmask();
+        SYNC_OTHER(addIrcUser, ARG(mask));
+        // emit ircUserAdded(mask);
         emit ircUserAdded(ircuser);
     }
 
@@ -284,20 +288,6 @@ void Network::removeChansAndUsers()
     QList<IrcChannel *> channels = ircChannels();
     _ircChannels.clear();
 
-    foreach(IrcChannel *channel, channels) {
-        proxy()->detachObject(channel);
-        disconnect(channel, 0, this, 0);
-    }
-    foreach(IrcUser *user, users) {
-        proxy()->detachObject(user);
-        disconnect(user, 0, this, 0);
-    }
-
-    // the second loop is needed because quit can have sideffects
-    foreach(IrcUser *user, users) {
-        user->quit();
-    }
-
     qDeleteAll(users);
     qDeleteAll(channels);
 }
@@ -774,27 +764,54 @@ QVariantMap Network::initSupports() const
 }
 
 
+// There's potentially a lot of users and channels, so it makes sense to optimize the format of this.
+// Rather than sending a thousand maps with identical keys, we convert this into one map containing lists
+// where each list index corresponds to a particular IrcUser. This saves sending the key names a thousand times.
+// Benchmarks have shown space savings of around 56%, resulting in saving several MBs worth of data on sync
+// (without compression) with a decent amount of IrcUsers.
 QVariantMap Network::initIrcUsersAndChannels() const
 {
     QVariantMap usersAndChannels;
-    QVariantMap users;
-    QVariantMap channels;
-
-    QHash<QString, IrcUser *>::const_iterator userIter = _ircUsers.constBegin();
-    QHash<QString, IrcUser *>::const_iterator userIterEnd = _ircUsers.constEnd();
-    while (userIter != userIterEnd) {
-        users[userIter.value()->hostmask()] = userIter.value()->toVariantMap();
-        userIter++;
+
+    if (_ircUsers.count()) {
+        QHash<QString, QVariantList> users;
+        QHash<QString, IrcUser *>::const_iterator it = _ircUsers.begin();
+        QHash<QString, IrcUser *>::const_iterator end = _ircUsers.end();
+        while (it != end) {
+            const QVariantMap &map = it.value()->toVariantMap();
+            QVariantMap::const_iterator mapiter = map.begin();
+            while (mapiter != map.end()) {
+                users[mapiter.key()] << mapiter.value();
+                ++mapiter;
+            }
+            ++it;
+        }
+        // Can't have a container with a value type != QVariant in a QVariant :(
+        // However, working directly on a QVariantMap is awkward for appending, thus the detour via the hash above.
+        QVariantMap userMap;
+        foreach(const QString &key, users.keys())
+            userMap[key] = users[key];
+        usersAndChannels["Users"] = userMap;
     }
-    usersAndChannels["users"] = users;
 
-    QHash<QString, IrcChannel *>::const_iterator channelIter = _ircChannels.constBegin();
-    QHash<QString, IrcChannel *>::const_iterator channelIterEnd = _ircChannels.constEnd();
-    while (channelIter != channelIterEnd) {
-        channels[channelIter.value()->name()] = channelIter.value()->toVariantMap();
-        channelIter++;
+    if (_ircChannels.count()) {
+        QHash<QString, QVariantList> channels;
+        QHash<QString, IrcChannel *>::const_iterator it = _ircChannels.begin();
+        QHash<QString, IrcChannel *>::const_iterator end = _ircChannels.end();
+        while (it != end) {
+            const QVariantMap &map = it.value()->toVariantMap();
+            QVariantMap::const_iterator mapiter = map.begin();
+            while (mapiter != map.end()) {
+                channels[mapiter.key()] << mapiter.value();
+                ++mapiter;
+            }
+            ++it;
+        }
+        QVariantMap channelMap;
+        foreach(const QString &key, channels.keys())
+            channelMap[key] = channels[key];
+        usersAndChannels["Channels"] = channelMap;
     }
-    usersAndChannels["channels"] = channels;
 
     return usersAndChannels;
 }
@@ -804,24 +821,49 @@ void Network::initSetIrcUsersAndChannels(const QVariantMap &usersAndChannels)
 {
     Q_ASSERT(proxy());
     if (isInitialized()) {
-        qWarning() << "Network" << networkId() << "received init data for users and channels allthough there allready are known users or channels!";
+        qWarning() << "Network" << networkId() << "received init data for users and channels although there already are known users or channels!";
         return;
     }
 
-    QVariantMap users = usersAndChannels.value("users").toMap();
-    QVariantMap::const_iterator userIter = users.constBegin();
-    QVariantMap::const_iterator userIterEnd = users.constEnd();
-    while (userIter != userIterEnd) {
-        newIrcUser(userIter.key(), userIter.value().toMap());
-        userIter++;
+    // toMap() and toList() are cheap, so we can avoid copying to lists...
+    // However, we really have to make sure to never accidentally detach from the shared data!
+
+    const QVariantMap &users = usersAndChannels["Users"].toMap();
+
+    // sanity check
+    int count = users["nick"].toList().count();
+    foreach(const QString &key, users.keys()) {
+        if (users[key].toList().count() != count) {
+            qWarning() << "Received invalid usersAndChannels init data, sizes of attribute lists don't match!";
+            return;
+        }
+    }
+
+    // now create the individual IrcUsers
+    for(int i = 0; i < count; i++) {
+        QVariantMap map;
+        foreach(const QString &key, users.keys())
+            map[key] = users[key].toList().at(i);
+        newIrcUser(map["nick"].toString(), map); // newIrcUser() properly handles the hostmask being just the nick
     }
 
-    QVariantMap channels = usersAndChannels.value("channels").toMap();
-    QVariantMap::const_iterator channelIter = channels.constBegin();
-    QVariantMap::const_iterator channelIterEnd = channels.constEnd();
-    while (channelIter != channelIterEnd) {
-        newIrcChannel(channelIter.key(), channelIter.value().toMap());
-        channelIter++;
+    // same thing for IrcChannels
+    const QVariantMap &channels = usersAndChannels["Channels"].toMap();
+
+    // sanity check
+    count = channels["name"].toList().count();
+    foreach(const QString &key, channels.keys()) {
+        if (channels[key].toList().count() != count) {
+            qWarning() << "Received invalid usersAndChannels init data, sizes of attribute lists don't match!";
+            return;
+        }
+    }
+    // now create the individual IrcChannels
+    for(int i = 0; i < count; i++) {
+        QVariantMap map;
+        foreach(const QString &key, channels.keys())
+            map[key] = channels[key].toList().at(i);
+        newIrcChannel(map["name"].toString(), map);
     }
 }
 
index 4be02a3..01e6158 100644 (file)
@@ -50,30 +50,30 @@ class Network : public SyncableObject
     Q_OBJECT
     Q_ENUMS(ConnectionState)
 
-    Q_PROPERTY(QString networkName READ networkName WRITE setNetworkName STORED false)
-    Q_PROPERTY(QString currentServer READ currentServer WRITE setCurrentServer STORED false)
-    Q_PROPERTY(QString myNick READ myNick WRITE setMyNick STORED false)
-    Q_PROPERTY(int latency READ latency WRITE setLatency STORED false)
-    Q_PROPERTY(QByteArray codecForServer READ codecForServer WRITE setCodecForServer STORED false)
-    Q_PROPERTY(QByteArray codecForEncoding READ codecForEncoding WRITE setCodecForEncoding STORED false)
-    Q_PROPERTY(QByteArray codecForDecoding READ codecForDecoding WRITE setCodecForDecoding STORED false)
-    Q_PROPERTY(IdentityId identityId READ identity WRITE setIdentity STORED false)
-    Q_PROPERTY(bool isConnected READ isConnected WRITE setConnected STORED false)
-    //Q_PROPERTY(Network::ConnectionState connectionState READ connectionState WRITE setConnectionState STORED false)
-    Q_PROPERTY(int connectionState READ connectionState WRITE setConnectionState STORED false)
-    Q_PROPERTY(bool useRandomServer READ useRandomServer WRITE setUseRandomServer STORED false)
-    Q_PROPERTY(QStringList perform READ perform WRITE setPerform STORED false)
-    Q_PROPERTY(bool useAutoIdentify READ useAutoIdentify WRITE setUseAutoIdentify STORED false)
-    Q_PROPERTY(QString autoIdentifyService READ autoIdentifyService WRITE setAutoIdentifyService STORED false)
-    Q_PROPERTY(QString autoIdentifyPassword READ autoIdentifyPassword WRITE setAutoIdentifyPassword STORED false)
-    Q_PROPERTY(bool useSasl READ useSasl WRITE setUseSasl STORED false)
-    Q_PROPERTY(QString saslAccount READ saslAccount WRITE setSaslAccount STORED false)
-    Q_PROPERTY(QString saslPassword READ saslPassword WRITE setSaslPassword STORED false)
-    Q_PROPERTY(bool useAutoReconnect READ useAutoReconnect WRITE setUseAutoReconnect STORED false)
-    Q_PROPERTY(quint32 autoReconnectInterval READ autoReconnectInterval WRITE setAutoReconnectInterval STORED false)
-    Q_PROPERTY(quint16 autoReconnectRetries READ autoReconnectRetries WRITE setAutoReconnectRetries STORED false)
-    Q_PROPERTY(bool unlimitedReconnectRetries READ unlimitedReconnectRetries WRITE setUnlimitedReconnectRetries STORED false)
-    Q_PROPERTY(bool rejoinChannels READ rejoinChannels WRITE setRejoinChannels STORED false)
+    Q_PROPERTY(QString networkName READ networkName WRITE setNetworkName)
+    Q_PROPERTY(QString currentServer READ currentServer WRITE setCurrentServer)
+    Q_PROPERTY(QString myNick READ myNick WRITE setMyNick)
+    Q_PROPERTY(int latency READ latency WRITE setLatency)
+    Q_PROPERTY(QByteArray codecForServer READ codecForServer WRITE setCodecForServer)
+    Q_PROPERTY(QByteArray codecForEncoding READ codecForEncoding WRITE setCodecForEncoding)
+    Q_PROPERTY(QByteArray codecForDecoding READ codecForDecoding WRITE setCodecForDecoding)
+    Q_PROPERTY(IdentityId identityId READ identity WRITE setIdentity)
+    Q_PROPERTY(bool isConnected READ isConnected WRITE setConnected)
+    //Q_PROPERTY(Network::ConnectionState connectionState READ connectionState WRITE setConnectionState)
+    Q_PROPERTY(int connectionState READ connectionState WRITE setConnectionState)
+    Q_PROPERTY(bool useRandomServer READ useRandomServer WRITE setUseRandomServer)
+    Q_PROPERTY(QStringList perform READ perform WRITE setPerform)
+    Q_PROPERTY(bool useAutoIdentify READ useAutoIdentify WRITE setUseAutoIdentify)
+    Q_PROPERTY(QString autoIdentifyService READ autoIdentifyService WRITE setAutoIdentifyService)
+    Q_PROPERTY(QString autoIdentifyPassword READ autoIdentifyPassword WRITE setAutoIdentifyPassword)
+    Q_PROPERTY(bool useSasl READ useSasl WRITE setUseSasl)
+    Q_PROPERTY(QString saslAccount READ saslAccount WRITE setSaslAccount)
+    Q_PROPERTY(QString saslPassword READ saslPassword WRITE setSaslPassword)
+    Q_PROPERTY(bool useAutoReconnect READ useAutoReconnect WRITE setUseAutoReconnect)
+    Q_PROPERTY(quint32 autoReconnectInterval READ autoReconnectInterval WRITE setAutoReconnectInterval)
+    Q_PROPERTY(quint16 autoReconnectRetries READ autoReconnectRetries WRITE setAutoReconnectRetries)
+    Q_PROPERTY(bool unlimitedReconnectRetries READ unlimitedReconnectRetries WRITE setUnlimitedReconnectRetries)
+    Q_PROPERTY(bool rejoinChannels READ rejoinChannels WRITE setRejoinChannels)
 
 public :
         enum ConnectionState {
index 32ea16a..2364b71 100644 (file)
 
 #include "peerfactory.h"
 
+#include "protocols/datastream/datastreampeer.h"
 #include "protocols/legacy/legacypeer.h"
 
 
 PeerFactory::ProtoList PeerFactory::supportedProtocols()
 {
     ProtoList result;
+    result.append(ProtoDescriptor(Protocol::DataStreamProtocol, DataStreamPeer::supportedFeatures()));
     result.append(ProtoDescriptor(Protocol::LegacyProtocol, 0));
     return result;
 }
 
 
-RemotePeer *PeerFactory::createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent)
+RemotePeer *PeerFactory::createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent)
 {
-    return createPeer(ProtoList() << protocol, authHandler, socket, parent);
+    return createPeer(ProtoList() << protocol, authHandler, socket, level, parent);
 }
 
 
-RemotePeer *PeerFactory::createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent)
+RemotePeer *PeerFactory::createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent)
 {
     foreach(const ProtoDescriptor &protodesc, protocols) {
         Protocol::Type proto = protodesc.first;
         quint16 features = protodesc.second;
         switch(proto) {
             case Protocol::LegacyProtocol:
-                return new LegacyPeer(authHandler, socket, parent);
+                return new LegacyPeer(authHandler, socket, level, parent);
+            case Protocol::DataStreamProtocol:
+                if (DataStreamPeer::acceptsFeatures(features))
+                    return new DataStreamPeer(authHandler, socket, features, level, parent);
+                break;
             default:
                 break;
         }
index 79a0c35..6b1bdf3 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <QPair>
 
+#include "compressor.h"
 #include "protocol.h"
 
 class QObject;
@@ -41,8 +42,8 @@ public:
 
     static ProtoList supportedProtocols();
 
-    static RemotePeer *createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
-    static RemotePeer *createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
+    static RemotePeer *createPeer(const ProtoDescriptor &protocol, AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent = 0);
+    static RemotePeer *createPeer(const ProtoList &protocols, AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent = 0);
 
 };
 
index d7c1b1d..9b1a45a 100644 (file)
@@ -30,7 +30,8 @@ namespace Protocol {
 const quint32 magic = 0x42b33f00;
 
 enum Type {
-    LegacyProtocol = 1
+    LegacyProtocol = 0x01,
+    DataStreamProtocol = 0x02
 };
 
 
diff --git a/src/common/protocols/datastream/datastreampeer.cpp b/src/common/protocols/datastream/datastreampeer.cpp
new file mode 100644 (file)
index 0000000..b2e4443
--- /dev/null
@@ -0,0 +1,406 @@
+/***************************************************************************
+ *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   devel@quassel-irc.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) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
+ ***************************************************************************/
+
+#include <QtEndian>
+
+#include <QHostAddress>
+#include <QTcpSocket>
+
+#include "datastreampeer.h"
+#include "quassel.h"
+
+using namespace Protocol;
+
+DataStreamPeer::DataStreamPeer(::AuthHandler *authHandler, QTcpSocket *socket, quint16 features, Compressor::CompressionLevel level, QObject *parent)
+    : RemotePeer(authHandler, socket, level, parent)
+{
+    Q_UNUSED(features);
+}
+
+
+quint16 DataStreamPeer::supportedFeatures()
+{
+    return 0;
+}
+
+
+bool DataStreamPeer::acceptsFeatures(quint16 peerFeatures)
+{
+    Q_UNUSED(peerFeatures);
+    return true;
+}
+
+
+quint16 DataStreamPeer::enabledFeatures() const
+{
+    return 0;
+}
+
+
+void DataStreamPeer::processMessage(const QByteArray &msg)
+{
+    QDataStream stream(msg);
+    stream.setVersion(QDataStream::Qt_4_2);
+    QVariantList list;
+    stream >> list;
+    if (stream.status() != QDataStream::Ok) {
+        close("Peer sent corrupt data, closing down!");
+        return;
+    }
+
+    // if no sigproxy is set, we're in handshake mode
+    if (!signalProxy())
+        handleHandshakeMessage(list);
+    else
+        handlePackedFunc(list);
+}
+
+
+void DataStreamPeer::writeMessage(const QVariantMap &handshakeMsg)
+{
+    QVariantList list;
+    QVariantMap::const_iterator it = handshakeMsg.begin();
+    while (it != handshakeMsg.end()) {
+        list << it.key().toUtf8() << it.value();
+        ++it;
+    }
+
+    writeMessage(list);
+}
+
+
+void DataStreamPeer::writeMessage(const QVariantList &sigProxyMsg)
+{
+    QByteArray data;
+    QDataStream msgStream(&data, QIODevice::WriteOnly);
+    msgStream.setVersion(QDataStream::Qt_4_2);
+    msgStream << sigProxyMsg;
+
+    writeMessage(data);
+}
+
+
+/*** Handshake messages ***/
+
+/* These messages are transmitted during handshake phase, which in case of the legacy protocol means they have
+ * a structure different from those being used after the handshake.
+ * Also, the legacy handshake does not fully match the redesigned one, so we'll have to do various mappings here.
+ */
+
+void DataStreamPeer::handleHandshakeMessage(const QVariantList &mapData)
+{
+    QVariantMap m;
+    for (int i = 0; i < mapData.count()/2; ++i)
+        m[QString::fromUtf8(mapData[2*i].toByteArray())] = mapData[2*i+1];
+
+    QString msgType = m["MsgType"].toString();
+    if (msgType.isEmpty()) {
+        emit protocolError(tr("Invalid handshake message!"));
+        return;
+    }
+
+    if (msgType == "ClientInit") {
+        handle(RegisterClient(m["ClientVersion"].toString(), false)); // UseSsl obsolete
+    }
+
+    else if (msgType == "ClientInitReject") {
+        handle(ClientDenied(m["Error"].toString()));
+    }
+
+    else if (msgType == "ClientInitAck") {
+        handle(ClientRegistered(m["CoreFeatures"].toUInt(), m["Configured"].toBool(), m["StorageBackends"].toList(), false, QDateTime())); // SupportsSsl and coreStartTime obsolete
+    }
+
+    else if (msgType == "CoreSetupData") {
+        QVariantMap map = m["SetupData"].toMap();
+        handle(SetupData(map["AdminUser"].toString(), map["AdminPasswd"].toString(), map["Backend"].toString(), map["ConnectionProperties"].toMap()));
+    }
+
+    else if (msgType == "CoreSetupReject") {
+        handle(SetupFailed(m["Error"].toString()));
+    }
+
+    else if (msgType == "CoreSetupAck") {
+        handle(SetupDone());
+    }
+
+    else if (msgType == "ClientLogin") {
+        handle(Login(m["User"].toString(), m["Password"].toString()));
+    }
+
+    else if (msgType == "ClientLoginReject") {
+        handle(LoginFailed(m["Error"].toString()));
+    }
+
+    else if (msgType == "ClientLoginAck") {
+        handle(LoginSuccess());
+    }
+
+    else if (msgType == "SessionInit") {
+        QVariantMap map = m["SessionState"].toMap();
+        handle(SessionState(map["Identities"].toList(), map["BufferInfos"].toList(), map["NetworkIds"].toList()));
+    }
+
+    else {
+        emit protocolError(tr("Unknown protocol message of type %1").arg(msgType));
+    }
+}
+
+
+void DataStreamPeer::dispatch(const RegisterClient &msg) {
+    QVariantMap m;
+    m["MsgType"] = "ClientInit";
+    m["ClientVersion"] = msg.clientVersion;
+    m["ClientDate"] = Quassel::buildInfo().buildDate;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const ClientDenied &msg) {
+    QVariantMap m;
+    m["MsgType"] = "ClientInitReject";
+    m["Error"] = msg.errorString;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const ClientRegistered &msg) {
+    QVariantMap m;
+    m["MsgType"] = "ClientInitAck";
+    m["CoreFeatures"] = msg.coreFeatures;
+    m["StorageBackends"] = msg.backendInfo;
+    m["LoginEnabled"] = m["Configured"] = msg.coreConfigured;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const SetupData &msg)
+{
+    QVariantMap map;
+    map["AdminUser"] = msg.adminUser;
+    map["AdminPasswd"] = msg.adminPassword;
+    map["Backend"] = msg.backend;
+    map["ConnectionProperties"] = msg.setupData;
+
+    QVariantMap m;
+    m["MsgType"] = "CoreSetupData";
+    m["SetupData"] = map;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const SetupFailed &msg)
+{
+    QVariantMap m;
+    m["MsgType"] = "CoreSetupReject";
+    m["Error"] = msg.errorString;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const SetupDone &msg)
+{
+    Q_UNUSED(msg)
+
+    QVariantMap m;
+    m["MsgType"] = "CoreSetupAck";
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const Login &msg)
+{
+    QVariantMap m;
+    m["MsgType"] = "ClientLogin";
+    m["User"] = msg.user;
+    m["Password"] = msg.password;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const LoginFailed &msg)
+{
+    QVariantMap m;
+    m["MsgType"] = "ClientLoginReject";
+    m["Error"] = msg.errorString;
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const LoginSuccess &msg)
+{
+    Q_UNUSED(msg)
+
+    QVariantMap m;
+    m["MsgType"] = "ClientLoginAck";
+
+    writeMessage(m);
+}
+
+
+void DataStreamPeer::dispatch(const SessionState &msg)
+{
+    QVariantMap m;
+    m["MsgType"] = "SessionInit";
+
+    QVariantMap map;
+    map["BufferInfos"] = msg.bufferInfos;
+    map["NetworkIds"] = msg.networkIds;
+    map["Identities"] = msg.identities;
+    m["SessionState"] = map;
+
+    writeMessage(m);
+}
+
+
+/*** Standard messages ***/
+
+void DataStreamPeer::handlePackedFunc(const QVariantList &packedFunc)
+{
+    QVariantList params(packedFunc);
+
+    if (params.isEmpty()) {
+        qWarning() << Q_FUNC_INFO << "Received incompatible data:" << packedFunc;
+        return;
+    }
+
+    // TODO: make sure that this is a valid request type
+    RequestType requestType = (RequestType)params.takeFirst().value<qint16>();
+    switch (requestType) {
+        case Sync: {
+            if (params.count() < 3) {
+                qWarning() << Q_FUNC_INFO << "Received invalid sync call:" << params;
+                return;
+            }
+            QByteArray className = params.takeFirst().toByteArray();
+            QString objectName = QString::fromUtf8(params.takeFirst().toByteArray());
+            QByteArray slotName = params.takeFirst().toByteArray();
+            handle(Protocol::SyncMessage(className, objectName, slotName, params));
+            break;
+        }
+        case RpcCall: {
+            if (params.empty()) {
+                qWarning() << Q_FUNC_INFO << "Received empty RPC call!";
+                return;
+            }
+            QByteArray slotName = params.takeFirst().toByteArray();
+            handle(Protocol::RpcCall(slotName, params));
+            break;
+        }
+        case InitRequest: {
+            if (params.count() != 2) {
+                qWarning() << Q_FUNC_INFO << "Received invalid InitRequest:" << params;
+                return;
+            }
+            QByteArray className = params[0].toByteArray();
+            QString objectName = QString::fromUtf8(params[1].toByteArray());
+            handle(Protocol::InitRequest(className, objectName));
+            break;
+        }
+        case InitData: {
+            if (params.count() < 2) {
+                qWarning() << Q_FUNC_INFO << "Received invalid InitData:" << params;
+                return;
+            }
+            QByteArray className = params.takeFirst().toByteArray();
+            QString objectName = QString::fromUtf8(params.takeFirst().toByteArray());
+            QVariantMap initData;
+            for (int i = 0; i < params.count()/2; ++i)
+                initData[QString::fromUtf8(params[2*i].toByteArray())] = params[2*i+1];
+            handle(Protocol::InitData(className, objectName, initData));
+            break;
+        }
+        case HeartBeat: {
+            if (params.count() != 1) {
+                qWarning() << Q_FUNC_INFO << "Received invalid HeartBeat:" << params;
+                return;
+            }
+            // Note: QDateTime instead of QTime as in the legacy protocol!
+            handle(Protocol::HeartBeat(params[0].toDateTime()));
+            break;
+        }
+        case HeartBeatReply: {
+            if (params.count() != 1) {
+                qWarning() << Q_FUNC_INFO << "Received invalid HeartBeat:" << params;
+                return;
+            }
+            // Note: QDateTime instead of QTime as in the legacy protocol!
+            handle(Protocol::HeartBeatReply(params[0].toDateTime()));
+            break;
+        }
+
+    }
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::SyncMessage &msg)
+{
+    dispatchPackedFunc(QVariantList() << (qint16)Sync << msg.className << msg.objectName.toUtf8() << msg.slotName << msg.params);
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::RpcCall &msg)
+{
+    dispatchPackedFunc(QVariantList() << (qint16)RpcCall << msg.slotName << msg.params);
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::InitRequest &msg)
+{
+    dispatchPackedFunc(QVariantList() << (qint16)InitRequest << msg.className << msg.objectName.toUtf8());
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::InitData &msg)
+{
+    QVariantList initData;
+    QVariantMap::const_iterator it = msg.initData.begin();
+    while (it != msg.initData.end()) {
+        initData << it.key().toUtf8() << it.value();
+        ++it;
+    }
+    dispatchPackedFunc(QVariantList() << (qint16)InitData << msg.className << msg.objectName.toUtf8() << initData);
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::HeartBeat &msg)
+{
+    dispatchPackedFunc(QVariantList() << (qint16)HeartBeat << msg.timestamp);
+}
+
+
+void DataStreamPeer::dispatch(const Protocol::HeartBeatReply &msg)
+{
+    dispatchPackedFunc(QVariantList() << (qint16)HeartBeatReply << msg.timestamp);
+}
+
+
+void DataStreamPeer::dispatchPackedFunc(const QVariantList &packedFunc)
+{
+    writeMessage(packedFunc);
+}
diff --git a/src/common/protocols/datastream/datastreampeer.h b/src/common/protocols/datastream/datastreampeer.h
new file mode 100644 (file)
index 0000000..e01fb34
--- /dev/null
@@ -0,0 +1,84 @@
+/***************************************************************************
+ *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   devel@quassel-irc.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) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
+ ***************************************************************************/
+
+#ifndef DATASTREAMPEER_H
+#define DATASTREAMPEER_H
+
+#include "../../remotepeer.h"
+
+class QDataStream;
+
+class DataStreamPeer : public RemotePeer
+{
+    Q_OBJECT
+
+public:
+    enum RequestType {
+        Sync = 1,
+        RpcCall,
+        InitRequest,
+        InitData,
+        HeartBeat,
+        HeartBeatReply
+    };
+
+    DataStreamPeer(AuthHandler *authHandler, QTcpSocket *socket, quint16 features, Compressor::CompressionLevel level, QObject *parent = 0);
+
+    Protocol::Type protocol() const { return Protocol::DataStreamProtocol; }
+    QString protocolName() const { return "the DataStream protocol"; }
+
+    static quint16 supportedFeatures();
+    static bool acceptsFeatures(quint16 peerFeatures);
+    quint16 enabledFeatures() const;
+
+    void dispatch(const Protocol::RegisterClient &msg);
+    void dispatch(const Protocol::ClientDenied &msg);
+    void dispatch(const Protocol::ClientRegistered &msg);
+    void dispatch(const Protocol::SetupData &msg);
+    void dispatch(const Protocol::SetupFailed &msg);
+    void dispatch(const Protocol::SetupDone &msg);
+    void dispatch(const Protocol::Login &msg);
+    void dispatch(const Protocol::LoginFailed &msg);
+    void dispatch(const Protocol::LoginSuccess &msg);
+    void dispatch(const Protocol::SessionState &msg);
+
+    void dispatch(const Protocol::SyncMessage &msg);
+    void dispatch(const Protocol::RpcCall &msg);
+    void dispatch(const Protocol::InitRequest &msg);
+    void dispatch(const Protocol::InitData &msg);
+
+    void dispatch(const Protocol::HeartBeat &msg);
+    void dispatch(const Protocol::HeartBeatReply &msg);
+
+signals:
+    void protocolError(const QString &errorString);
+
+private:
+    using RemotePeer::writeMessage;
+    void writeMessage(const QVariantMap &handshakeMsg);
+    void writeMessage(const QVariantList &sigProxyMsg);
+    void processMessage(const QByteArray &msg);
+
+    void handleHandshakeMessage(const QVariantList &mapData);
+    void handlePackedFunc(const QVariantList &packedFunc);
+    void dispatchPackedFunc(const QVariantList &packedFunc);
+};
+
+#endif
index e2890cc..67e5130 100644 (file)
@@ -31,13 +31,11 @@ const uint clientNeedsProtocol = protocolVersion;
 
 using namespace Protocol;
 
-LegacyPeer::LegacyPeer(::AuthHandler *authHandler, QTcpSocket *socket, QObject *parent)
-    : RemotePeer(authHandler, socket, parent),
-    _blockSize(0),
+LegacyPeer::LegacyPeer(::AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent)
+    : RemotePeer(authHandler, socket, level, parent),
     _useCompression(false)
 {
-    _stream.setDevice(socket);
-    _stream.setVersion(QDataStream::Qt_4_2);
+
 }
 
 
@@ -56,56 +54,22 @@ void LegacyPeer::setSignalProxy(::SignalProxy *proxy)
 }
 
 
-void LegacyPeer::onSocketDataAvailable()
+void LegacyPeer::processMessage(const QByteArray &msg)
 {
-    QVariant item;
-    while (readSocketData(item)) {
-        // if no sigproxy is set, we're in handshake mode and let the data be handled elsewhere
-        if (!signalProxy())
-            handleHandshakeMessage(item);
-        else
-            handlePackedFunc(item);
-    }
-}
-
-
-bool LegacyPeer::readSocketData(QVariant &item)
-{
-    if (_blockSize == 0) {
-        if (socket()->bytesAvailable() < 4)
-            return false;
-        _stream >> _blockSize;
-    }
-
-    if (_blockSize > 1 << 22) {
-        close("Peer tried to send package larger than max package size!");
-        return false;
-    }
-
-    if (_blockSize == 0) {
-        close("Peer tried to send 0 byte package!");
-        return false;
-    }
-
-    if (socket()->bytesAvailable() < _blockSize) {
-        emit transferProgress(socket()->bytesAvailable(), _blockSize);
-        return false;
-    }
-
-    emit transferProgress(_blockSize, _blockSize);
-
-    _blockSize = 0;
+    QDataStream stream(msg);
+    stream.setVersion(QDataStream::Qt_4_2);
 
+    QVariant item;
     if (_useCompression) {
         QByteArray rawItem;
-        _stream >> rawItem;
+        stream >> rawItem;
 
         int nbytes = rawItem.size();
         if (nbytes <= 4) {
             const char *data = rawItem.constData();
             if (nbytes < 4 || (data[0] != 0 || data[1] != 0 || data[2] != 0 || data[3] != 0)) {
                 close("Peer sent corrupted compressed data!");
-                return false;
+                return;
             }
         }
 
@@ -116,25 +80,24 @@ bool LegacyPeer::readSocketData(QVariant &item)
         itemStream >> item;
     }
     else {
-        _stream >> item;
+        stream >> item;
     }
 
-    if (!item.isValid()) {
+    if (stream.status() != QDataStream::Ok || !item.isValid()) {
         close("Peer sent corrupt data: unable to load QVariant!");
-        return false;
+        return;
     }
 
-    return true;
+    // if no sigproxy is set, we're in handshake mode and let the data be handled elsewhere
+    if (!signalProxy())
+        handleHandshakeMessage(item);
+    else
+        handlePackedFunc(item);
 }
 
 
-void LegacyPeer::writeSocketData(const QVariant &item)
+void LegacyPeer::writeMessage(const QVariant &item)
 {
-    if (!socket()->isOpen()) {
-        qWarning() << Q_FUNC_INFO << "Can't write to a closed socket!";
-        return;
-    }
-
     QByteArray block;
     QDataStream out(&block, QIODevice::WriteOnly);
     out.setVersion(QDataStream::Qt_4_2);
@@ -153,7 +116,7 @@ void LegacyPeer::writeSocketData(const QVariant &item)
         out << item;
     }
 
-    _stream << block;  // also writes the length as part of the serialization format
+    writeMessage(block);
 }
 
 
@@ -261,7 +224,7 @@ void LegacyPeer::dispatch(const RegisterClient &msg) {
     m["UseCompression"] = false;
 #endif
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -270,7 +233,7 @@ void LegacyPeer::dispatch(const ClientDenied &msg) {
     m["MsgType"] = "ClientInitReject";
     m["Error"] = msg.errorString;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -298,7 +261,7 @@ void LegacyPeer::dispatch(const ClientRegistered &msg) {
 
     m["LoginEnabled"] = m["Configured"] = msg.coreConfigured;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -313,7 +276,7 @@ void LegacyPeer::dispatch(const SetupData &msg)
     QVariantMap m;
     m["MsgType"] = "CoreSetupData";
     m["SetupData"] = map;
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -323,7 +286,7 @@ void LegacyPeer::dispatch(const SetupFailed &msg)
     m["MsgType"] = "CoreSetupReject";
     m["Error"] = msg.errorString;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -334,7 +297,7 @@ void LegacyPeer::dispatch(const SetupDone &msg)
     QVariantMap m;
     m["MsgType"] = "CoreSetupAck";
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -345,7 +308,7 @@ void LegacyPeer::dispatch(const Login &msg)
     m["User"] = msg.user;
     m["Password"] = msg.password;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -355,7 +318,7 @@ void LegacyPeer::dispatch(const LoginFailed &msg)
     m["MsgType"] = "ClientLoginReject";
     m["Error"] = msg.errorString;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -366,7 +329,7 @@ void LegacyPeer::dispatch(const LoginSuccess &msg)
     QVariantMap m;
     m["MsgType"] = "ClientLoginAck";
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -381,7 +344,7 @@ void LegacyPeer::dispatch(const SessionState &msg)
     map["Identities"] = msg.identities;
     m["SessionState"] = map;
 
-    writeSocketData(m);
+    writeMessage(m);
 }
 
 
@@ -437,6 +400,10 @@ void LegacyPeer::handlePackedFunc(const QVariant &packedFunc)
             QByteArray className = params[0].toByteArray();
             QString objectName = params[1].toString();
             QVariantMap initData = params[2].toMap();
+
+            // we need to special-case IrcUsersAndChannels here, since the format changed
+            if (className == "Network")
+                fromLegacyIrcUsersAndChannels(initData);
             handle(Protocol::InitData(className, objectName, initData));
             break;
         }
@@ -489,7 +456,14 @@ void LegacyPeer::dispatch(const Protocol::InitRequest &msg)
 
 void LegacyPeer::dispatch(const Protocol::InitData &msg)
 {
-    dispatchPackedFunc(QVariantList() << (qint16)InitData << msg.className << msg.objectName << msg.initData);
+    // We need to special-case IrcUsersAndChannels, as the format changed
+    if (msg.className == "Network") {
+        QVariantMap initData = msg.initData;
+        toLegacyIrcUsersAndChannels(initData);
+        dispatchPackedFunc(QVariantList() << (qint16)InitData << msg.className << msg.objectName << initData);
+    }
+    else
+        dispatchPackedFunc(QVariantList() << (qint16)InitData << msg.className << msg.objectName << msg.initData);
 }
 
 
@@ -507,5 +481,74 @@ void LegacyPeer::dispatch(const Protocol::HeartBeatReply &msg)
 
 void LegacyPeer::dispatchPackedFunc(const QVariantList &packedFunc)
 {
-    writeSocketData(QVariant(packedFunc));
+    writeMessage(QVariant(packedFunc));
+}
+
+
+// Handle the changed format for Network's initData
+// cf. Network::initIrcUsersAndChannels()
+void LegacyPeer::fromLegacyIrcUsersAndChannels(QVariantMap &initData)
+{
+    const QVariantMap &legacyMap = initData["IrcUsersAndChannels"].toMap();
+    QVariantMap newMap;
+
+    QHash<QString, QVariantList> users;
+    foreach(const QVariant &v, legacyMap["users"].toMap().values()) {
+        const QVariantMap &map = v.toMap();
+        foreach(const QString &key, map.keys())
+            users[key] << map[key];
+    }
+    QVariantMap userMap;
+    foreach(const QString &key, users.keys())
+        userMap[key] = users[key];
+    newMap["Users"] = userMap;
+
+    QHash<QString, QVariantList> channels;
+    foreach(const QVariant &v, legacyMap["channels"].toMap().values()) {
+        const QVariantMap &map = v.toMap();
+        foreach(const QString &key, map.keys())
+            channels[key] << map[key];
+    }
+    QVariantMap channelMap;
+    foreach(const QString &key, channels.keys())
+        channelMap[key] = channels[key];
+    newMap["Channels"] = channelMap;
+
+    initData["IrcUsersAndChannels"] = newMap;
+}
+
+
+void LegacyPeer::toLegacyIrcUsersAndChannels(QVariantMap &initData)
+{
+    const QVariantMap &usersAndChannels = initData["IrcUsersAndChannels"].toMap();
+    QVariantMap legacyMap;
+
+    // toMap() and toList() are cheap, so no need to copy to a hash
+
+    QVariantMap userMap;
+    const QVariantMap &users = usersAndChannels["Users"].toMap();
+
+    int size = users["nick"].toList().size(); // we know this key exists
+    for(int i = 0; i < size; i++) {
+        QVariantMap map;
+        foreach(const QString &key, users.keys())
+            map[key] = users[key].toList().at(i);
+        QString hostmask = QString("%1!%2@%3").arg(map["nick"].toString(), map["user"].toString(), map["host"].toString());
+        userMap[hostmask.toLower()] = map;
+    }
+    legacyMap["users"] = userMap;
+
+    QVariantMap channelMap;
+    const QVariantMap &channels = usersAndChannels["Channels"].toMap();
+
+    size = channels["name"].toList().size();
+    for(int i = 0; i < size; i++) {
+        QVariantMap map;
+        foreach(const QString &key, channels.keys())
+            map[key] = channels[key].toList().at(i);
+        channelMap[map["name"].toString().toLower()] = map;
+    }
+    legacyMap["channels"] = channelMap;
+
+    initData["IrcUsersAndChannels"] = legacyMap;
 }
index 1d09dd6..ce960fa 100644 (file)
 #ifndef LEGACYPEER_H
 #define LEGACYPEER_H
 
-#include <QDataStream>
-
 #include "../../remotepeer.h"
 
-class QDataStream;
-
 class LegacyPeer : public RemotePeer
 {
     Q_OBJECT
@@ -41,9 +37,10 @@ public:
         HeartBeatReply
     };
 
-    LegacyPeer(AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
+    LegacyPeer(AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent = 0);
 
     Protocol::Type protocol() const { return Protocol::LegacyProtocol; }
+    QString protocolName() const { return "the legacy protocol"; }
 
     void setSignalProxy(SignalProxy *proxy);
 
@@ -66,26 +63,24 @@ public:
     void dispatch(const Protocol::HeartBeat &msg);
     void dispatch(const Protocol::HeartBeatReply &msg);
 
-    // FIXME: this is only used for the auth phase and should be replaced by something more generic
-    void writeSocketData(const QVariant &item);
-
 signals:
     void protocolError(const QString &errorString);
 
     // only used in compat mode
     void protocolVersionMismatch(int actual, int expected);
 
-protected slots:
-    void onSocketDataAvailable();
-
 private:
-    bool readSocketData(QVariant &item);
+    using RemotePeer::writeMessage;
+    void writeMessage(const QVariant &item);
+    void processMessage(const QByteArray &msg);
+
     void handleHandshakeMessage(const QVariant &msg);
     void handlePackedFunc(const QVariant &packedFunc);
     void dispatchPackedFunc(const QVariantList &packedFunc);
 
-    QDataStream _stream;
-    quint32 _blockSize;
+    void toLegacyIrcUsersAndChannels(QVariantMap &initData);
+    void fromLegacyIrcUsersAndChannels(QVariantMap &initData);
+
     bool _useCompression;
 };
 
index 23202a7..6490eb9 100644 (file)
@@ -46,6 +46,8 @@
 #include "syncableobject.h"
 #include "types.h"
 
+#include "../../version.h"
+
 Quassel::BuildInfo Quassel::_buildInfo;
 AbstractCliParser *Quassel::_cliParser = 0;
 Quassel::RunMode Quassel::_runMode;
@@ -209,7 +211,7 @@ void Quassel::registerMetaTypes()
 }
 
 
-void Quassel::setupBuildInfo(const QString &generated)
+void Quassel::setupBuildInfo()
 {
     _buildInfo.applicationName = "Quassel IRC";
     _buildInfo.coreApplicationName = "quasselcore";
@@ -217,17 +219,22 @@ void Quassel::setupBuildInfo(const QString &generated)
     _buildInfo.organizationName = "Quassel Project";
     _buildInfo.organizationDomain = "quassel-irc.org";
 
-    QStringList gen = generated.split(',');
-    Q_ASSERT(gen.count() == 10);
-    _buildInfo.baseVersion = gen[0];
-    _buildInfo.generatedVersion = gen[1];
-    _buildInfo.isSourceDirty = !gen[2].isEmpty();
-    _buildInfo.commitHash = gen[3];
-    _buildInfo.commitDate = gen[4].toUInt();
-    _buildInfo.protocolVersion = gen[5].toUInt();
-    _buildInfo.clientNeedsProtocol = gen[6].toUInt();
-    _buildInfo.coreNeedsProtocol = gen[7].toUInt();
-    _buildInfo.buildDate = QString("%1 %2").arg(gen[8], gen[9]);
+    _buildInfo.protocolVersion = 10; // FIXME: deprecated, will be removed
+
+    _buildInfo.baseVersion = QUASSEL_VERSION_STRING;
+    _buildInfo.generatedVersion = GIT_DESCRIBE;
+
+    // This will be imprecise for incremental builds not touching this file, but we really don't want to always recompile
+    _buildInfo.buildDate = QString("%1 %2").arg(__DATE__, __TIME__);
+
+    // Check if we got a commit hash
+    if (!QString(GIT_HEAD).isEmpty())
+        _buildInfo.commitHash = GIT_HEAD;
+    else if (!QString(DIST_HASH).contains("Format")) {
+        _buildInfo.commitHash = DIST_HASH;
+        _buildInfo.commitDate = QString(DIST_DATE).toUInt();
+    }
+
     // create a nice version string
     if (_buildInfo.generatedVersion.isEmpty()) {
         if (!_buildInfo.commitHash.isEmpty()) {
@@ -242,26 +249,23 @@ void Quassel::setupBuildInfo(const QString &generated)
         }
         else {
             // we only have a base version :(
-            _buildInfo.plainVersionString = QString("v%1 (unknown rev)").arg(_buildInfo.baseVersion);
+            _buildInfo.plainVersionString = QString("v%1 (unknown revision)").arg(_buildInfo.baseVersion);
         }
     }
     else {
         // analyze what we got from git-describe
-        QRegExp rx("(.*)-(\\d+)-g([0-9a-f]+)$");
+        QRegExp rx("(.*)-(\\d+)-g([0-9a-f]+)(-dirty)?$");
         if (rx.exactMatch(_buildInfo.generatedVersion)) {
             QString distance = rx.cap(2) == "0" ? QString() : QString("%1+%2 ").arg(rx.cap(1), rx.cap(2));
             _buildInfo.plainVersionString = QString("v%1 (%2git-%3%4)")
-                                            .arg(_buildInfo.baseVersion, distance, rx.cap(3))
-                                            .arg(_buildInfo.isSourceDirty ? "*" : "");
+                                            .arg(_buildInfo.baseVersion, distance, rx.cap(3), rx.cap(4));
             if (!_buildInfo.commitHash.isEmpty()) {
                 _buildInfo.fancyVersionString = QString("v%1 (%2git-<a href=\"http://git.quassel-irc.org/?p=quassel.git;a=commit;h=%5\">%3</a>%4)")
-                                                .arg(_buildInfo.baseVersion, distance, rx.cap(3))
-                                                .arg(_buildInfo.isSourceDirty ? "*" : "")
-                                                .arg(_buildInfo.commitHash);
+                                                .arg(_buildInfo.baseVersion, distance, rx.cap(3), rx.cap(4), _buildInfo.commitHash);
             }
         }
         else {
-            _buildInfo.plainVersionString = QString("v%1 (invalid rev)").arg(_buildInfo.baseVersion);
+            _buildInfo.plainVersionString = QString("v%1 (invalid revision)").arg(_buildInfo.baseVersion);
         }
     }
     if (_buildInfo.fancyVersionString.isEmpty())
index 7c8d26a..b141f32 100644 (file)
@@ -49,10 +49,8 @@ public:
         QString commitHash;
         uint commitDate;
         QString buildDate;
-        bool isSourceDirty;
-        uint protocolVersion;
-        uint clientNeedsProtocol;
-        uint coreNeedsProtocol;
+
+        uint protocolVersion; // deprecated
 
         QString applicationName;
         QString coreApplicationName;
@@ -72,8 +70,9 @@ public:
         SynchronizedMarkerLine = 0x0001,
         SaslAuthentication = 0x0002,
         SaslExternal = 0x0004,
+        HideInactiveNetworks = 0x0008,
 
-        NumFeatures = 0x0004
+        NumFeatures = 0x0008
     };
     Q_DECLARE_FLAGS(Features, Feature);
 
@@ -84,7 +83,7 @@ public:
 
     virtual ~Quassel();
 
-    static void setupBuildInfo(const QString &generated);
+    static void setupBuildInfo();
     static inline const BuildInfo &buildInfo();
     static inline RunMode runMode();
 
index e8b682d..948bffa 100644 (file)
@@ -18,6 +18,8 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QtEndian>
+
 #include <QHostAddress>
 #include <QTimer>
 
 
 using namespace Protocol;
 
-RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, QObject *parent)
+const quint32 maxMessageSize = 64 * 1024 * 1024; // This is uncompressed size. 64 MB should be enough for any sort of initData or backlog chunk
+
+RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent)
     : Peer(authHandler, parent),
     _socket(socket),
+    _compressor(new Compressor(socket, level, this)),
     _signalProxy(0),
     _heartBeatTimer(new QTimer(this)),
     _heartBeatCount(0),
-    _lag(0)
+    _lag(0),
+    _msgSize(0)
 {
     socket->setParent(this);
-    connect(socket, SIGNAL(readyRead()), SLOT(onSocketDataAvailable()));
     connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), SLOT(onSocketStateChanged(QAbstractSocket::SocketState)));
     connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(onSocketError(QAbstractSocket::SocketError)));
     connect(socket, SIGNAL(disconnected()), SIGNAL(disconnected()));
@@ -51,12 +56,10 @@ RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, QObject *
         connect(sslSocket, SIGNAL(encrypted()), SIGNAL(secureStateChanged()));
 #endif
 
-    connect(_heartBeatTimer, SIGNAL(timeout()), SLOT(sendHeartBeat()));
+    connect(_compressor, SIGNAL(readyRead()), SLOT(onReadyRead()));
+    connect(_compressor, SIGNAL(error(Compressor::Error)), SLOT(onCompressionError(Compressor::Error)));
 
-    // It's possible that more data has already arrived during the handshake, so readyRead() wouldn't be triggered.
-    // However, we can't call a virtual function from the ctor, so let's do it asynchronously.
-    if (socket->bytesAvailable())
-        QTimer::singleShot(0, this, SLOT(onSocketDataAvailable()));
+    connect(_heartBeatTimer, SIGNAL(timeout()), SLOT(sendHeartBeat()));
 }
 
 
@@ -74,6 +77,12 @@ void RemotePeer::onSocketError(QAbstractSocket::SocketError error)
 }
 
 
+void RemotePeer::onCompressionError(Compressor::Error error)
+{
+    close(QString("Compression error %1").arg(error));
+}
+
+
 QString RemotePeer::description() const
 {
     if (socket())
@@ -180,6 +189,60 @@ void RemotePeer::close(const QString &reason)
 }
 
 
+void RemotePeer::onReadyRead()
+{
+    QByteArray msg;
+    while (readMessage(msg))
+        processMessage(msg);
+}
+
+
+bool RemotePeer::readMessage(QByteArray &msg)
+{
+    if (_msgSize == 0) {
+        if (_compressor->bytesAvailable() < 4)
+            return false;
+        _compressor->read((char*)&_msgSize, 4);
+        _msgSize = qFromBigEndian<quint32>(_msgSize);
+
+        if (_msgSize > maxMessageSize) {
+            close("Peer tried to send package larger than max package size!");
+            return false;
+        }
+
+        if (_msgSize == 0) {
+            close("Peer tried to send an empty message!");
+            return false;
+        }
+    }
+
+    if (_compressor->bytesAvailable() < _msgSize) {
+        emit transferProgress(socket()->bytesAvailable(), _msgSize);
+        return false;
+    }
+
+    emit transferProgress(_msgSize, _msgSize);
+
+    msg.resize(_msgSize);
+    qint64 bytesRead = _compressor->read(msg.data(), _msgSize);
+    if (bytesRead != _msgSize) {
+        close("Premature end of data stream!");
+        return false;
+    }
+
+    _msgSize = 0;
+    return true;
+}
+
+
+void RemotePeer::writeMessage(const QByteArray &msg)
+{
+    quint32 size = qToBigEndian<quint32>(msg.size());
+    _compressor->write((const char*)&size, 4, Compressor::NoFlush);
+    _compressor->write(msg.constData(), msg.size());
+}
+
+
 void RemotePeer::handle(const HeartBeat &heartBeat)
 {
     dispatch(HeartBeatReply(heartBeat.timestamp));
index 191439e..4489829 100644 (file)
 
 #include <QDateTime>
 
+#include "compressor.h"
 #include "peer.h"
 #include "protocol.h"
 #include "signalproxy.h"
 
-class QTcpSocket;
 class QTimer;
 
 class AuthHandler;
@@ -41,11 +41,12 @@ public:
     using Peer::handle;
     using Peer::dispatch;
 
-    RemotePeer(AuthHandler *authHandler, QTcpSocket *socket, QObject *parent = 0);
+    RemotePeer(AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent = 0);
 
     void setSignalProxy(SignalProxy *proxy);
 
     virtual Protocol::Type protocol() const = 0;
+    virtual QString protocolName() const = 0;
     virtual QString description() const;
     virtual quint16 enabledFeatures() const { return 0; }
 
@@ -71,6 +72,9 @@ signals:
 protected:
     SignalProxy *signalProxy() const;
 
+    void writeMessage(const QByteArray &msg);
+    virtual void processMessage(const QByteArray &msg) = 0;
+
     // These protocol messages get handled internally and won't reach SignalProxy
     void handle(const Protocol::HeartBeat &heartBeat);
     void handle(const Protocol::HeartBeatReply &heartBeatReply);
@@ -78,20 +82,27 @@ protected:
     virtual void dispatch(const Protocol::HeartBeatReply &msg) = 0;
 
 protected slots:
-    virtual void onSocketDataAvailable() = 0;
     virtual void onSocketStateChanged(QAbstractSocket::SocketState state);
     virtual void onSocketError(QAbstractSocket::SocketError error);
 
 private slots:
+    void onReadyRead();
+    void onCompressionError(Compressor::Error error);
+
     void sendHeartBeat();
     void changeHeartBeatInterval(int secs);
 
+private:
+    bool readMessage(QByteArray &msg);
+
 private:
     QTcpSocket *_socket;
+    Compressor *_compressor;
     SignalProxy *_signalProxy;
     QTimer *_heartBeatTimer;
     int _heartBeatCount;
     int _lag;
+    quint32 _msgSize;
 };
 
 #endif
index dfb0289..25e1488 100644 (file)
@@ -1,7 +1,5 @@
 # Builds the core module
 
-setup_qt_variables(Network Sql Script)
-
 set(SOURCES
     abstractsqlstorage.cpp
     core.cpp
@@ -36,70 +34,30 @@ set(SOURCES
     postgresqlstorage.cpp
     sessionthread.cpp
     sqlitestorage.cpp
-    storage.cpp)
+    storage.cpp
 
-set(MOC_HDRS
-    abstractsqlstorage.h
-    core.h
-    corealiasmanager.h
-    coreapplication.h
-    coreauthhandler.h
-    corebacklogmanager.h
-    corebasichandler.h
-    corebuffersyncer.h
-    corebufferviewconfig.h
-    corebufferviewmanager.h
-    corecoreinfo.h
+    # needed for automoc
     coreeventmanager.h
-    coreidentity.h
-    coreignorelistmanager.h
-    coreircchannel.h
-    coreirclisthelper.h
-    coreircuser.h
-    corenetwork.h
-    corenetworkconfig.h
-    coresession.h
-    coresessioneventprocessor.h
-    coretransfer.h
-    coretransfermanager.h
-    coreuserinputhandler.h
-    ctcpparser.h
-    eventstringifier.h
-    ircparser.h
-    netsplit.h
-    oidentdconfiggenerator.h
-    postgresqlstorage.h
-    sqlitestorage.h
-    storage.h
-    sessionthread.h)
-
-set(HEADERS
-    coresettings.h
-    coreusersettings.h)
+)
 
 if(HAVE_SSL)
   set(SOURCES ${SOURCES} sslserver.cpp)
-  set(MOC_HDRS ${MOC_HDRS} sslserver.h)
   include_directories(${OPENSSL_INCLUDE_DIR})
 endif(HAVE_SSL)
 
 if(HAVE_QCA2)
   set(SOURCES ${SOURCES} cipher.cpp)
-  set(HEADERS ${HEADERS} cipher.h)
   include_directories(${QCA2_INCLUDE_DIR})
 endif(HAVE_QCA2)
 
-include_directories(${CMAKE_SOURCE_DIR}/src/common ${QUASSEL_QT_INCLUDES})
-
-if(NOT WITH_QT5)
-  qt4_wrap_cpp(MOC ${MOC_HDRS})
-endif(NOT WITH_QT5)
+include_directories(${CMAKE_SOURCE_DIR}/src/common)
 
 set(CORE_RCS ${CORE_RCS} core/sql.qrc PARENT_SCOPE)
 
-add_library(mod_core STATIC ${SOURCES} ${MOC} ${HEADERS})
+add_library(mod_core STATIC ${SOURCES})
+qt_use_modules(mod_core Core Network Script Sql)
+
 add_dependencies(mod_core mod_common)
-set_target_properties(mod_core PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
 
 if(HAVE_QCA2)
   target_link_libraries(mod_core ${QCA2_LIBRARIES})
index 7ca6d58..9ef67fa 100644 (file)
@@ -63,7 +63,7 @@ void CoreAuthHandler::onReadyRead()
             // no magic, assume legacy protocol
             qDebug() << "Legacy client detected, switching to compatibility mode";
             _legacy = true;
-            RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(Protocol::LegacyProtocol, 0), this, socket(), this);
+            RemotePeer *peer = PeerFactory::createPeer(PeerFactory::ProtoDescriptor(Protocol::LegacyProtocol, 0), this, socket(), Compressor::NoCompression, this);
             connect(peer, SIGNAL(protocolVersionMismatch(int,int)), SLOT(onProtocolVersionMismatch(int,int)));
             setPeer(peer);
             return;
@@ -91,7 +91,13 @@ void CoreAuthHandler::onReadyRead()
         _supportedProtos.append(PeerFactory::ProtoDescriptor(type, protoFeatures));
 
         if (data >= 0x80000000) { // last protocol
-            RemotePeer *peer = PeerFactory::createPeer(_supportedProtos, this, socket(), this);
+            Compressor::CompressionLevel level;
+            if (_connectionFeatures & Protocol::Compression)
+                level = Compressor::BestCompression;
+            else
+                level = Compressor::NoCompression;
+
+            RemotePeer *peer = PeerFactory::createPeer(_supportedProtos, this, socket(), level, this);
             if (peer->protocol() == Protocol::LegacyProtocol) {
                 _legacy = true;
                 connect(peer, SIGNAL(protocolVersionMismatch(int,int)), SLOT(onProtocolVersionMismatch(int,int)));
@@ -114,6 +120,8 @@ void CoreAuthHandler::onReadyRead()
 
 void CoreAuthHandler::setPeer(RemotePeer *peer)
 {
+    qDebug().nospace() << "Using " << qPrintable(peer->protocolName()) << "...";
+
     _peer = peer;
     disconnect(socket(), SIGNAL(readyRead()), this, SLOT(onReadyRead()));
 }
index 3fd0a1a..18f2784 100644 (file)
@@ -18,6 +18,8 @@
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include <QHostInfo>
+
 #include "corenetwork.h"
 
 #include "core.h"
@@ -184,8 +186,11 @@ void CoreNetwork::connectToIrc(bool reconnecting)
 
     enablePingTimeout();
 
+    // Qt caches DNS entries for a minute, resulting in round-robin (e.g. for chat.freenode.net) not working if several users
+    // connect at a similar time. QHostInfo::fromName(), however, always performs a fresh lookup, overwriting the cache entry.
+    QHostInfo::fromName(server.host);
+
 #ifdef HAVE_SSL
-    socket.setProtocol((QSsl::SslProtocol)server.sslVersion);
     if (server.useSsl) {
         CoreIdentity *identity = identityPtr();
         if (identity) {
@@ -265,11 +270,14 @@ void CoreNetwork::putCmd(const QString &cmd, const QList<QByteArray> &params, co
         msg += ":" + prefix + " ";
     msg += cmd.toUpper().toAscii();
 
-    for (int i = 0; i < params.size() - 1; i++) {
-        msg += " " + params[i];
+    for (int i = 0; i < params.size(); i++) {
+        msg += " ";
+
+        if (i == params.size() - 1 && (params[i].contains(' ') || (!params[i].isEmpty() && params[i][0] == ':')))
+            msg += ":";
+
+        msg += params[i];
     }
-    if (!params.isEmpty())
-        msg += " :" + params.last();
 
     putRawLine(msg);
 }
index e649d15..e2f7eb0 100644 (file)
@@ -1,21 +1,5 @@
 # Builds the qtui module
 
-set(_modules )
-
-if(WITH_QT5)
-  list(APPEND _modules Widgets)
-endif(WITH_QT5)
-
-if(HAVE_DBUS)
-  list(APPEND _modules DBus)
-endif(HAVE_DBUS)
-
-if(HAVE_WEBKIT)
-  list(APPEND _modules Webkit XmlPatterns)
-endif(HAVE_WEBKIT)
-
-setup_qt_variables(Gui Network ${_modules})
-
 set(SOURCES
     aboutdlg.cpp
     awaylogfilter.cpp
@@ -65,60 +49,8 @@ set(SOURCES
     titlesetter.cpp
     topicwidget.cpp
     verticaldock.cpp
-    webpreviewitem.cpp)
-
-set(MOC_HDRS
-    aboutdlg.h
-    awaylogfilter.h
-    awaylogview.h
-    bufferwidget.h
-    channellistdlg.h
-    chatitem.h
-    chatlinemodel.h
-    chatmonitorfilter.h
-    chatmonitorview.h
-    chatscene.h
-    chatview.h
-    chatviewsearchbar.h
-    chatviewsearchcontroller.h
-    columnhandleitem.h
-    coreconfigwizard.h
-    coreconnectdlg.h
-    coreconnectionstatuswidget.h
-    coreinfodlg.h
-    debugbufferviewoverlay.h
-    debugconsole.h
-    debuglogwidget.h
-    debugmessagemodelfilter.h
-    inputwidget.h
-    ircconnectionwizard.h
-    legacysystemtray.h
-    mainpage.h
-    mainwin.h
-    markerlineitem.h
-    msgprocessorstatuswidget.h
-    nicklistwidget.h
-    qtui.h
-    qtuiapplication.h
-    qtuimessageprocessor.h
-    qtuistyle.h
-    receivefiledlg.h
-    settingsdlg.h
-    settingspagedlg.h
-    simplenetworkeditor.h
-    systemtray.h
-    systraynotificationbackend.h
-    taskbarnotificationbackend.h
-    titlesetter.h
-    topicwidget.h
-    verticaldock.h)
-
-set(HEADERS
-    chatline.h
-    chatlinemodelitem.h
-    chatviewsettings.h
-    qtuisettings.h
-    webpreviewitem.h)
+    webpreviewitem.cpp
+)
 
 set(FORMS
     aboutdlg.ui
@@ -147,52 +79,38 @@ set(FORMS
 
 if(HAVE_KDE)
   set(SOURCES ${SOURCES} knotificationbackend.cpp)
-  set(MOC_HDRS ${MOC_HDRS} knotificationbackend.h)
 else(HAVE_KDE)
   if(HAVE_SNORENOTIFY)
     set(SOURCES ${SOURCES} snorenotificationbackend.cpp)
-    set(MOC_HDRS ${MOC_HDRS} snorenotificationbackend.h)
     set(FORMS ${FORMS} snorentificationconfigwidget.ui)
   endif(HAVE_SNORENOTIFY)
   if(HAVE_PHONON)
     set(SOURCES ${SOURCES} phononnotificationbackend.cpp)
-    set(MOC_HDRS ${MOC_HDRS} phononnotificationbackend.h)
     set(FORMS ${FORMS} phononnotificationconfigwidget.ui)
     include_directories(${PHONON_INCLUDES})
   endif(HAVE_PHONON)
 endif(HAVE_KDE)
 
-if(HAVE_DBUS)
-  set(SOURCES ${SOURCES} statusnotifieritem.cpp statusnotifieritemdbus.cpp dockmanagernotificationbackend.cpp)
-  set(MOC_HDRS ${MOC_HDRS} statusnotifieritem.h statusnotifieritemdbus.h dockmanagernotificationbackend.h)
-  set(FORMS ${FORMS})
-  if(WITH_QT5)
-    qt5_add_dbus_interface(DBUS ../../interfaces/org.kde.StatusNotifierWatcher.xml statusnotifierwatcher)
-    qt5_add_dbus_interface(DBUS ../../interfaces/org.freedesktop.Notifications.xml notificationsclient)
-    qt5_add_dbus_adaptor(DBUS ../../interfaces/org.kde.StatusNotifierItem.xml statusnotifieritemdbus.h StatusNotifierItemDBus)
-  else(WITH_QT5)
-    qt4_add_dbus_interface(DBUS ../../interfaces/org.kde.StatusNotifierWatcher.xml statusnotifierwatcher)
-    qt4_add_dbus_interface(DBUS ../../interfaces/org.freedesktop.Notifications.xml notificationsclient)
-    qt4_add_dbus_adaptor(DBUS ../../interfaces/org.kde.StatusNotifierItem.xml statusnotifieritemdbus.h StatusNotifierItemDBus)
-  endif(WITH_QT5)
+if (HAVE_DBUS)
+    set(SOURCES ${SOURCES} statusnotifieritem.cpp statusnotifieritemdbus.cpp dockmanagernotificationbackend.cpp)
+    qt_add_dbus_interface(DBUS ../../interfaces/org.kde.StatusNotifierWatcher.xml statusnotifierwatcher)
+    qt_add_dbus_interface(DBUS ../../interfaces/org.freedesktop.Notifications.xml notificationsclient)
+    qt_add_dbus_adaptor(DBUS ../../interfaces/org.kde.StatusNotifierItem.xml statusnotifieritemdbus.h StatusNotifierItemDBus)
 endif(HAVE_DBUS)
 
 if(HAVE_SSL)
   set(SOURCES ${SOURCES} sslinfodlg.cpp)
-  set(MOC_HDRS ${MOC_HDRS} sslinfodlg.h)
   set(FORMS ${FORMS} sslinfodlg.ui)
 endif(HAVE_SSL)
 
 if(INDICATEQT_FOUND)
   set(SOURCES ${SOURCES} indicatornotificationbackend.cpp)
-  set(MOC_HDRS ${MOC_HDRS} indicatornotificationbackend.h)
   set(FORMS ${FORMS} indicatornotificationconfigwidget.ui)
   include_directories(${INDICATEQT_INCLUDE_DIRS})
 endif(INDICATEQT_FOUND)
 
 if(HAVE_NOTIFICATION_CENTER)
   set(SOURCES ${SOURCES} osxnotificationbackend.mm)
-  set(MOC_HDRS ${MOC_HDRS} osxnotificationbackend.h)
 endif()
 
 foreach(FORM ${FORMS})
@@ -203,15 +121,11 @@ endforeach(FORM ${FORMS})
 include(settingspages/settingspages.cmake)
 foreach(SP ${SETTINGSPAGES})
   set(SPSRC ${SPSRC} settingspages/${SP}settingspage.cpp)
-  set(SPHDR ${SPHDR} settingspages/${SP}settingspage.h)
   set(SPFRM ${SPFRM} settingspages/${SP}settingspage.ui)
 endforeach(SP ${SETTINGSPAGES})
 foreach(SRC ${SP_SOURCES})
   set(SPSRC ${SPSRC} settingspages/${SRC})
 endforeach(SRC ${SP_SOURCES})
-foreach(HDR ${SP_HEADERS})
-  set(SPHDR ${SPHDR} settingspages/${HDR})
-endforeach(HDR ${SP_HEADERS})
 foreach(FRM ${SP_FORMS})
   set(SPFRM ${SPFRM} settingspages/${FRM})
 endforeach(FRM ${SP_FORMS})
@@ -221,16 +135,24 @@ include_directories(${CMAKE_SOURCE_DIR}/src/common
                     ${CMAKE_SOURCE_DIR}/src/qtui
                     ${CMAKE_SOURCE_DIR}/src/qtui/settingspages
                     ${CMAKE_SOURCE_DIR}/src/uisupport
-                    ${CMAKE_CURRENT_BINARY_DIR}
-                    ${QUASSEL_QT_INCLUDES})
 
-if(WITH_QT5)
-  qt5_wrap_ui(UI ${FORMPATH} ${SPFRM})
-else(WITH_QT5)
-  qt4_wrap_cpp(MOC ${MOC_HDRS} ${SPHDR})
-  qt4_wrap_ui(UI ${FORMPATH} ${SPFRM})
-endif(WITH_QT5)
+)
+
+qt_wrap_ui(UI ${FORMPATH} ${SPFRM})
+
+if (WITH_QT5)
+    list(APPEND qt_modules Widgets)
+endif()
+
+if (HAVE_DBUS)
+    list(APPEND qt_modules DBus)
+endif()
+
+if (HAVE_WEBKIT)
+    list(APPEND qt_modules Webkit XmlPatterns)
+endif()
+
+add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${DBUS} ${UI})
+qt_use_modules(mod_qtui Core Gui Network ${qt_modules})
 
-add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${MOC} ${DBUS} ${UI} ${HEADERS})
 add_dependencies(mod_qtui mod_common mod_client mod_uisupport)
-set_target_properties(mod_qtui PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
index 000fea8..8f10023 100644 (file)
@@ -47,7 +47,7 @@ QString AboutDlg::about() const
 {
     QString res;
     res = tr("<b>A modern, distributed IRC Client</b><br><br>"
-             "&copy;2005-2014 by the Quassel Project<br>"
+             "&copy;%1 by the Quassel Project<br>"
              "<a href=\"http://quassel-irc.org\">http://quassel-irc.org</a><br>"
              "<a href=\"irc://irc.freenode.net/quassel\">#quassel</a> on <a href=\"http://www.freenode.net\">Freenode</a><br><br>"
              "Quassel IRC is dual-licensed under <a href=\"http://www.gnu.org/licenses/gpl-2.0.txt\">GPLv2</a> and "
@@ -55,7 +55,7 @@ QString AboutDlg::about() const
              "Most icons are &copy; by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> and used under the "
              "<a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>"
              "Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to report bugs."
-        );
+        ).arg("2005-2014");
 
     return res;
 }
@@ -89,6 +89,7 @@ QString AboutDlg::contributors() const
                               "<dt><b>Terje \"tan\" Andersen</b></dt><dd>Norwegian translation, documentation</dd>"
                               "<dt><b>Jens \"amiconn\" Arnold</b></dt><dd>Postgres migration fixes</dd>"
                               "<dt><b>Adolfo Jayme Barrientos</b></dt><dd>Spanish translation</dd>"
+                              "<dt><b>Pete \"elbeardmorez\" Beardmore</b></dt><dd>Linewrap for input line</dd>"
                               "<dt><b>Rafael \"EagleScreen\" Belmonte</b></dt><dd>Spanish translation</dd>"
                               "<dt><b>Sergiu Bivol</b></dt><dd>Romanian translation</dd>"
                               "<dt><b>Bruno Brigras</b></dt><dd>Crash fixes</dd>"
@@ -122,6 +123,7 @@ QString AboutDlg::contributors() const
                               "<dt><b>Chris \"Zren\" H</b></dt><dd>Various improvements</dd>"
                               "<dt><b>Edward Hades</b></dt><dd>Russian translation</dd>"
                               "<dt><b>John \"nox\" Hand</b></dt><dd>Former All-Seeing Eye logo</dd>"
+                              "<dt><b>Adam \"2kah\" Harwood</b></dt><dd>ChatView improvements</dd>"
                               "<dt><b>Jonas \"Dante\" Heese</b></dt><dd>Project founder, various improvements</dd>"
                               "<dt><b>Thomas \"Datafreak\" Hogh</b></dt><dd>Windows builder</dd>"
                               "<dt><b>Johannes \"j0hu\" Huber</b></dt><dd>Many fixes and features, bug triaging</dd>"
@@ -138,6 +140,7 @@ QString AboutDlg::contributors() const
                               "<dt><b>Jerome \"Adys\" Leclanche</b></dt><dd>Context menu fixes</dd>"
                               "<dt><b>Hendrik \"nevcairiel\" Leppkes</b></dt><dd>Various features</dd>"
                               "<dt><b>Jason Lynch</b></dt><dd>Bugfixes</dd>"
+                              "<dt><b>Awad \"firesock\" Mackie</b></dt><dd>ChatView improvements</dd>"
                               "<dt><b>Michael \"mamarley\" Marley</b></dt><dd>Various fixes and improvements</dd>"
                               "<dt><b>Martin \"m4yer\" Mayer</b></dt><dd>German translation</dd>"
                               "<dt><b>Daniel \"hydrogen\" Meltzer</b></dt><dd>Various fixes and improvements</dd>"
index c99c8ea..db0c889 100644 (file)
@@ -39,16 +39,22 @@ ChatMonitorFilter::ChatMonitorFilter(MessageModel *model, QObject *parent)
     QString showHighlightsSettingsId = "ShowHighlights";
     QString operationModeSettingsId = "OperationMode";
     QString buffersSettingsId = "Buffers";
+    QString showBacklogSettingsId = "ShowBacklog";
+    QString includeReadSettingsId = "IncludeRead";
 
     _showHighlights = viewSettings.value(showHighlightsSettingsId, false).toBool();
     _operationMode = viewSettings.value(operationModeSettingsId, 0).toInt();
     // read configured list of buffers to monitor/ignore
     foreach(QVariant v, viewSettings.value(buffersSettingsId, QVariant()).toList())
     _bufferIds << v.value<BufferId>();
+    _showBacklog = viewSettings.value(showBacklogSettingsId, true).toBool();
+    _includeRead = viewSettings.value(includeReadSettingsId, true).toBool();
 
     viewSettings.notify(showHighlightsSettingsId, this, SLOT(showHighlightsSettingChanged(const QVariant &)));
     viewSettings.notify(operationModeSettingsId, this, SLOT(operationModeSettingChanged(const QVariant &)));
     viewSettings.notify(buffersSettingsId, this, SLOT(buffersSettingChanged(const QVariant &)));
+    viewSettings.notify(showBacklogSettingsId, this, SLOT(showBacklogSettingChanged(const QVariant &)));
+    viewSettings.notify(includeReadSettingsId, this, SLOT(includeReadSettingChanged(const QVariant &)));
 }
 
 
@@ -57,17 +63,20 @@ bool ChatMonitorFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourc
     Q_UNUSED(sourceParent)
 
     QModelIndex source_index = sourceModel()->index(sourceRow, 0);
+    BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value<BufferId>();
 
     Message::Flags flags = (Message::Flags)source_index.data(MessageModel::FlagsRole).toInt();
-    if (flags & Message::Backlog || (!_showOwnMessages && flags & Message::Self))
+    if ((flags & Message::Backlog) && (!_showBacklog || (!_includeRead &&
+        (Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>()))))
+        return false;
+
+    if (!_showOwnMessages && flags & Message::Self)
         return false;
 
     Message::Type type = (Message::Type)source_index.data(MessageModel::TypeRole).toInt();
     if (!(type & (Message::Plain | Message::Notice | Message::Action)))
         return false;
 
-    BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value<BufferId>();
-
     // ChatMonitorSettingsPage
     if (_operationMode == ChatViewSettings::OptOut
         && !(_showHighlights && flags & Message::Highlight)
@@ -187,3 +196,11 @@ void ChatMonitorFilter::buffersSettingChanged(const QVariant &newValue)
     }
     invalidateFilter();
 }
+
+void ChatMonitorFilter::showBacklogSettingChanged(const QVariant &newValue) {
+    _showBacklog = newValue.toBool();
+}
+
+void ChatMonitorFilter::includeReadSettingChanged(const QVariant &newValue) {
+    _includeRead = newValue.toBool();
+}
index d66016b..945e401 100644 (file)
@@ -58,6 +58,8 @@ private slots:
     void showHighlightsSettingChanged(const QVariant &newValue);
     void operationModeSettingChanged(const QVariant &newValue);
     void buffersSettingChanged(const QVariant &newValue);
+    void showBacklogSettingChanged(const QVariant &newValue);
+    void includeReadSettingChanged(const QVariant &newValue);
 
 private:
     int _showFields;
@@ -65,6 +67,8 @@ private:
     QList<BufferId> _bufferIds;
     bool _showHighlights;
     int _operationMode;
+    bool _showBacklog;
+    bool _includeRead;
 };
 
 
index 2f927a7..4dfd813 100644 (file)
@@ -89,12 +89,12 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w
     connect(this, SIGNAL(sceneRectChanged(const QRectF &)), _markerLine, SLOT(sceneRectChanged(const QRectF &)));
 
     ChatViewSettings defaultSettings;
-    int defaultFirstColHandlePos = defaultSettings.value("FirstColumnHandlePos", 80).toInt();
-    int defaultSecondColHandlePos = defaultSettings.value("SecondColumnHandlePos", 200).toInt();
+    _defaultFirstColHandlePos = defaultSettings.value("FirstColumnHandlePos", 80).toInt();
+    _defaultSecondColHandlePos = defaultSettings.value("SecondColumnHandlePos", 200).toInt();
 
     ChatViewSettings viewSettings(this);
-    _firstColHandlePos = viewSettings.value("FirstColumnHandlePos", defaultFirstColHandlePos).toInt();
-    _secondColHandlePos = viewSettings.value("SecondColumnHandlePos", defaultSecondColHandlePos).toInt();
+    _firstColHandlePos = viewSettings.value("FirstColumnHandlePos", _defaultFirstColHandlePos).toInt();
+    _secondColHandlePos = viewSettings.value("SecondColumnHandlePos", _defaultSecondColHandlePos).toInt();
 
     _firstColHandle = new ColumnHandleItem(QtUi::style()->firstColumnSeparator());
     addItem(_firstColHandle);
@@ -159,6 +159,17 @@ ColumnHandleItem *ChatScene::secondColumnHandle() const
     return _secondColHandle;
 }
 
+void ChatScene::resetColumnWidths()
+{
+    //make sure first column is at least 80 px wide, second 120 px
+    int firstColHandlePos = qMax(_defaultFirstColHandlePos,
+                                 80);
+    int secondColHandlePos = qMax(_defaultSecondColHandlePos,
+                                  firstColHandlePos + 120);
+
+    _firstColHandle->setXPos(firstColHandlePos);
+    _secondColHandle->setXPos(secondColHandlePos);
+}
 
 ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange) const
 {
@@ -818,7 +829,7 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
 
         QString searchSelectionText = selection();
         if (searchSelectionText.length() > _webSearchSelectionTextMaxVisible)
-            searchSelectionText = searchSelectionText.left(_webSearchSelectionTextMaxVisible).append(QString::fromUtf8("\u2026"));
+            searchSelectionText = searchSelectionText.left(_webSearchSelectionTextMaxVisible).append(QString::fromUtf8(""));
         searchSelectionText = tr("Search '%1'").arg(searchSelectionText);
 
         menu.addAction(SmallIcon("edit-find"), searchSelectionText, this, SLOT(webSearchOnSelection()));
@@ -827,6 +838,11 @@ void ChatScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
     if (QtUi::mainWindow()->menuBar()->isHidden())
         menu.addAction(QtUi::actionCollection("General")->action("ToggleMenuBar"));
 
+    // show column reset action if columns have been resized in this session or there is at least one very narrow column
+    if ((_firstColHandlePos != _defaultFirstColHandlePos) || (_secondColHandlePos != _defaultSecondColHandlePos) ||
+        (_firstColHandlePos <= 10) || (_secondColHandlePos - _firstColHandlePos <= 10))
+        menu.addAction(new Action(tr("Reset Column Widths"), &menu, this, SLOT(resetColumnWidths()), 0));
+
     menu.exec(event->screenPos());
 }
 
index c640b6a..d8c4db9 100644 (file)
@@ -130,6 +130,8 @@ public slots:
     void setWidth(qreal width);
     void layout(int start, int end, qreal width);
 
+    void resetColumnWidths();
+
     void setMarkerLineVisible(bool visible = true);
     void setMarkerLine(MsgId msgId = MsgId());
     void jumpToMarkerLine(bool requestBacklog);
@@ -206,6 +208,7 @@ private:
 
     ColumnHandleItem *_firstColHandle, *_secondColHandle;
     qreal _firstColHandlePos, _secondColHandlePos;
+    int _defaultFirstColHandlePos, _defaultSecondColHandlePos;
     CutoffMode _cutoffMode;
 
     ChatItem *_selectingItem;
index 916748a..e67c7a1 100644 (file)
@@ -58,6 +58,7 @@ void ColumnHandleItem::setXPos(qreal xpos)
     QRectF sceneBRect = _boundingRect.translated(x(), 0);
     _sceneLeft = sceneBRect.left();
     _sceneRight = sceneBRect.right();
+    emit positionChanged(xpos);
 }
 
 
index 5f5f0a0..bbdbc12 100644 (file)
@@ -123,6 +123,9 @@ InputWidget::InputWidget(QWidget *parent)
     s.notify("EnableScrollBars", this, SLOT(setScrollBarsEnabled(QVariant)));
     setScrollBarsEnabled(s.value("EnableScrollBars", true));
 
+    s.notify("EnableLineWrap", this, SLOT(setLineWrapEnabled(QVariant)));
+    setLineWrapEnabled(s.value("EnableLineWrap", false));
+
     s.notify("EnableMultiLine", this, SLOT(setMultiLineEnabled(QVariant)));
     setMultiLineEnabled(s.value("EnableMultiLine", true));
 
@@ -210,6 +213,12 @@ void InputWidget::setScrollBarsEnabled(const QVariant &v)
 }
 
 
+void InputWidget::setLineWrapEnabled(const QVariant &v)
+{
+    ui.inputEdit->setLineWrapEnabled(v.toBool());
+}
+
+
 void InputWidget::setMultiLineEnabled(const QVariant &v)
 {
     ui.inputEdit->setMode(v.toBool() ? MultiLineEdit::MultiLine : MultiLineEdit::SingleLine);
index 2730605..f6bdf2e 100644 (file)
@@ -61,6 +61,7 @@ private slots:
     void setShowStyleButtons(const QVariant &);
     void setEnablePerChatHistory(const QVariant &);
     void setMaxLines(const QVariant &);
+    void setLineWrapEnabled(const QVariant &);
     void setMultiLineEnabled(const QVariant &);
     void setScrollBarsEnabled(const QVariant &);
     void onTextEntered(const QString &text);
index 043445b..3207075 100644 (file)
@@ -39,6 +39,10 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
     _bufferViewHint(0)
 {
     ui.setupUi(this);
+    //Hide the hide inactive networks feature on older cores (which won't save the setting)
+    if (!(Client::coreFeatures() & Quassel::HideInactiveNetworks))
+        ui.hideInactiveNetworks->hide();
+
     ui.renameBufferView->setIcon(SmallIcon("edit-rename"));
     ui.addBufferView->setIcon(SmallIcon("list-add"));
     ui.deleteBufferView->setIcon(SmallIcon("edit-delete"));
@@ -60,6 +64,7 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
     connect(ui.addNewBuffersAutomatically, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
     connect(ui.sortAlphabetically, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
     connect(ui.hideInactiveBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+    connect(ui.hideInactiveNetworks, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
     connect(ui.networkSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
     connect(ui.minimumActivitySelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
 
@@ -435,6 +440,7 @@ void BufferViewSettingsPage::loadConfig(BufferViewConfig *config)
     ui.addNewBuffersAutomatically->setChecked(config->addNewBuffersAutomatically());
     ui.sortAlphabetically->setChecked(config->sortAlphabetically());
     ui.hideInactiveBuffers->setChecked(config->hideInactiveBuffers());
+    ui.hideInactiveNetworks->setChecked(config->hideInactiveNetworks());
 
     int networkIndex = 0;
     for (int i = 0; i < ui.networkSelector->count(); i++) {
@@ -476,6 +482,7 @@ void BufferViewSettingsPage::saveConfig(BufferViewConfig *config)
     config->setAddNewBuffersAutomatically(ui.addNewBuffersAutomatically->isChecked());
     config->setSortAlphabetically(ui.sortAlphabetically->isChecked());
     config->setHideInactiveBuffers(ui.hideInactiveBuffers->isChecked());
+    config->setHideInactiveNetworks(ui.hideInactiveNetworks->isChecked());
     config->setNetworkId(ui.networkSelector->itemData(ui.networkSelector->currentIndex()).value<NetworkId>());
 
     int minimumActivity = 0;
index 6ec07d6..30b0907 100644 (file)
@@ -136,6 +136,13 @@ In this mode no separate status buffer is displayed.</string>
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QCheckBox" name="hideInactiveNetworks">
+        <property name="text">
+         <string>Hide inactive networks</string>
+        </property>
+       </widget>
+      </item>
       <item>
        <widget class="QCheckBox" name="addNewBuffersAutomatically">
         <property name="text">
index d16342b..535c987 100644 (file)
@@ -63,6 +63,8 @@ ChatMonitorSettingsPage::ChatMonitorSettingsPage(QWidget *parent)
     connect(ui.operationMode, SIGNAL(currentIndexChanged(int)), SLOT(switchOperationMode(int)));
     connect(ui.showHighlights, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
     connect(ui.showOwnMessages, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
+    connect(ui.showBacklog, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
+    connect(ui.includeRead, SIGNAL(toggled(bool)), SLOT(widgetHasChanged()));
 }
 
 
@@ -79,6 +81,8 @@ void ChatMonitorSettingsPage::defaults()
     settings["ShowOwnMsgs"] = false;
     settings["Buffers"] = QVariant();
     settings["Default"] = true;
+    settings["ShowBacklog"] = true;
+    settings["IncludeRead"] = false;
     load();
     widgetHasChanged();
 }
@@ -95,6 +99,8 @@ void ChatMonitorSettingsPage::load()
     ui.operationMode->setCurrentIndex(settings["OperationMode"].toInt() - 1);
     ui.showHighlights->setChecked(settings["ShowHighlights"].toBool());
     ui.showOwnMessages->setChecked(settings["ShowOwnMsgs"].toBool());
+    ui.showBacklog->setChecked(settings["ShowBacklog"].toBool());
+    ui.includeRead->setChecked(settings["IncludeRead"].toBool());
 
     // get all available buffer Ids
     QList<BufferId> allBufferIds = Client::networkModel()->allBufferIds();
@@ -127,6 +133,8 @@ void ChatMonitorSettingsPage::loadSettings()
     settings["ShowHighlights"] = chatViewSettings.value("ShowHighlights", false);
     settings["ShowOwnMsgs"] = chatViewSettings.value("ShowOwnMsgs", false);
     settings["Buffers"] = chatViewSettings.value("Buffers", QVariantList());
+    settings["ShowBacklog"] = chatViewSettings.value("ShowBacklog", true);
+    settings["IncludeRead"] = chatViewSettings.value("IncludeRead", true);
 }
 
 
@@ -137,6 +145,8 @@ void ChatMonitorSettingsPage::save()
     chatViewSettings.setValue("OperationMode", ui.operationMode->currentIndex() + 1);
     chatViewSettings.setValue("ShowHighlights", ui.showHighlights->isChecked());
     chatViewSettings.setValue("ShowOwnMsgs", ui.showOwnMessages->isChecked());
+    chatViewSettings.setValue("ShowBacklog", ui.showBacklog->isChecked());
+    chatViewSettings.setValue("IncludeRead", ui.includeRead->isChecked());
 
     // save list of active buffers
     QVariantList saveableBufferIdList;
@@ -165,6 +175,10 @@ bool ChatMonitorSettingsPage::testHasChanged()
         return true;
     if (settings["ShowOwnMsgs"].toBool() != ui.showOwnMessages->isChecked())
         return true;
+    if (settings["ShowBacklog"].toBool() != ui.showBacklog->isChecked())
+        return true;
+    if (settings["IncludeRead"].toBool() != ui.includeRead->isChecked())
+        return true;
 
     if (_configActive->bufferList().count() != settings["Buffers"].toList().count())
         return true;
index e69524a..2a98605 100644 (file)
@@ -158,6 +158,46 @@ p, li { white-space: pre-wrap; }
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="QCheckBox" name="showBacklog">
+     <property name="toolTip">
+      <string>Display messages from backlog on reconnect</string>
+     </property>
+     <property name="text">
+      <string>Show messages from backlog</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <spacer name="horizontalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>16</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="includeRead">
+       <property name="toolTip">
+        <string>Include read messages from backlog on reconnect</string>
+       </property>
+       <property name="text">
+        <string>Include read messages</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
   </layout>
  </widget>
  <customwidgets>
@@ -175,7 +215,16 @@ p, li { white-space: pre-wrap; }
   <tabstop>activeBuffers</tabstop>
   <tabstop>showHighlights</tabstop>
   <tabstop>showOwnMessages</tabstop>
+  <tabstop>showBacklog</tabstop>
+  <tabstop>includeRead</tabstop>
  </tabstops>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>showBacklog</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>includeRead</receiver>
+   <slot>setEnabled(bool)</slot>
+  </connection>
+ </connections>
 </ui>
index 84f042a..798073a 100644 (file)
@@ -43,7 +43,7 @@ public slots:
 
 private slots:
     void widgetHasChanged();
-    void addNewRow(QString name = tr("highlight rule"), bool regex = false, bool cs = true, bool enable = true, QString chanName = "", bool self = false);
+    void addNewRow(QString name = tr("highlight rule"), bool regex = false, bool cs = false, bool enable = true, QString chanName = "", bool self = false);
     void removeSelectedRows();
     void selectRow(QTableWidgetItem *item);
     void tableChanged(QTableWidgetItem *item);
index 41b2d05..b7415ec 100644 (file)
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="QCheckBox" name="enableLineWrapMode">
+     <property name="toolTip">
+      <string>Enables line wrapping for input.</string>
+     </property>
+     <property name="text">
+      <string>Line wrapping</string>
+     </property>
+     <property name="settingsKey" stdset="0">
+      <string notr="true">EnableLineWrap</string>
+     </property>
+     <property name="defaultValue" stdset="0">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
index 142f3d0..6f15075 100644 (file)
@@ -867,7 +867,6 @@ ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : Q
     ui.port->setValue(server.port);
     ui.password->setText(server.password);
     ui.useSSL->setChecked(server.useSsl);
-    ui.sslVersion->setCurrentIndex(server.sslVersion);
     ui.useProxy->setChecked(server.useProxy);
     ui.proxyType->setCurrentIndex(server.proxyType == QNetworkProxy::Socks5Proxy ? 0 : 1);
     ui.proxyHost->setText(server.proxyHost);
@@ -881,7 +880,6 @@ ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : Q
 Network::Server ServerEditDlg::serverData() const
 {
     Network::Server server(ui.host->text().trimmed(), ui.port->value(), ui.password->text(), ui.useSSL->isChecked());
-    server.sslVersion = ui.sslVersion->currentIndex();
     server.useProxy = ui.useProxy->isChecked();
     server.proxyType = ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy;
     server.proxyHost = ui.proxyHost->text();
diff --git a/src/qtui/settingspages/previewbufferview.cpp b/src/qtui/settingspages/previewbufferview.cpp
deleted file mode 100644 (file)
index 2db98a1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#include "previewbufferview.h"
-
-// this file is needed to make automoc work
index da9f7a5..d16d1e4 100644 (file)
        <string>Advanced</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_2">
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout">
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="QLabel" name="label_3">
-           <property name="text">
-            <string>SSL Version:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QComboBox" name="sslVersion">
-           <property name="toolTip">
-            <string>Do not change unless you're going to connect to a server not supporting SSLv3!</string>
-           </property>
-           <item>
-            <property name="text">
-             <string>SSLv3 (default)</string>
-            </property>
-           </item>
-           <item>
-            <property name="text">
-             <string>SSLv2</string>
-            </property>
-           </item>
-           <item>
-            <property name="text">
-             <string>TLSv1</string>
-            </property>
-           </item>
-          </widget>
-         </item>
-        </layout>
-       </item>
        <item>
         <widget class="QGroupBox" name="useProxy">
          <property name="title">
   <tabstop>port</tabstop>
   <tabstop>password</tabstop>
   <tabstop>useSSL</tabstop>
-  <tabstop>sslVersion</tabstop>
   <tabstop>useProxy</tabstop>
   <tabstop>proxyType</tabstop>
   <tabstop>proxyHost</tabstop>
index 6fe4020..5b7ca52 100644 (file)
@@ -1,17 +1,50 @@
 # Putting $FOO in SETTINGSPAGES automatically includes
 # $FOOsettingspage.cpp, $FOOsettingspage.h and $FOOsettingspage.ui
 
-set(SETTINGSPAGES aliases appearance backlog bufferview chatview connection coreconnection chatmonitor coreaccount
-                  highlight identities ignorelist inputwidget itemview networks topicwidget)
+set(SETTINGSPAGES
+    aliases
+    appearance
+    backlog
+    bufferview
+    chatmonitor
+    chatview
+    connection
+    coreconnection
+    coreaccount
+    highlight
+    identities
+    ignorelist
+    inputwidget
+    itemview
+    networks
+    topicwidget
+)
 
 # Specify additional files (e.g. for subdialogs) here!
-set(SP_SOURCES aliasesmodel.cpp identityeditwidget.cpp ignorelistmodel.cpp notificationssettingspage.cpp previewbufferview.cpp)
-set(SP_HEADERS aliasesmodel.h identityeditwidget.h ignorelistmodel.h notificationssettingspage.h previewbufferview.h)
-set(SP_FORMS buffervieweditdlg.ui coreaccounteditdlg.ui createidentitydlg.ui identityeditwidget.ui ignorelisteditdlg.ui saveidentitiesdlg.ui 
-             networkadddlg.ui networkeditdlg.ui nickeditdlg.ui servereditdlg.ui)
+set(SP_SOURCES
+    aliasesmodel.cpp
+    identityeditwidget.cpp
+    ignorelistmodel.cpp
+    notificationssettingspage.cpp
+
+    # needed for automoc
+    previewbufferview.h
+)
+
+set(SP_FORMS
+    buffervieweditdlg.ui
+    coreaccounteditdlg.ui
+    createidentitydlg.ui
+    identityeditwidget.ui
+    ignorelisteditdlg.ui
+    networkadddlg.ui
+    networkeditdlg.ui
+    nickeditdlg.ui
+    saveidentitiesdlg.ui
+    servereditdlg.ui
+)
 
 if(NOT HAVE_KDE)
   set(SETTINGSPAGES ${SETTINGSPAGES} shortcuts)
   set(SP_SOURCES ${SP_SOURCES} keysequencewidget.cpp shortcutsmodel.cpp)
-  set(SP_HEADERS ${SP_HEADERS} keysequencewidget.h shortcutsmodel.h)
 endif(NOT HAVE_KDE)
index ee92875..3612bb0 100644 (file)
@@ -37,7 +37,7 @@
 
 
 SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent)
-    :AbstractNotificationBackend(parent),
+    : AbstractNotificationBackend(parent),
       m_systrayBackend(NULL)
 {
     NotificationSettings notificationSettings;
@@ -45,22 +45,22 @@ SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent)
     m_timeout = notificationSettings.value("Snore/Timeout", 10).toInt();
 
     notificationSettings.notify("Snore/Backend", this, SLOT(backendChanged(const QVariant &)));
-    notificationSettings.notify("Snore/Backend", this, SLOT(timeoutChanged(const QVariant &)));
+    notificationSettings.notify("Snore/Timeout", this, SLOT(timeoutChanged(const QVariant &)));
 
     //TODO: try to get an instance of the tray icon to be able to show popups
     m_snore = new Snore::SnoreCore();
-    m_snore->hints().setValue("WINDOWS_APP_ID","QuasselProject.QuasselIRC");
-    m_snore->loadPlugins(Snore::PluginContainer::BACKEND);
-    Snore::Application *a = new Snore::Application("Quassel", Snore::Icon(DesktopIcon("quassel").toImage()));
+    m_snore->loadPlugins(Snore::SnorePlugin::BACKEND);
+    m_icon = Snore::Icon(DesktopIcon("quassel").toImage());
+    m_application = Snore::Application("Quassel", m_icon);
+    m_application.hints().setValue("WINDOWS_APP_ID","QuasselProject.QuasselIRC");
 
     connect(m_snore, SIGNAL(actionInvoked(Snore::Notification)), this, SLOT(actionInvoked(Snore::Notification)));
 
-    m_icon = Snore::Icon(DesktopIcon("dialog-information").toImage());
 
-    a->addAlert(new Snore::Alert(tr("Private Message"), tr("Private Message")));
+    m_alert = Snore::Alert(tr("Private Message"), m_icon);
+    m_application.addAlert(m_alert);
 
-    m_snore->addApplication(a);
-    m_snore->applicationIsInitialized (a);
+    m_snore->registerApplication(m_application);
 
     backendChanged(QVariant::fromValue(backend));
 
@@ -69,19 +69,14 @@ SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent)
 
 SnoreNotificationBackend::~SnoreNotificationBackend()
 {
-    m_snore->removeApplication("Quassel");
+    m_snore->deregisterApplication(m_application);
     m_snore->deleteLater();
 }
 
 void SnoreNotificationBackend::backendChanged(const QVariant &v)
 {
     QString backend = v.toString();
-    if (backend == "Default") {
-        if (m_snore->setPrimaryNotificationBackend()) {//try to find the default backend for the platform
-            return;
-        }
-    }
-    else if (backend != "SystemTray") {
+    if (backend != "Default") {
         if (setSnoreBackend(backend)) {
             return;
         }
@@ -101,7 +96,7 @@ void SnoreNotificationBackend::notify(const Notification &n)
     }
     QString title = Client::networkModel()->networkName(n.bufferId) + " - " + Client::networkModel()->bufferName(n.bufferId);
     QString message = QString("<%1> %2").arg(n.sender, n.message);
-    Snore::Notification noti("Quassel", tr("Private Message"), title, message, m_icon, m_timeout);
+    Snore::Notification noti(m_application, m_alert, title, message, m_icon, m_timeout);
     noti.hints().setValue("QUASSEL_ID", n.notificationId);
     m_notificationIds.insert(n.notificationId, noti.id());
     m_snore->broadcastNotification(noti);
@@ -113,7 +108,7 @@ void SnoreNotificationBackend::close(uint notificationId)
         return;
     }
     Snore::Notification n = m_snore->getActiveNotificationByID(m_notificationIds.take(notificationId));
-    m_snore->requestCloseNotification(n, Snore::NotificationEnums::CloseReasons::CLOSED);
+    m_snore->requestCloseNotification(n, Snore::Notification::CLOSED);
 }
 
 void SnoreNotificationBackend::actionInvoked(Snore::Notification n)
@@ -154,8 +149,10 @@ SnoreNotificationBackend::ConfigWidget::ConfigWidget(Snore::SnoreCore *snore, QW
       m_snore(snore)
 {
     ui.setupUi(this);
-    ui.backends->insertItem(0, "Default");
-    ui.backends->insertItems(1, m_snore->notificationBackends());
+    QStringList backends = m_snore->notificationBackends();
+    backends.append("Default");
+    qSort(backends);
+    ui.backends->insertItems(0, backends);
 
     connect(ui.backends, SIGNAL(currentIndexChanged(QString)), SLOT(backendChanged(QString)));
     connect(ui.timeout, SIGNAL(valueChanged(int)), this, SLOT(timeoutChanged(int)));
@@ -188,10 +185,7 @@ void SnoreNotificationBackend::ConfigWidget::defaults()
 void SnoreNotificationBackend::ConfigWidget::load()
 {
     NotificationSettings s;
-    QString backend = m_snore->primaryNotificationBackend();
-    if (backend.isEmpty()) {
-        backend = "SystemTray";
-    }
+    QString backend = s.value("Snore/Backend", "Default").toString();
     int timeout = s.value("Snore/Timeout", 10).toInt();
     ui.backends->setCurrentIndex(ui.backends->findText(backend));
     ui.timeout->setValue(timeout);
index ec193cb..fa57adc 100644 (file)
 
 #include "ui_snorentificationconfigwidget.h"
 
-namespace Snore{
-class SnoreCore;
-class Icon;
-}
-class SystrayNotificationBackend;
-
+#include <snore/core/snore.h>
 #include <snore/core/notification/notification.h>
 
+class SystrayNotificationBackend;
+
 class SnoreNotificationBackend : public AbstractNotificationBackend {
     Q_OBJECT
 public:
@@ -64,6 +61,8 @@ private:
     Snore::SnoreCore *m_snore;
     QHash<uint, uint> m_notificationIds;
     Snore::Icon m_icon;
+    Snore::Application m_application;
+    Snore::Alert m_alert;
     int m_timeout;
 };
 
index 2df4fac..ed02936 100644 (file)
@@ -32,7 +32,7 @@ TopicWidget::TopicWidget(QWidget *parent)
 {
     ui.setupUi(this);
     ui.topicEditButton->setIcon(SmallIcon("edit-rename"));
-    ui.topicLineEdit->setWordWrapEnabled(true);
+    ui.topicLineEdit->setLineWrapEnabled(true);
     ui.topicLineEdit->installEventFilter(this);
 
     connect(ui.topicLabel, SIGNAL(clickableActivated(Clickable)), SLOT(clickableActivated(Clickable)));
index 85dec7e..72e14db 100644 (file)
@@ -72,10 +72,7 @@ p, li { white-space: pre-wrap; }
              <font/>
             </property>
             <property name="text">
-             <string>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'DejaVu Sans'; font-size:10pt; font-weight:600; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Version 0.2.0-pre, Build &amp;gt;= 474 (2008-02-08)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+             <string notr="true"/>
             </property>
             <property name="openExternalLinks">
              <bool>true</bool>
index d5032cd..99bb553 100644 (file)
@@ -36,6 +36,7 @@ WebPreviewItem::WebPreviewItem(const QUrl &url)
     QWebView *webView = new QWebView;
     webView->settings()->setAttribute(QWebSettings::JavascriptEnabled, false);
     webView->load(url);
+    webView->setDisabled(true);
     webView->resize(1000, 750);
     QGraphicsProxyWidget *proxyItem = new QGraphicsProxyWidget(this);
     proxyItem->setWidget(webView);
index f3b7cad..0505d92 100644 (file)
@@ -1,15 +1,8 @@
 # Builds the uisupport module
 
-if(WITH_QT5)
-  setup_qt_variables(Widgets Network)
-else(WITH_QT5)
-  setup_qt_variables(Gui Network)
-endif(WITH_QT5)
-
 set(SOURCES
     abstractbuffercontainer.cpp
     abstractitemview.cpp
-    abstractnotificationbackend.cpp
     action.cpp
     actioncollection.cpp
     bufferhotlistfilter.cpp
@@ -38,62 +31,28 @@ set(SOURCES
     toolbaractionprovider.cpp
     uisettings.cpp
     uistyle.cpp
-   )
 
-set(MOC_HDRS
-    abstractbuffercontainer.h
-    abstractitemview.h
+    # needed for automoc
     abstractnotificationbackend.h
-    action.h
-    actioncollection.h
-    bufferhotlistfilter.h
-    bufferview.h
-    bufferviewfilter.h
-    bufferviewoverlayfilter.h
-    clearablelineedit.h
-    clickablelabel.h
-    colorbutton.h
-    contextmenuactionprovider.h
-    flatproxymodel.h
-    fontselector.h
-    graphicalui.h
-    iconloader.h
-    multilineedit.h
-    networkmodelcontroller.h
-    nickview.h
-    nickviewfilter.h
-    resizingstackedwidget.h
-    settingspage.h
-    styledlabel.h
-    tabcompleter.h
-    toolbaractionprovider.h
-    uistyle.h
-   )
-
-set(HEADERS
-    clickable.h
-    icon.h
-    qssparser.h
-    uisettings.h
-   )
+)
 
 if(HAVE_KDE)
     set(SOURCES ${SOURCES} kcmdlinewrapper.cpp)
-    set(HEADERS ${HEADERS} kcmdlinewrapper.h)
 endif(HAVE_KDE)
 
 include_directories(${CMAKE_SOURCE_DIR}/src/common
                     ${CMAKE_SOURCE_DIR}/src/client
-                    ${QUASSEL_QT_INCLUDES})
+)
 
 if(HAVE_QCA2)
   include_directories(${QCA2_INCLUDE_DIR})
 endif(HAVE_QCA2)
 
-if(NOT WITH_QT5)
-  qt4_wrap_cpp(MOC ${MOC_HDRS})
-endif(NOT WITH_QT5)
+if (WITH_QT5)
+    list(APPEND qt_modules Widgets)
+endif()
+
+add_library(mod_uisupport STATIC ${SOURCES})
+qt_use_modules(mod_uisupport Core Gui Network ${qt_modules})
 
-add_library(mod_uisupport STATIC ${SOURCES} ${MOC} ${HEADERS})
 add_dependencies(mod_uisupport mod_common mod_client)
-set_target_properties(mod_uisupport PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_COMPILEFLAGS}")
diff --git a/src/uisupport/abstractnotificationbackend.cpp b/src/uisupport/abstractnotificationbackend.cpp
deleted file mode 100644 (file)
index 44e6c52..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
- *   devel@quassel-irc.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) version 3.                                           *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
- ***************************************************************************/
-
-#include "abstractnotificationbackend.h"
-
-// this file is needed to make automoc work
index 0850a50..2720fd1 100644 (file)
@@ -377,6 +377,10 @@ bool BufferViewFilter::filterAcceptNetwork(const QModelIndex &source_index) cons
     if (!config())
         return true;
 
+    if (config()->hideInactiveNetworks() && !(sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool())) {
+        return false;
+    }
+
     if (!config()->networkId().isValid()) {
         return true;
     }
index 7acd8e2..3b32f26 100644 (file)
@@ -55,7 +55,7 @@ ClickableList ClickableList::fromString(const QString &str)
     // For matching URLs
     static QString scheme("(?:(?:mailto:|(?:[+.-]?\\w)+://)|www(?=\\.\\S+\\.))");
     static QString authority("(?:(?:[,.;@:]?[-\\w]+)+\\.?|\\[[0-9a-f:.]+\\])(?::\\d+)?");
-    static QString urlChars("(?:[,.;:]*[\\w~@/?&=+$()!%#*{}\\[\\]\\|'^-])");
+    static QString urlChars("(?:[,.;:]*[\\w~@/?&=+$()!%#*-])");
     static QString urlEnd("(?:>|[,.;:\"]*\\s|\\b|$)");
 
     static QRegExp regExp[] = {
index fa9eddf..54558b5 100644 (file)
@@ -53,7 +53,7 @@ MultiLineEdit::MultiLineEdit(QWidget *parent)
 #endif
 
     setMode(SingleLine);
-    setWordWrapEnabled(false);
+    setLineWrapEnabled(false);
     reset();
 
     connect(this, SIGNAL(textChanged()), this, SLOT(on_textChanged()));
@@ -98,6 +98,13 @@ void MultiLineEdit::setMode(Mode mode)
 }
 
 
+void MultiLineEdit::setLineWrapEnabled(bool enable)
+{
+    setLineWrapMode(enable ? WidgetWidth : NoWrap);
+    updateSizeHint();
+}
+
+
 void MultiLineEdit::setMinHeight(int lines)
 {
     if (lines == _minHeight)
@@ -207,13 +214,6 @@ void MultiLineEdit::setSpellCheckEnabled(bool enable)
 }
 
 
-void MultiLineEdit::setWordWrapEnabled(bool enable)
-{
-    setLineWrapMode(enable ? WidgetWidth : NoWrap);
-    updateSizeHint();
-}
-
-
 void MultiLineEdit::setPasteProtectionEnabled(bool enable, QWidget *)
 {
     _pasteProtectionEnabled = enable;
index d02c6cf..899cc07 100644 (file)
@@ -81,9 +81,7 @@ public slots:
     void setScrollBarsEnabled(bool enable = true);
     void setSpellCheckEnabled(bool enable = true);
     void setPasteProtectionEnabled(bool enable = true, QWidget *msgBoxParent = 0);
-
-    // Note: Enabling wrap will make isSingleLine() not work correctly, so only use this if minHeight() > 1!
-    void setWordWrapEnabled(bool enable = true);
+    void setLineWrapEnabled(bool enable = false);
 
     inline void setHistory(QStringList history) { _history = history; }
     inline void setTempHistory(QHash<int, QString> tempHistory) { _tempHistory = tempHistory; }
index 0e00d51..8228b8f 100644 (file)
@@ -491,12 +491,16 @@ QList<QTextLayout::FormatRange> UiStyle::toTextLayoutList(const FormatList &form
 UiStyle::StyledString UiStyle::styleString(const QString &s_, quint32 baseFormat)
 {
     QString s = s_;
+    StyledString result;
+    result.formatList.append(qMakePair((quint16)0, baseFormat));
+
     if (s.length() > 65535) {
+        // We use quint16 for indexes
         qWarning() << QString("String too long to be styled: %1").arg(s);
-        return StyledString();
+        result.plainText = s;
+        return result;
     }
-    StyledString result;
-    result.formatList.append(qMakePair((quint16)0, baseFormat));
+
     quint32 curfmt = baseFormat;
     int pos = 0; quint16 length = 0;
     for (;;) {
diff --git a/version.h.in b/version.h.in
new file mode 100644 (file)
index 0000000..2cd1232
--- /dev/null
@@ -0,0 +1,13 @@
+// Version information
+#define QUASSEL_MAJOR @QUASSEL_MAJOR@
+#define QUASSEL_MINOR @QUASSEL_MINOR@
+#define QUASSEL_PATCH @QUASSEL_PATCH@
+#define QUASSEL_VERSION_STRING "@QUASSEL_VERSION_STRING@"
+
+// Determined from Git
+#define GIT_HEAD "@GIT_HEAD@"
+#define GIT_DESCRIBE "@GIT_DESCRIBE@"
+
+// Will be substituted in official tarballs
+#define DIST_HASH "$Format:%H$"
+#define DIST_DATE "$Format:%at$"
diff --git a/version.inc b/version.inc
deleted file mode 100644 (file)
index 13b97d6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-//! This is the fallback version number in case we can't autogenerate one
-baseVersion = "0.10-pre";
-
-protocolVersion = 10;       //< Version of the client/core protocol
-coreNeedsProtocol   = 10;   //< Minimum protocol version the core needs
-clientNeedsProtocol = 10;   //< Minimum protocol version the client needs
-
-distCommittish = $Format:%H$
-distCommitDate = $Format:%at$