Only create the regular expression for content/sender matches once.
-version.inc export-subst
+version.h.in export-subst
icons/oxygen_quassel export-ignore
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
--- /dev/null
+/* 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, ¢ral_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
# 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
# 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)
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)
# 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")
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)
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
/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
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})
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)
==========================
+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:
--- /dev/null
+# - 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)
# 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
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})
--- /dev/null
+# 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)
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}
--- /dev/null
+# - 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()
--- /dev/null
+#
+# 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()
--- /dev/null
+# 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()
--- /dev/null
+# 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)
--- /dev/null
+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.
+++ /dev/null
-# - 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)
+++ /dev/null
-# - 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)
-
+++ /dev/null
-# 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)
+++ /dev/null
-# - 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:
+++ /dev/null
-# 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)
+++ /dev/null
-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!
-#!/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
#### 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=''
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
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'
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'
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)
# 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
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'
### 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
########################################################################
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
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
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
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..."
}
#### -------------------------------------------------------------------
-#### 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.
# 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
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
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:
}
# No args taken.
-check_script_suggested_apps()
+check_recommended_apps()
{
eval $LOGFS
local bash_array_test=( "one" "two" )
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'
# 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
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
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
}
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
#### -------------------------------------------------------------------
# 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
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."
;;
# 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
}
# 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"
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
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
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
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=$?
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
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
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...'
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
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
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'
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."
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}' )
# 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
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
/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
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
{
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
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
}
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
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'
;;
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'
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'
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'
;;
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'
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
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'
;;
debug_data_type='all'
;;
esac
- initialize_script_data
+ initialize_data
debug_data_collector $debug_data_type
;;
esac
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"
;;
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
}
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
}
########################################################################
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
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'
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)
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
}
# 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
}
if (drivers[i] != "") {
useDrivers=drivers[i]
}
- else if ( alsaDriver != "" ) {
- useDrivers=alsaDriver
+ else if ( audioDriver != "" ) {
+ useDrivers=audioDriver
}
}
if (ports[i] != "") {
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
}
version=$NF
print alsa "," version
- }' $FILE_ASOUND_VERSION
- ) )
+ }' $FILE_ASOUND_VERSION ) )
IFS="$ORIGINAL_IFS"
log_function_data 'cat' "$FILE_ASOUND_VERSION"
fi
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+:/ {
gsub(/^ +| +$/, "", $NF)
gsub(/ [ \t]+/, " ", $NF)
cpu[nr, "model"] = $NF
+ if ( $NF ~ "^ARM" ) {
+ bArm = "true"
+ }
}
/^cpu MHz|^clock\t+:/ {
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/ {
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 '
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
}
## 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"
# 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}' )
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
}
# 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 )"
;;
}
/'$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" )
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}"
# 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
# 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 {
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
## 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
}
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
}
END {
print gpuTemp
- }'
- )
+ }' )
screen_nu=$( cut -d ':' -f 2 <<< $screen_nu )
gpu_temp="$gpu_temp$screen_nu:$gpu_temp_looper "
done
}
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
}
END {
print gpuTemp
- }' <<< "$Sensors_Data"
- )
+ }' <<< "$Sensors_Data" )
fi
if [[ -n $gpu_temp ]];then
local i='' temp_array=''
IFS=$'\n'
- A_GFX_CARD_DATA=( $( gawk -F': ' '
+ A_GRAPHICS_CARD_DATA=( $( gawk -F': ' '
BEGIN {
IGNORECASE=1
busId=""
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
}
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
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
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"
{
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.
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 )"
}' <<< "$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=""
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
x_data="$( Xorg -version 2>&1)"
fi
if [[ -n $x_data ]];then
- x_version=$(
+ version=$(
gawk '
BEGIN {
IGNORECASE=1
/^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
}
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 {
# 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
}
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[@]}
## 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
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()
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
}
{
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
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'
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:/ {
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"
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)
usePorts=""
useModules=""
usePciBusId=""
+
if ( eth[i] > 1 ) {
a[j] = eth[i] "x " i
}
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
{
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++ ))
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
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
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
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[@]}
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"
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
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=""
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" ) {
}
j++
}
- }' <<< "$ip_tool_data"
- ) )
+ }' <<< "$ip_tool_data" ) )
IFS="$ORIGINAL_IFS"
else
A_INTERFACES_DATA=( "Interfaces program $ip_tool present but created no 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
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
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
{
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"
# $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
# 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.
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
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++ ))
# 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 '
}
}
print partition "," label "," uuid
+ exit
}' $FILE_MOUNTS )
# assemble everything we could get for dev/h/dx, label, and uuid
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
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
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
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
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
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=""
# 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
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 '
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
}
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
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"
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
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
}
# 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
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
#### -------------------------------------------------------------------
# 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
}
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 "
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"
}
}
}
print flag_string
- }'
- )
+ }' <<< "$cpu_flags_working" )
#grep -oE '\<(nx|lm|sse[0-9]?|pni|svm|vmx)\>' | tr '\n' ' '))
if [[ -z $cpu_flags ]];then
{
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
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
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 )"
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
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
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
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
{
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.
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_,
# 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
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
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]}" )
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]}"
# 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 '
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
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
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
}
{
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
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
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
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
{
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
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
}
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:
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
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
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=''
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.
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
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=''
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
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
{
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
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'
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
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
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
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
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.
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'
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++ ))
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} "
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"
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
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"
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
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
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
########################################################################
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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ý ©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ží © <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ý ©%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ží © <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|"
"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-"
msgid "Configure..."
msgstr "Nastavit..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Kopírovat označené"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Konfigurer..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Kopier valgte"
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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:66
msgctxt "ContextMenuActionProvider|"
msgid "Client info"
-msgstr ""
+msgstr "Klient stil:"
#: ../src/uisupport/contextmenuactionprovider.cpp:67
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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
#
# 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
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Konfigurieren..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Auswahl kopieren"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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>Οι περισσότερες εικόνες είναι © από την <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>©%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>Οι περισσότερες εικόνες είναι © από την <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|"
"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-"
msgid "Configure..."
msgstr "Ρυθμίσεις..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Αντιγραφή Επιλογής"
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|"
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"
"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 "Αδύνατη η εύρεση συνεδρίας για τον πελάτη:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 "Μετονομασία Ταυτότητας"
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\"!"
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 ""
"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 "Σφάλμα Σύνδεσης Πυρήνα"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr "Ένα έγκυρο ψευδώνυμο μπορεί να περιέχει γράμματα της αγγλικής αλφαβήτας, αριθμούς και τους ειδικούς χαρακτήρες {, }, [, ], \\, |, `, ^, _ και -."
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "Προσθήκη Ψευδώνυμου"
msgid "Notifications"
msgstr "Ειδοποιήσεις"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "Επιλογή Αρχείου Ήχου"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Configure..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copy Selection"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr ""
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr ""
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 "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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 ""
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\"!"
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 ""
"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 ""
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Agordi..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Kopii elektaĵon"
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 "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"
"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 ""
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 ""
"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 "
#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
msgctxt "CoreConfigWizardAdminUserPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
msgctxt "CoreConfigWizardAdminUserPage|"
#: ../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 "
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
msgctxt "CoreConfigWizardStorageSelectionPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
msgctxt "CoreConfigWizardStorageSelectionPage|"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
msgctxt "CoreConfigWizardSyncPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
msgctxt "CoreConfigWizardSyncPage|"
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"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
msgctxt "CoreConnectionSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
msgctxt "CoreConnectionSettingsPage|"
#: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
msgctxt "CoreConnectionStatusWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
msgctxt "CoreConnectionStatusWidget|"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
#: ../src/qtui/settingspages/highlightsettingspage.ui:14
msgctxt "HighlightSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/highlightsettingspage.ui:20
msgctxt "HighlightSettingsPage|"
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 ""
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\"!"
#: ../src/qtui/settingspages/ignorelistsettingspage.ui:14
msgctxt "IgnoreListSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/ignorelistsettingspage.ui:28
msgctxt "IgnoreListSettingsPage|"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
msgctxt "IndicatorNotificationConfigWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
msgctxt "IndicatorNotificationConfigWidget|"
#: ../src/qtui/ui/inputwidget.ui:26
msgctxt "InputWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/inputwidget.cpp:74
msgctxt "InputWidget|"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
msgctxt "InputWidgetSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
msgctxt "InputWidgetSettingsPage|"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:14
msgctxt "ItemViewSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:22
msgctxt "ItemViewSettingsPage|"
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 ""
"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 ""
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
msgctxt "MsgProcessorStatusWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
msgctxt "MsgProcessorStatusWidget|"
#: ../src/qtui/settingspages/networkssettingspage.ui:14
msgctxt "NetworksSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/networkssettingspage.ui:48
msgctxt "NetworksSettingsPage|"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
#: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
msgctxt "PhononNotificationConfigWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
msgctxt "PhononNotificationConfigWidget|"
#: ../src/qtui/settingspages/shortcutssettingspage.ui:14
msgctxt "ShortcutsSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/shortcutssettingspage.ui:22
msgctxt "ShortcutsSettingsPage|"
"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 ""
#: ../src/qtui/ui/topicwidget.ui:32
msgctxt "TopicWidget|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/ui/topicwidget.ui:79
msgctxt "TopicWidget|"
#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
msgctxt "TopicWidgetSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "Formularo"
#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
msgctxt "TopicWidgetSettingsPage|"
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Configurar..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiar seleccionado"
#: ../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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
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|"
#: ../src/qtui/settingspages/appearancesettingspage.ui:141
msgctxt "AppearanceSettingsPage|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/appearancesettingspage.ui:150
msgctxt "AppearanceSettingsPage|"
#: ../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|"
#: ../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"
#: ../src/qtui/ui/chatviewsearchbar.ui:44
msgctxt "ChatViewSearchBar|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/ui/chatviewsearchbar.ui:55
msgctxt "ChatViewSearchBar|"
#: ../src/qtui/settingspages/chatviewsettingspage.ui:736
msgctxt "ChatViewSettingsPage|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/chatviewsettingspage.ui:201
msgctxt "ChatViewSettingsPage|"
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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:44
msgctxt "ContextMenuActionProvider|"
msgid "Delete Chat(s)..."
-msgstr "Poista keskustelut..."
+msgstr "Poista keskustelut…"
#: ../src/uisupport/contextmenuactionprovider.cpp:45
msgctxt "ContextMenuActionProvider|"
#: ../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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:67
msgctxt "ContextMenuActionProvider|"
msgid "Custom..."
-msgstr "Mukautettu..."
+msgstr "Mukautettu…"
#: ../src/uisupport/contextmenuactionprovider.cpp:79
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"
"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:"
#: ../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|"
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 ""
"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 "
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 "
#: ../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|"
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
#: ../src/uisupport/fontselector.cpp:32
msgctxt "FontSelector|"
msgid "Choose..."
-msgstr "Valitse..."
+msgstr "Valitse…"
#: ../src/qtui/settingspages/highlightsettingspage.ui:14
msgctxt "HighlightSettingsPage|"
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ä"
#: ../src/qtui/settingspages/identitiessettingspage.ui:77
msgctxt "IdentitiesSettingsPage|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/identitiessettingspage.ui:51
msgctxt "IdentitiesSettingsPage|"
#: ../src/qtui/settingspages/identitiessettingspage.ui:54
msgctxt "IdentitiesSettingsPage|"
msgid "Add..."
-msgstr "Lisää..."
+msgstr "Lisää…"
#: ../src/qtui/settingspages/identitiessettingspage.ui:74
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\"!"
#: ../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|"
#: ../src/qtui/settingspages/identityeditwidget.ui:93
msgctxt "IdentityEditWidget|"
msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää…"
#: ../src/qtui/settingspages/identityeditwidget.ui:116
msgctxt "IdentityEditWidget|"
#: ../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|"
#: ../src/qtui/settingspages/identityeditwidget.ui:182
msgctxt "IdentityEditWidget|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/identityeditwidget.ui:179
msgctxt "IdentityEditWidget|"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:345
msgctxt "ItemViewSettingsPage|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:142
msgctxt "ItemViewSettingsPage|"
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 ""
"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"
#, 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|"
#: ../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
#: ../src/qtui/settingspages/networkssettingspage.ui:295
msgctxt "NetworksSettingsPage|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/settingspages/networkssettingspage.ui:190
msgctxt "NetworksSettingsPage|"
#: ../src/qtui/settingspages/networkssettingspage.ui:217
msgctxt "NetworksSettingsPage|"
msgid "&Edit..."
-msgstr "&Muokkaa..."
+msgstr "&Muokkaa…"
#: ../src/qtui/settingspages/networkssettingspage.ui:278
msgctxt "NetworksSettingsPage|"
"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"
msgid "Notifications"
msgstr "Ilmoitukset"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "Valitse äänitiedosto"
#: ../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|"
#: ../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
#: ../src/qtui/ui/simplenetworkeditor.ui:99
msgctxt "SimpleNetworkEditor|"
msgid "&Edit..."
-msgstr "&Muokkaa..."
+msgstr "&Muokkaa…"
#: ../src/qtui/ui/simplenetworkeditor.ui:116
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:119
msgctxt "SimpleNetworkEditor|"
msgid "&Add..."
-msgstr "&Lisää..."
+msgstr "&Lisää…"
#: ../src/qtui/ui/simplenetworkeditor.ui:136
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:182
msgctxt "SimpleNetworkEditor|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/ui/simplenetworkeditor.ui:179
msgctxt "SimpleNetworkEditor|"
"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 ""
#: ../src/qtui/ui/topicwidget.ui:79
msgctxt "TopicWidget|"
msgid "..."
-msgstr "..."
+msgstr "…"
#: ../src/qtui/topicwidget.cpp:120
#, qt-format
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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> © 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>©%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> © 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|"
"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-"
msgid "Configure..."
msgstr "Configurer..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copier la sélection"
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|"
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"
"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 :"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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é"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Configurar..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiar selección"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
#: ../src/core/abstractsqlstorage.cpp:129
msgctxt "AbstractSqlStorage|"
msgid "Upgrade failed..."
-msgstr ""
+msgstr "सुधारना असफल हई"
#: ../src/qtui/settingspages/aliasesmodel.cpp:57
msgctxt "AliasesModel|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/backlogsettingspage.ui:14
msgctxt "BacklogSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/backlogsettingspage.ui:22
msgctxt "BacklogSettingsPage|"
#: ../src/qtui/settingspages/bufferviewsettingspage.ui:14
msgctxt "BufferViewSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/bufferviewsettingspage.ui:31
msgctxt "BufferViewSettingsPage|"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:14
msgctxt "ChatMonitorSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:22
msgctxt "ChatMonitorSettingsPage|"
msgid "Configure..."
msgstr ""
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
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/settingspages/chatviewsettingspage.ui:14
msgctxt "ChatViewSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/chatviewsettingspage.ui:22
msgctxt "ChatViewSettingsPage|"
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 "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"
"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 ""
#: ../src/qtui/settingspages/coreaccountsettingspage.ui:67
msgctxt "CoreAccountSettingsPage|"
msgid "Delete"
-msgstr ""
+msgstr "मिटाना"
#: ../src/qtui/settingspages/coreaccountsettingspage.ui:96
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 ""
"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 "
#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:14
msgctxt "CoreConfigWizardAdminUserPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/coreconfigwizardadminuserpage.ui:22
msgctxt "CoreConfigWizardAdminUserPage|"
#: ../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 "
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
msgctxt "CoreConfigWizardStorageSelectionPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
msgctxt "CoreConfigWizardStorageSelectionPage|"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
msgctxt "CoreConfigWizardSyncPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
msgctxt "CoreConfigWizardSyncPage|"
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"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
msgctxt "CoreConnectionSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
msgctxt "CoreConnectionSettingsPage|"
#: ../src/qtui/ui/coreconnectionstatuswidget.ui:14
msgctxt "CoreConnectionStatusWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/coreconnectionstatuswidget.ui:32
msgctxt "CoreConnectionStatusWidget|"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
#: ../src/qtui/settingspages/highlightsettingspage.ui:14
msgctxt "HighlightSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/highlightsettingspage.ui:20
msgctxt "HighlightSettingsPage|"
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 ""
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\"!"
#: ../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|"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
msgctxt "IndicatorNotificationConfigWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
msgctxt "IndicatorNotificationConfigWidget|"
#: ../src/qtui/ui/inputwidget.ui:26
msgctxt "InputWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/inputwidget.cpp:74
msgctxt "InputWidget|"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:14
msgctxt "InputWidgetSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:22
msgctxt "InputWidgetSettingsPage|"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:14
msgctxt "ItemViewSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/itemviewsettingspage.ui:22
msgctxt "ItemViewSettingsPage|"
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 ""
"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 ""
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
msgctxt "MsgProcessorStatusWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
msgctxt "MsgProcessorStatusWidget|"
#: ../src/qtui/settingspages/networkssettingspage.ui:14
msgctxt "NetworksSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/networkssettingspage.ui:48
msgctxt "NetworksSettingsPage|"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
#: ../src/qtui/ui/phononnotificationconfigwidget.ui:14
msgctxt "PhononNotificationConfigWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/phononnotificationconfigwidget.ui:20
msgctxt "PhononNotificationConfigWidget|"
#: ../src/qtui/settingspages/shortcutssettingspage.ui:14
msgctxt "ShortcutsSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/shortcutssettingspage.ui:22
msgctxt "ShortcutsSettingsPage|"
"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 ""
#: ../src/qtui/ui/topicwidget.ui:32
msgctxt "TopicWidget|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/ui/topicwidget.ui:79
msgctxt "TopicWidget|"
#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:14
msgctxt "TopicWidgetSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "फार्म"
#: ../src/qtui/settingspages/topicwidgetsettingspage.ui:22
msgctxt "TopicWidgetSettingsPage|"
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>© 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>© 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|"
"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-"
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"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Configura..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copia selezione"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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à"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "設定..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "セレクションをコピー"
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|"
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"
"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”のスクリプトを見つかれませんでした。"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 "個人情報名を変更"
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\"!"
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 ""
"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 "接続の設定"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "ニックネームを追加"
msgid "Notifications"
msgstr "通知"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "オーディオファイルを選択"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "설정..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
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|"
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"
"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 "클라이언트의 세션을 찾을 수 없습니다:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 "신원 이름 바꾸기"
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\"!"
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 ""
"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 ""
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "별명 추가"
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © <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>©%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 © <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|"
"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-"
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ą"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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ę"
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\"!"
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 ""
"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 ""
"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į"
msgid "Notifications"
msgstr "Pranešimai"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr ""
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr ""
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 "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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 ""
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\"!"
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 ""
"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 ""
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Konfigurér..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Kopier valgt tekst"
#: ../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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
# 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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Instellen…"
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Selectie kopiëren"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
msgid "Notifications"
msgstr "Notificaties"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "Audiobestand selecteren"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Configurar..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiar la Seleccion"
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|"
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"
"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\""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "Escaisses"
msgid "Notifications"
msgstr "Notificacions"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
#
# 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"
#: ../src/qtui/ui/aboutdlg.ui:17
msgctxt "AboutDlg|"
msgid "About Quassel"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਬਾਰੇ"
#: ../src/qtui/ui/aboutdlg.ui:59
msgctxt "AboutDlg|"
"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|"
#: ../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
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
#: ../src/core/abstractsqlstorage.cpp:129
msgctxt "AbstractSqlStorage|"
msgid "Upgrade failed..."
-msgstr ""
+msgstr "...ਅੱਪਗਰੇਡ ਫੇਲ੍ਹ ਹੈ"
#: ../src/qtui/settingspages/aliasesmodel.cpp:57
msgctxt "AliasesModel|"
#: ../src/qtui/settingspages/aliasesmodel.cpp:185
msgctxt "AliasesModel|"
msgid "Alias"
-msgstr ""
+msgstr "ਏਲੀਆਸ"
#: ../src/qtui/settingspages/aliasesmodel.cpp:186
msgctxt "AliasesModel|"
#: ../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|"
#: ../src/qtui/settingspages/appearancesettingspage.ui:36
msgctxt "AppearanceSettingsPage|"
msgid "Language:"
-msgstr ""
+msgstr "ਭਾਸ਼ਾ:"
#: ../src/qtui/settingspages/appearancesettingspage.ui:43
msgctxt "AppearanceSettingsPage|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/appearancesettingspage.ui:280
msgctxt "AppearanceSettingsPage|"
msgid "Server Notices:"
-msgstr ""
+msgstr "ਸਰਵਰ ਨੋਟਿਸ:"
#: ../src/qtui/settingspages/appearancesettingspage.ui:294
msgctxt "AppearanceSettingsPage|"
#: ../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|"
#: ../src/qtui/awaylogview.cpp:46
msgctxt "AwayLogView|"
msgid "Show Network Name"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ ਵੇਖਾਓ"
#: ../src/qtui/awaylogview.cpp:51
msgctxt "AwayLogView|"
#: ../src/qtui/settingspages/backlogsettingspage.ui:14
msgctxt "BacklogSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/settingspages/backlogsettingspage.ui:22
msgctxt "BacklogSettingsPage|"
#: ../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
#: ../src/qtui/settingspages/backlogsettingspage.cpp:27
msgctxt "BacklogSettingsPage|"
msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
#: ../src/qtui/settingspages/backlogsettingspage.cpp:27
msgctxt "BacklogSettingsPage|"
#, qt-format
msgctxt "BufferItem|"
msgid "<p> %1 - %2 </p>"
-msgstr ""
+msgstr "<p> %1 - %2 </p>"
#: ../src/uisupport/bufferview.cpp:272
msgctxt "BufferView|"
#: ../src/qtui/settingspages/buffervieweditdlg.ui:14
msgctxt "BufferViewEditDlg|"
msgid "Dialog"
-msgstr ""
+msgstr "ਡਾਈਲਾਗ"
#: ../src/qtui/settingspages/buffervieweditdlg.ui:22
msgctxt "BufferViewEditDlg|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/bufferviewsettingspage.ui:149
msgctxt "BufferViewSettingsPage|"
msgid "Sort alphabetically"
-msgstr ""
+msgstr "ਵਰਣਮਾਲਾ ਨਾਲ ਲੜੀਬੱਧ"
#: ../src/qtui/settingspages/bufferviewsettingspage.ui:156
msgctxt "BufferViewSettingsPage|"
#: ../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|"
#: ../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|"
#, 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|"
#, 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|"
#: ../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|"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:14
msgctxt "ChatMonitorSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:22
msgctxt "ChatMonitorSettingsPage|"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:61
msgctxt "ChatMonitorSettingsPage|"
msgid "Available:"
-msgstr ""
+msgstr "ਉਪਲੱਬਧ:"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:88
msgctxt "ChatMonitorSettingsPage|"
#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:258
msgctxt "ChatMonitorSettingsPage|"
msgid "Show:"
-msgstr ""
+msgstr "ਵੇਖੋ:"
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:147
msgctxt "ChatMonitorSettingsPage|"
#: ../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|"
#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:261
msgctxt "ChatMonitorSettingsPage|"
msgid "Ignore:"
-msgstr ""
+msgstr "ਅਣਡਿੱਠਾ:"
#: ../src/qtui/chatmonitorview.cpp:54
msgctxt "ChatMonitorView|"
#: ../src/qtui/chatmonitorview.cpp:61
msgctxt "ChatMonitorView|"
msgid "Show Network Name"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਨਾਂ ਵੇਖਾਓ"
#: ../src/qtui/chatmonitorview.cpp:66
msgctxt "ChatMonitorView|"
#: ../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 ""
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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
#: ../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|"
#: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
msgctxt "ChatViewSettingsPage|"
msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
#: ../src/qtui/settingspages/chatviewsettingspage.cpp:28
msgctxt "ChatViewSettingsPage|"
#: ../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
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|"
#: ../src/qtui/settingspages/connectionsettingspage.ui:213
msgctxt "ConnectionSettingsPage|"
msgid " seconds"
-msgstr ""
+msgstr " ਸਕਿੰਟ"
#: ../src/qtui/settingspages/connectionsettingspage.ui:80
msgctxt "ConnectionSettingsPage|"
#: ../src/qtui/settingspages/connectionsettingspage.ui:148
msgctxt "ConnectionSettingsPage|"
msgid "Update interval:"
-msgstr ""
+msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ:"
#: ../src/qtui/settingspages/connectionsettingspage.ui:177
msgctxt "ConnectionSettingsPage|"
#: ../src/qtui/settingspages/connectionsettingspage.ui:184
msgctxt "ConnectionSettingsPage|"
msgid " users"
-msgstr ""
+msgstr "ਯੂਜ਼ਰ"
#: ../src/qtui/settingspages/connectionsettingspage.ui:206
msgctxt "ConnectionSettingsPage|"
#: ../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|"
#: ../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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:54
msgctxt "ContextMenuActionProvider|"
msgid "Set as Default..."
-msgstr ""
+msgstr "...ਡਿਫਾਲਟ ਸੈੱਟ ਕਰੋ"
#: ../src/uisupport/contextmenuactionprovider.cpp:55
msgctxt "ContextMenuActionProvider|"
#: ../src/uisupport/contextmenuactionprovider.cpp:57
msgctxt "ContextMenuActionProvider|"
msgid "Join Channel..."
-msgstr ""
+msgstr "...ਚੈਨਲ ਜੁਆਇੰਨ"
#: ../src/uisupport/contextmenuactionprovider.cpp:59
msgctxt "ContextMenuActionProvider|"
#: ../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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:67
msgctxt "ContextMenuActionProvider|"
msgid "Custom..."
-msgstr ""
+msgstr "...ਕਸਟਮ"
#: ../src/uisupport/contextmenuactionprovider.cpp:79
msgctxt "ContextMenuActionProvider|"
#: ../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|"
#: ../src/uisupport/contextmenuactionprovider.cpp:87
msgctxt "ContextMenuActionProvider|"
msgid "Kick && Ban"
-msgstr ""
+msgstr "ਠੁੱਡਾ ਤੇ ਪਾਬੰਦੀ"
#: ../src/uisupport/contextmenuactionprovider.cpp:89
msgctxt "ContextMenuActionProvider|"
#: ../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|"
#: ../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"
"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 ""
#: ../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|"
#: ../src/qtui/settingspages/coreaccountsettingspage.ui:20
msgctxt "CoreAccountSettingsPage|"
msgid "Connect to Quassel Core"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਕੋਰ ਨਾਲ ਕੁਨੈਕਟ"
#: ../src/qtui/settingspages/coreaccountsettingspage.ui:30
msgctxt "CoreAccountSettingsPage|"
#: ../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|"
#: ../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
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 ""
"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 "
#: ../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|"
#: ../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 "
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:13
msgctxt "CoreConfigWizardStorageSelectionPage|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:21
msgctxt "CoreConfigWizardStorageSelectionPage|"
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:56
msgctxt "CoreConfigWizardStorageSelectionPage|"
msgid "Description"
-msgstr ""
+msgstr "ਵੇਰਵਾ"
#: ../src/qtui/ui/coreconfigwizardstorageselectionpage.ui:62
msgctxt "CoreConfigWizardStorageSelectionPage|"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:13
msgctxt "CoreConfigWizardSyncPage|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:19
msgctxt "CoreConfigWizardSyncPage|"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:62
msgctxt "CoreConfigWizardSyncPage|"
msgid "bar"
-msgstr ""
+msgstr "ਬਾਰ"
#: ../src/qtui/ui/coreconfigwizardsyncpage.ui:102
msgctxt "CoreConfigWizardSyncPage|"
#: ../src/qtui/ui/coreconnectauthdlg.ui:14
msgctxt "CoreConnectAuthDlg|"
msgid "Authentication Required"
-msgstr ""
+msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
#: ../src/qtui/ui/coreconnectauthdlg.ui:20
msgctxt "CoreConnectAuthDlg|"
#: ../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
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"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:14
msgctxt "CoreConnectionSettingsPage|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:20
msgctxt "CoreConnectionSettingsPage|"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:157
msgctxt "CoreConnectionSettingsPage|"
msgid " seconds"
-msgstr ""
+msgstr " ਸਕਿੰਟ"
#: ../src/qtui/settingspages/coreconnectionsettingspage.ui:100
msgctxt "CoreConnectionSettingsPage|"
#: ../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|"
#: ../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|"
#: ../src/qtui/ui/coreinfodlg.ui:81
msgctxt "CoreInfoDlg|"
msgid "Close"
-msgstr ""
+msgstr "ਬੰਦ ਕਰੋ"
#: ../src/qtui/coreinfodlg.cpp:57
#, qt-format
#, 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 ""
" 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 "
#: ../src/core/coreuserinputhandler.cpp:88
msgctxt "CoreUserInputHandler|"
msgid "away"
-msgstr ""
+msgstr "ਦੂਰ"
#: ../src/core/coreuserinputhandler.cpp:169
#, qt-format
#: ../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"
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."
#, 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 "
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 "
"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 "
"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"
#: ../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|"
#: ../src/qtui/settingspages/createidentitydlg.ui:49
msgctxt "CreateIdentityDlg|"
msgid "Duplicate:"
-msgstr ""
+msgstr "ਡੁਪਲੀਕੇਟ:"
#: ../src/qtui/ui/debugbufferviewoverlay.ui:13
msgctxt "DebugBufferViewOverlay|"
#: ../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|"
#: ../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|"
#: ../src/qtui/ui/debuglogwidget.ui:43
msgctxt "DebugLogWidget|"
msgid "Close"
-msgstr ""
+msgstr "ਬੰਦ ਕਰੋ"
#: ../src/qtui/dockmanagernotificationbackend.cpp:184
msgctxt "DockManagerNotificationBackend::ConfigWidget|"
#: ../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
#, qt-format
msgctxt "EventStringifier|"
msgid "%1 is away: \"%2\""
-msgstr ""
+msgstr "%1 ਦੂਰ ਹੈ: \"%2\""
#: ../src/core/eventstringifier.cpp:391
msgctxt "EventStringifier|"
#: ../src/core/eventstringifier.cpp:540
msgctxt "EventStringifier|"
msgid "End of channel list"
-msgstr ""
+msgstr "ਚੈਨਲ ਲਿਸਟ ਦਾ ਅੰਤ"
#: ../src/core/eventstringifier.cpp:558
#, qt-format
#, qt-format
msgctxt "EventStringifier|"
msgid "[Who] %1"
-msgstr ""
+msgstr "[Who] %1"
#: ../src/core/eventstringifier.cpp:649
msgctxt "EventStringifier|"
#: ../src/core/eventstringifier.cpp:717
msgctxt "EventStringifier|"
msgid "unknown"
-msgstr ""
+msgstr "ਅਣਜਾਣ"
#: ../src/core/eventstringifier.cpp:718
#, qt-format
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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|"
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\"!"
#: ../src/common/identity.cpp:147
msgctxt "Identity|"
msgid "Quassel IRC User"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ ਆਈਆਰਸੀ ਯੂਜ਼ਰ"
#: ../src/common/identity.cpp:177
msgctxt "Identity|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/identityeditwidget.ui:182
msgctxt "IdentityEditWidget|"
msgid "..."
-msgstr ""
+msgstr "..."
#: ../src/qtui/settingspages/identityeditwidget.ui:179
msgctxt "IdentityEditWidget|"
#: ../src/qtui/settingspages/identityeditwidget.ui:227
msgctxt "IdentityEditWidget|"
msgid "A&way"
-msgstr ""
+msgstr "ਦੂਰ(&w)"
#: ../src/qtui/settingspages/identityeditwidget.ui:233
msgctxt "IdentityEditWidget|"
#: ../src/qtui/settingspages/identityeditwidget.ui:315
msgctxt "IdentityEditWidget|"
msgid "Not implemented yet"
-msgstr ""
+msgstr "ਹਾਲੇ ਸਥਾਪਤ ਨਹੀਂ ਹੈ।"
#: ../src/qtui/settingspages/identityeditwidget.ui:318
msgctxt "IdentityEditWidget|"
#: ../src/qtui/settingspages/identityeditwidget.ui:332
msgctxt "IdentityEditWidget|"
msgid "Set away after"
-msgstr ""
+msgstr "ਇਸ ਦੇ ਬਾਅਦ ਸੈੱਟ ਕਰੋ"
#: ../src/qtui/settingspages/identityeditwidget.ui:342
msgctxt "IdentityEditWidget|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/identityeditwidget.ui:546
msgctxt "IdentityEditWidget|"
msgid "Continue"
-msgstr ""
+msgstr "ਜਾਰੀ ਰੱਖੋ"
#: ../src/qtui/settingspages/identityeditwidget.ui:584
msgctxt "IdentityEditWidget|"
#: ../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
#: ../src/qtui/settingspages/identityeditwidget.cpp:408
msgctxt "IdentityEditWidget|"
msgid "Load"
-msgstr ""
+msgstr "ਲੋਡ"
#: ../src/qtui/settingspages/identityeditwidget.ui:637
msgctxt "IdentityEditWidget|"
#: ../src/qtui/settingspages/identityeditwidget.ui:690
msgctxt "IdentityEditWidget|"
msgid "CommonName:"
-msgstr ""
+msgstr "ਆਮ-ਨਾਂ:"
#: ../src/qtui/settingspages/identityeditwidget.cpp:321
msgctxt "IdentityEditWidget|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/ignorelisteditdlg.ui:131
msgctxt "IgnoreListEditDlg|"
msgid "Regular expression"
-msgstr ""
+msgstr "ਨਿਯਮਿਤ ਸਮੀਕਰਨ"
#: ../src/qtui/settingspages/ignorelisteditdlg.ui:143
msgctxt "IgnoreListEditDlg|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:14
msgctxt "IndicatorNotificationConfigWidget|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/ui/indicatornotificationconfigwidget.ui:20
msgctxt "IndicatorNotificationConfigWidget|"
#: ../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|"
#: ../src/qtui/inputwidget.cpp:74
msgctxt "InputWidget|"
msgid "Red"
-msgstr ""
+msgstr "ਲਾਲ"
#: ../src/qtui/inputwidget.cpp:74
msgctxt "InputWidget|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:170
msgctxt "InputWidgetSettingsPage|"
msgid "lines"
-msgstr ""
+msgstr "ਲਾਈਨਾਂ"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:192
msgctxt "InputWidgetSettingsPage|"
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:235
msgctxt "InputWidgetSettingsPage|"
msgid ": "
-msgstr ""
+msgstr ": "
#: ../src/qtui/settingspages/inputwidgetsettingspage.ui:262
msgctxt "InputWidgetSettingsPage|"
#: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
msgctxt "InputWidgetSettingsPage|"
msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
#: ../src/qtui/settingspages/inputwidgetsettingspage.cpp:24
msgctxt "InputWidgetSettingsPage|"
#: ../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|"
#, 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|"
#: ../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
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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
#: ../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 ""
"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 ""
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:19
msgctxt "MsgProcessorStatusWidget|"
msgid "Form"
-msgstr ""
+msgstr "ਫਾਰਮ"
#: ../src/qtui/ui/msgprocessorstatuswidget.ui:34
msgctxt "MsgProcessorStatusWidget|"
#: ../src/qtui/settingspages/networkadddlg.ui:14
msgctxt "NetworkAddDlg|"
msgid "Add Network"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਸ਼ਾਮਿਲ"
#: ../src/qtui/settingspages/networkadddlg.ui:22
msgctxt "NetworkAddDlg|"
#: ../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|"
#: ../src/qtui/settingspages/networkeditdlg.ui:13
msgctxt "NetworkEditDlg|"
msgid "Dialog"
-msgstr ""
+msgstr "ਡਾਈਲਾਗ"
#: ../src/qtui/settingspages/networkeditdlg.ui:21
msgctxt "NetworkEditDlg|"
#: ../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
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/networkssettingspage.ui:217
msgctxt "NetworksSettingsPage|"
msgid "&Edit..."
-msgstr ""
+msgstr "...ਸੋਧ(&E)"
#: ../src/qtui/settingspages/networkssettingspage.ui:278
msgctxt "NetworksSettingsPage|"
#: ../src/qtui/settingspages/networkssettingspage.ui:337
msgctxt "NetworksSettingsPage|"
msgid "Commands"
-msgstr ""
+msgstr "ਕਮਾਂਡਾਂ"
#: ../src/qtui/settingspages/networkssettingspage.ui:340
msgctxt "NetworksSettingsPage|"
#: ../src/qtui/settingspages/networkssettingspage.ui:374
msgctxt "NetworksSettingsPage|"
msgid "Connection"
-msgstr ""
+msgstr "ਕੁਨੈਕਸ਼ਨ"
#: ../src/qtui/settingspages/networkssettingspage.ui:383
msgctxt "NetworksSettingsPage|"
#: ../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|"
#: ../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|"
#: ../src/qtui/settingspages/networkssettingspage.ui:525
msgctxt "NetworksSettingsPage|"
msgid "Auto Identify"
-msgstr ""
+msgstr "ਆਟੋ ਪਛਾਣ"
#: ../src/qtui/settingspages/networkssettingspage.ui:540
msgctxt "NetworksSettingsPage|"
#: ../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|"
#: ../src/qtui/settingspages/networkssettingspage.ui:625
msgctxt "NetworksSettingsPage|"
msgid "Account:"
-msgstr ""
+msgstr "ਅਕਾਊਂਟ:"
#: ../src/qtui/settingspages/networkssettingspage.ui:635
msgctxt "NetworksSettingsPage|"
#: ../src/qtui/settingspages/networkssettingspage.ui:659
msgctxt "NetworksSettingsPage|"
msgid "Encodings"
-msgstr ""
+msgstr "ਇੰਕੋਡਿੰਗ"
#: ../src/qtui/settingspages/networkssettingspage.ui:662
msgctxt "NetworksSettingsPage|"
#: ../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|"
#: ../src/qtui/settingspages/networkssettingspage.cpp:186
msgctxt "NetworksSettingsPage|"
msgid "</ul>"
-msgstr ""
+msgstr "</ul>"
#: ../src/qtui/settingspages/networkssettingspage.cpp:187
msgctxt "NetworksSettingsPage|"
#: ../src/qtui/settingspages/networkssettingspage.cpp:650
msgctxt "NetworksSettingsPage|"
msgid "Delete Network?"
-msgstr ""
+msgstr "ਨੈੱਟਵਰਕ ਹਟਾਉਣਾ ਹੈ?"
#: ../src/qtui/settingspages/networkssettingspage.cpp:651
#, qt-format
"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 ""
#: ../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|"
#: ../src/qtui/ircconnectionwizard.cpp:56
msgctxt "QObject|"
msgid "Welcome to Quassel IRC"
-msgstr ""
+msgstr "ਕੁਅੱਸੇਲ IRC ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ"
#: ../src/qtui/ircconnectionwizard.cpp:58
msgctxt "QObject|"
#: ../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
#, 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|"
#: ../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|"
#: ../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|"
#: ../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|"
#: ../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|"
#, 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|"
#: ../src/qtui/settingsdlg.cpp:231
msgctxt "SettingsDlg|"
msgid "Restore Defaults"
-msgstr ""
+msgstr "ਮੂਲ ਮੁੜ-ਸਟੋਰ ਕਰੋ"
#: ../src/qtui/settingsdlg.cpp:231
msgctxt "SettingsDlg|"
#: ../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|"
#: ../src/qtui/settingspagedlg.cpp:131
msgctxt "SettingsPageDlg|"
msgid "Restore Defaults"
-msgstr ""
+msgstr "ਮੂਲ ਮੁੜ-ਸਟੋਰ ਕਰੋ"
#: ../src/qtui/settingspagedlg.cpp:131
msgctxt "SettingsPageDlg|"
#: ../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|"
#: ../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|"
#: ../src/qtui/ui/simplenetworkeditor.ui:63
msgctxt "SimpleNetworkEditor|"
msgid "Servers"
-msgstr ""
+msgstr "ਸਰਵਰ"
#: ../src/qtui/ui/simplenetworkeditor.ui:81
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:99
msgctxt "SimpleNetworkEditor|"
msgid "&Edit..."
-msgstr ""
+msgstr "...ਸੋਧ(&E)"
#: ../src/qtui/ui/simplenetworkeditor.ui:116
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:119
msgctxt "SimpleNetworkEditor|"
msgid "&Add..."
-msgstr ""
+msgstr "...ਸ਼ਾਮਲ(&A)"
#: ../src/qtui/ui/simplenetworkeditor.ui:136
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:139
msgctxt "SimpleNetworkEditor|"
msgid "De&lete"
-msgstr ""
+msgstr "ਹਟਾਓ(&l)"
#: ../src/qtui/ui/simplenetworkeditor.ui:165
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:182
msgctxt "SimpleNetworkEditor|"
msgid "..."
-msgstr ""
+msgstr "..."
#: ../src/qtui/ui/simplenetworkeditor.ui:179
msgctxt "SimpleNetworkEditor|"
#: ../src/qtui/ui/simplenetworkeditor.ui:226
msgctxt "SimpleNetworkEditor|"
msgid "Join Channels Automatically"
-msgstr ""
+msgstr "ਚੈਨਲ ਆਪਣੇ-ਆਪ ਹੀ ਜੁਆਇੰਨ ਕਰੋ"
#: ../src/qtui/ui/simplenetworkeditor.ui:250
msgctxt "SimpleNetworkEditor|"
"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 ""
#: ../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|"
#, qt-format
msgctxt "SslInfoDlg|"
msgid "%1 to %2"
-msgstr ""
+msgstr "%1 ਤੋਂ %2"
#: ../src/client/networkmodel.h:150
msgctxt "StatusBufferItem|"
#: ../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
#: ../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|"
#: ../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|"
#: ../src/uisupport/toolbaractionprovider.cpp:32
msgctxt "ToolBarActionProvider|"
msgid "Disconnect"
-msgstr ""
+msgstr "ਡਿਸ-ਕੁਨੈਕਟ"
#: ../src/uisupport/toolbaractionprovider.cpp:32
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:34
msgctxt "ToolBarActionProvider|"
msgid "Part"
-msgstr ""
+msgstr "ਭਾਗ"
#: ../src/uisupport/toolbaractionprovider.cpp:34
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:35
msgctxt "ToolBarActionProvider|"
msgid "Join"
-msgstr ""
+msgstr "ਜੁਆਇਨ"
#: ../src/uisupport/toolbaractionprovider.cpp:35
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:37
msgctxt "ToolBarActionProvider|"
msgid "Query"
-msgstr ""
+msgstr "ਕਿਊਰੀ"
#: ../src/uisupport/toolbaractionprovider.cpp:37
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:38
msgctxt "ToolBarActionProvider|"
msgid "Whois"
-msgstr ""
+msgstr "ਕੌਣ ਹੈ"
#: ../src/uisupport/toolbaractionprovider.cpp:38
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:40
msgctxt "ToolBarActionProvider|"
msgid "Op"
-msgstr ""
+msgstr "Op"
#: ../src/uisupport/toolbaractionprovider.cpp:40
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:42
msgctxt "ToolBarActionProvider|"
msgid "Voice"
-msgstr ""
+msgstr "ਅਵਾਜ਼"
#: ../src/uisupport/toolbaractionprovider.cpp:42
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:44
msgctxt "ToolBarActionProvider|"
msgid "Kick"
-msgstr ""
+msgstr "ਕਿੱਕ"
#: ../src/uisupport/toolbaractionprovider.cpp:44
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:46
msgctxt "ToolBarActionProvider|"
msgid "Kick/Ban"
-msgstr ""
+msgstr "ਠੁੱਡਾ/ਪਾਬੰਦੀ"
#: ../src/uisupport/toolbaractionprovider.cpp:46
msgctxt "ToolBarActionProvider|"
#: ../src/uisupport/toolbaractionprovider.cpp:51
msgctxt "ToolBarActionProvider|"
msgid "Connect to all"
-msgstr ""
+msgstr "ਸਭ ਨਾਲ ਕੁਨੈਕਟ"
#: ../src/uisupport/toolbaractionprovider.cpp:58
msgctxt "ToolBarActionProvider|"
#: ../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
#: ../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|"
#: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
msgctxt "TopicWidgetSettingsPage|"
msgid "Interface"
-msgstr ""
+msgstr "ਇੰਟਰਫੇਸ"
#: ../src/qtui/settingspages/topicwidgetsettingspage.cpp:24
msgctxt "TopicWidgetSettingsPage|"
#, 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
#, 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
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr ""
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr ""
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 "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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 ""
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\"!"
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 ""
"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 ""
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Configurar..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiar Selecção"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Configurar..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiar seleção"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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}"
)
"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 "
-">= 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 ""
msgstr ""
#: ../src/qtui/aboutdlg.cpp:49
+#, qt-format
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©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 © 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>©%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 © 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
"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\"> "
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 ""
msgstr ""
#: ../src/qtui/settingspages/bufferviewsettingspage.ui:100
-#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:123
+#: ../src/qtui/settingspages/bufferviewsettingspage.cpp:128
msgctxt "BufferViewSettingsPage|"
msgid "All"
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 ""
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\"?"
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 ""
msgstr ""
#: ../src/qtui/settingspages/chatmonitorsettingspage.ui:133
-#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:258
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:272
msgctxt "ChatMonitorSettingsPage|"
msgid "Show:"
msgstr ""
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"
msgid "Opt Out"
msgstr ""
-#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:261
+#: ../src/qtui/settingspages/chatmonitorsettingspage.cpp:275
msgctxt "ChatMonitorSettingsPage|"
msgid "Ignore:"
msgstr ""
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"
#: ../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 ""
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 ""
"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
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"
"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 ""
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 ""
"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"
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"
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 ""
"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"
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 "
"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 "
"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"
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"
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"
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"
msgid "Clear Color"
msgstr ""
-#: ../src/qtui/inputwidget.cpp:133
+#: ../src/qtui/inputwidget.cpp:136
msgctxt "InputWidget|"
msgid "Focus Input Line"
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 ""
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 ""
"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 ""
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"
msgid "Shortcuts"
msgstr ""
-#: ../src/common/signalproxy.cpp:736
+#: ../src/common/signalproxy.cpp:758
msgctxt "SignalProxy|"
msgid "Disconnecting"
msgstr ""
"network"
msgstr ""
-#: ../src/qtui/snorenotificationbackend.cpp:61
-#: ../src/qtui/snorenotificationbackend.cpp:100
+#: ../src/qtui/snorenotificationbackend.cpp:60
msgctxt "SnoreNotificationBackend|"
msgid "Private Message"
msgstr ""
#
# 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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Configurare..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Copiază selecția"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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ă"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Настроить..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Скопировать выделение"
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|"
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"
"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 "Не удалось найти сессии для клиента:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 "Переименовать личность"
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\"!"
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 ""
"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 "Основная Ошибка Подключения"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr "Корректный ник может содержать только буквы латинского алфавита, цифры и спецсимволы {, }, [, ], \\, |, `, ^, _ и -."
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "Добавить ник"
msgid "Notifications"
msgstr "Уведомления"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "Выбрать звуковой файл"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Nastavi ..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Skopiraj izbor"
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|"
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"
"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:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr "Konfiguro..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr ""
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|"
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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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:"
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\"!"
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 ""
"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"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr "Njoftime"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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-"
msgid "Configure..."
msgstr ""
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr ""
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 "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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 ""
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\"!"
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 ""
"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 ""
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr ""
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr ""
msgid "Notifications"
msgstr ""
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr ""
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © 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>©%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 © 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|"
"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-"
msgid "Configure..."
msgstr "Konfigurera..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Kopiera markering"
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|"
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"
"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 ""
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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"
"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"
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"
"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 ""
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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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 © <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>©%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 © <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|"
"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-"
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"
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|"
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"
"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ı:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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\"!"
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 ""
"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ı"
"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"
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"
"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 ""
#: ../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|"
# 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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>© 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>© Ð\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|"
"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-"
msgid "Configure..."
msgstr "Налаштувати…"
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "Копіювати позначене"
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|"
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"
"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 "Не вдалося знайти сеансу клієнта:"
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 ""
"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 "
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 "
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"
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"
msgid "disconnected (UserId: %1)."
msgstr "роз’єднано (користувач: %1)."
-#: ../src/core/coresession.cpp:491
+#: ../src/core/coresession.cpp:477
#, qt-format
msgctxt "CoreSession|"
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"
#: ../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"
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."
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 "
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 "
"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 "
"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"
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"
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 "Перейменувати профіль"
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\"!"
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 ""
"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 "Помилка з’єднання з ядром"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr "Коректний псевдонім має складатися з літер абетки англійської мови, цифр та спеціальних символів {, }, [, ], \\, |, `, ^, _ і -."
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "Додавання псевдоніма"
msgid "Notifications"
msgstr "Сповіщення"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "Вибір звукового файла"
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"
msgid "Shortcuts"
msgstr "Скорочення"
-#: ../src/common/signalproxy.cpp:736
+#: ../src/common/signalproxy.cpp:758
msgctxt "SignalProxy|"
msgid "Disconnecting"
msgstr "Роз'єднання"
"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 ""
#
# 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"
#: ../src/qtui/aboutdlg.cpp:49
msgctxt "AboutDlg|"
msgid ""
-"<b>A modern, distributed IRC Client</b><br><br>©2005-2013 by the "
+"<b>A modern, distributed IRC Client</b><br><br>©%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-"
"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>©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>绝大多数图标的版权属于 © <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>©%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>绝大多数图标的版权属于 © <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|"
"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-"
msgid "Configure..."
msgstr "配置..."
-#: ../src/qtui/chatscene.cpp:803
+#: ../src/qtui/chatscene.cpp:813
msgctxt "ChatScene|"
msgid "Copy Selection"
msgstr "复制选择"
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|"
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"
"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 "无法找到客户端会话:"
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 ""
"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 "
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 "
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"
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 ""
" 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 "
#: ../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"
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."
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 "
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 "
"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 "
"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"
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 "重命名身份"
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\"!"
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 ""
"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 "核心连接错误"
"the special characters {, }, [, ], \\, |, `, ^, _ and -."
msgstr "有效的昵称可以包含英文字母、数字和{、}、[、]、\\、|、`、^、_ 和 - 这几个特殊字符。"
-#: ../src/qtui/settingspages/identitiessettingspage.cpp:479
+#: ../src/qtui/settingspages/identitiessettingspage.cpp:480
msgctxt "NickEditDlg|"
msgid "Add Nickname"
msgstr "添加昵称"
msgid "Notifications"
msgstr "通知"
-#: ../src/qtui/phononnotificationbackend.cpp:186
+#: ../src/qtui/phononnotificationbackend.cpp:188
msgctxt "PhononNotificationBackend::ConfigWidget|"
msgid "Select Audio File"
msgstr "选择音频文件"
"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 ""
--- /dev/null
+#
+# 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 >= 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>©%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 © 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\"> <b>John \"nox\" Hand</b></dt><dd>for the original Quassel "
+"icon - The All-Seeing Eye</dt><dt><img src=\":/pics/oxygen.png\"> <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\"> <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] ""
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)
# 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)
# 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
clientbacklogmanager.cpp
clientbufferviewconfig.cpp
clientbufferviewmanager.cpp
- clientcoreinfo.cpp
clientidentity.cpp
clientignorelistmanager.cpp
clientirclisthelper.cpp
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}")
+++ /dev/null
-/***************************************************************************
- * 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
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:
if (_account.useSsl())
magic |= Protocol::Encryption;
#endif
- //magic |= Protocol::Compression; // not implemented yet
+ magic |= Protocol::Compression;
stream << magic;
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)));
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>"
void ClientAuthHandler::setPeer(RemotePeer *peer)
{
+ qDebug().nospace() << "Using " << qPrintable(peer->protocolName()) << "...";
+
_peer = peer;
connect(_peer, SIGNAL(transferProgress(int,int)), SIGNAL(transferProgress(int,int)));
#ifndef CLIENTAUTHHANDLER_H
#define CLIENTAUTHHANDLER_H
+#include "compressor.h"
#include "authhandler.h"
#include "coreaccount.h"
return;
}
- resetConnection(false);
-
if (currentAccount().isInternal()) {
if (Quassel::runMode() != Quassel::Monolithic) {
qWarning() << "Cannot connect to internal core in client-only mode!";
connect(network, SIGNAL(connectedSet(bool)),
this, SIGNAL(networkDataChanged()));
connect(network, SIGNAL(destroyed()),
- this, SIGNAL(networkDataChanged()));
+ this, SLOT(onNetworkDestroyed()));
emit networkDataChanged();
}
}
+void NetworkItem::onNetworkDestroyed()
+{
+ _network = 0;
+ emit networkDataChanged();
+ removeAllChilds();
+}
+
+
/*****************************************
* Fancy Buffer Items
*****************************************/
}
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)));
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)),
}
+void ChannelBufferItem::ircChannelDestroyed()
+{
+ if (_ircChannel) {
+ _ircChannel = 0;
+ emit dataChanged();
+ removeAllChilds();
+ }
+}
+
+
void ChannelBufferItem::join(const QList<IrcUser *> &ircUsers)
{
addUsersToCategory(ircUsers);
private slots:
void onBeginRemoveChilds(int start, int end);
+ void onNetworkDestroyed();
private:
NetworkId _networkId;
private slots:
void ircChannelParted();
+ void ircChannelDestroyed();
private:
IrcChannel *_ircChannel;
# Builds the common module
-setup_qt_variables(Core Network)
-
set(SOURCES
aliasmanager.cpp
authhandler.cpp
bufferviewconfig.cpp
bufferviewmanager.cpp
cliparser.cpp
- coreinfo.cpp
+ compressor.cpp
ctcpevent.cpp
event.cpp
eventmanager.cpp
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)
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")
_addNewBuffersAutomatically(true),
_sortAlphabetically(true),
_hideInactiveBuffers(false),
+ _hideInactiveNetworks(false),
_disableDecoration(false),
_allowedBufferTypes(BufferInfo::StatusBuffer | BufferInfo::ChannelBuffer | BufferInfo::QueryBuffer | BufferInfo::GroupBuffer),
_minimumActivity(0)
emit configChanged();
}
+void BufferViewConfig::setHideInactiveNetworks(bool hideInactiveNetworks)
+{
+ if (_hideInactiveNetworks == hideInactiveNetworks)
+ return;
+
+ _hideInactiveNetworks = hideInactiveNetworks;
+ SYNC(ARG(hideInactiveNetworks))
+ emit configChanged();
+}
+
QVariantList BufferViewConfig::initBufferList() const
{
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)
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; }
bool _addNewBuffersAutomatically;
bool _sortAlphabetically;
bool _hideInactiveBuffers;
+ bool _hideInactiveNetworks;
bool _disableDecoration;
int _allowedBufferTypes;
int _minimumActivity;
--- /dev/null
+/***************************************************************************
+ * 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
+}
* 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
+++ /dev/null
-/***************************************************************************
- * 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
+++ /dev/null
-/***************************************************************************
- * 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;
-}
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);
{
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) {}
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;
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 :
// void *dli_saddr; /* Exact value of nearest symbol. */
// } Dl_info;
- #if __LP64__
+ #ifdef __LP64__
int addrSize = 16;
#else
int addrSize = 8;
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);
_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);
}
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);
}
}
+// 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;
}
{
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);
}
}
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 {
#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;
}
#include <QPair>
+#include "compressor.h"
#include "protocol.h"
class QObject;
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);
};
const quint32 magic = 0x42b33f00;
enum Type {
- LegacyProtocol = 1
+ LegacyProtocol = 0x01,
+ DataStreamProtocol = 0x02
};
--- /dev/null
+/***************************************************************************
+ * 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);
+}
--- /dev/null
+/***************************************************************************
+ * 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
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);
+
}
}
-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;
}
}
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);
out << item;
}
- _stream << block; // also writes the length as part of the serialization format
+ writeMessage(block);
}
m["UseCompression"] = false;
#endif
- writeSocketData(m);
+ writeMessage(m);
}
m["MsgType"] = "ClientInitReject";
m["Error"] = msg.errorString;
- writeSocketData(m);
+ writeMessage(m);
}
m["LoginEnabled"] = m["Configured"] = msg.coreConfigured;
- writeSocketData(m);
+ writeMessage(m);
}
QVariantMap m;
m["MsgType"] = "CoreSetupData";
m["SetupData"] = map;
- writeSocketData(m);
+ writeMessage(m);
}
m["MsgType"] = "CoreSetupReject";
m["Error"] = msg.errorString;
- writeSocketData(m);
+ writeMessage(m);
}
QVariantMap m;
m["MsgType"] = "CoreSetupAck";
- writeSocketData(m);
+ writeMessage(m);
}
m["User"] = msg.user;
m["Password"] = msg.password;
- writeSocketData(m);
+ writeMessage(m);
}
m["MsgType"] = "ClientLoginReject";
m["Error"] = msg.errorString;
- writeSocketData(m);
+ writeMessage(m);
}
QVariantMap m;
m["MsgType"] = "ClientLoginAck";
- writeSocketData(m);
+ writeMessage(m);
}
map["Identities"] = msg.identities;
m["SessionState"] = map;
- writeSocketData(m);
+ writeMessage(m);
}
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;
}
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);
}
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;
}
#ifndef LEGACYPEER_H
#define LEGACYPEER_H
-#include <QDataStream>
-
#include "../../remotepeer.h"
-class QDataStream;
-
class LegacyPeer : public RemotePeer
{
Q_OBJECT
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);
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;
};
#include "syncableobject.h"
#include "types.h"
+#include "../../version.h"
+
Quassel::BuildInfo Quassel::_buildInfo;
AbstractCliParser *Quassel::_cliParser = 0;
Quassel::RunMode Quassel::_runMode;
}
-void Quassel::setupBuildInfo(const QString &generated)
+void Quassel::setupBuildInfo()
{
_buildInfo.applicationName = "Quassel IRC";
_buildInfo.coreApplicationName = "quasselcore";
_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()) {
}
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())
QString commitHash;
uint commitDate;
QString buildDate;
- bool isSourceDirty;
- uint protocolVersion;
- uint clientNeedsProtocol;
- uint coreNeedsProtocol;
+
+ uint protocolVersion; // deprecated
QString applicationName;
QString coreApplicationName;
SynchronizedMarkerLine = 0x0001,
SaslAuthentication = 0x0002,
SaslExternal = 0x0004,
+ HideInactiveNetworks = 0x0008,
- NumFeatures = 0x0004
+ NumFeatures = 0x0008
};
Q_DECLARE_FLAGS(Features, Feature);
virtual ~Quassel();
- static void setupBuildInfo(const QString &generated);
+ static void setupBuildInfo();
static inline const BuildInfo &buildInfo();
static inline RunMode runMode();
* 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()));
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()));
}
}
+void RemotePeer::onCompressionError(Compressor::Error error)
+{
+ close(QString("Compression error %1").arg(error));
+}
+
+
QString RemotePeer::description() const
{
if (socket())
}
+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));
#include <QDateTime>
+#include "compressor.h"
#include "peer.h"
#include "protocol.h"
#include "signalproxy.h"
-class QTcpSocket;
class QTimer;
class AuthHandler;
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; }
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);
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
# Builds the core module
-setup_qt_variables(Network Sql Script)
-
set(SOURCES
abstractsqlstorage.cpp
core.cpp
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})
// 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;
_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)));
void CoreAuthHandler::setPeer(RemotePeer *peer)
{
+ qDebug().nospace() << "Using " << qPrintable(peer->protocolName()) << "...";
+
_peer = peer;
disconnect(socket(), SIGNAL(readyRead()), this, SLOT(onReadyRead()));
}
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include <QHostInfo>
+
#include "corenetwork.h"
#include "core.h"
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) {
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);
}
# 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
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
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})
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})
${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}")
{
QString res;
res = tr("<b>A modern, distributed IRC Client</b><br><br>"
- "©2005-2014 by the Quassel Project<br>"
+ "©%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 "
"Most icons are © 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;
}
"<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>"
"<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>"
"<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>"
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 &)));
}
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)
}
invalidateFilter();
}
+
+void ChatMonitorFilter::showBacklogSettingChanged(const QVariant &newValue) {
+ _showBacklog = newValue.toBool();
+}
+
+void ChatMonitorFilter::includeReadSettingChanged(const QVariant &newValue) {
+ _includeRead = newValue.toBool();
+}
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;
QList<BufferId> _bufferIds;
bool _showHighlights;
int _operationMode;
+ bool _showBacklog;
+ bool _includeRead;
};
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);
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
{
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()));
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());
}
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);
ColumnHandleItem *_firstColHandle, *_secondColHandle;
qreal _firstColHandlePos, _secondColHandlePos;
+ int _defaultFirstColHandlePos, _defaultSecondColHandlePos;
CutoffMode _cutoffMode;
ChatItem *_selectingItem;
QRectF sceneBRect = _boundingRect.translated(x(), 0);
_sceneLeft = sceneBRect.left();
_sceneRight = sceneBRect.right();
+ emit positionChanged(xpos);
}
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));
}
+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);
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);
_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"));
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()));
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++) {
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;
</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">
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()));
}
settings["ShowOwnMsgs"] = false;
settings["Buffers"] = QVariant();
settings["Default"] = true;
+ settings["ShowBacklog"] = true;
+ settings["IncludeRead"] = false;
load();
widgetHasChanged();
}
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();
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);
}
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;
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;
</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>
<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>
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);
</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">
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);
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();
+++ /dev/null
-/***************************************************************************
- * 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
<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>
# 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)
SnoreNotificationBackend::SnoreNotificationBackend (QObject *parent)
- :AbstractNotificationBackend(parent),
+ : AbstractNotificationBackend(parent),
m_systrayBackend(NULL)
{
NotificationSettings notificationSettings;
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));
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;
}
}
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);
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)
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)));
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);
#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:
Snore::SnoreCore *m_snore;
QHash<uint, uint> m_notificationIds;
Snore::Icon m_icon;
+ Snore::Application m_application;
+ Snore::Alert m_alert;
int m_timeout;
};
{
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)));
<font/>
</property>
<property name="text">
- <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:600; font-style:normal;">
-<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></string>
+ <string notr="true"/>
</property>
<property name="openExternalLinks">
<bool>true</bool>
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);
# 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
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}")
+++ /dev/null
-/***************************************************************************
- * 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
if (!config())
return true;
+ if (config()->hideInactiveNetworks() && !(sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool())) {
+ return false;
+ }
+
if (!config()->networkId().isValid()) {
return true;
}
// 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[] = {
#endif
setMode(SingleLine);
- setWordWrapEnabled(false);
+ setLineWrapEnabled(false);
reset();
connect(this, SIGNAL(textChanged()), this, SLOT(on_textChanged()));
}
+void MultiLineEdit::setLineWrapEnabled(bool enable)
+{
+ setLineWrapMode(enable ? WidgetWidth : NoWrap);
+ updateSizeHint();
+}
+
+
void MultiLineEdit::setMinHeight(int lines)
{
if (lines == _minHeight)
}
-void MultiLineEdit::setWordWrapEnabled(bool enable)
-{
- setLineWrapMode(enable ? WidgetWidth : NoWrap);
- updateSizeHint();
-}
-
-
void MultiLineEdit::setPasteProtectionEnabled(bool enable, QWidget *)
{
_pasteProtectionEnabled = enable;
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; }
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 (;;) {
--- /dev/null
+// 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$"
+++ /dev/null
-//! 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$