summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Groman <tgroman@nuegia.net>2020-09-21 15:08:56 -0700
committerThomas Groman <tgroman@nuegia.net>2020-09-21 15:08:56 -0700
commit4aa31001bae125293466d582c2ed1dca441c1103 (patch)
tree5a2bdfc6d6b0ea1f94c53e7c7108d7108940f8c5
parenteffdcc9b1cf185f24e67d9e627a77d823bcfef8f (diff)
parentb7965d023cb68bce6d9495eb6afbc73206c1afef (diff)
downloadtwinkle-jackaudio.tar
twinkle-jackaudio.tar.gz
twinkle-jackaudio.tar.lz
twinkle-jackaudio.tar.xz
twinkle-jackaudio.zip
Merge branch 'master' into jackaudiojackaudio
-rw-r--r--.travis.yml32
-rw-r--r--CMakeLists.txt53
-rw-r--r--NEWS4
-rw-r--r--README.md47
-rw-r--r--cmake/FindG729.cmake36
-rw-r--r--cmake/FindIlbc.cmake19
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/audio/audio_decoder.cpp8
-rw-r--r--src/audio/audio_encoder.cpp10
-rw-r--r--src/gui/CMakeLists.txt13
-rw-r--r--src/gui/getprofilenameform.cpp30
-rw-r--r--src/gui/getprofilenameform.ui24
-rw-r--r--src/gui/gui.cpp21
-rw-r--r--src/gui/gui.h10
-rw-r--r--src/gui/idlesession_inhibitor.cpp196
-rw-r--r--src/gui/idlesession_inhibitor.h75
-rw-r--r--src/gui/idlesession_manager.cpp99
-rw-r--r--src/gui/idlesession_manager.h53
-rw-r--r--src/gui/lang/twinkle_cs.ts247
-rw-r--r--src/gui/lang/twinkle_de.ts6
-rw-r--r--src/gui/lang/twinkle_nl.ts165
-rw-r--r--src/gui/lang/twinkle_ru.ts318
-rw-r--r--src/gui/lang/twinkle_sk.ts5988
-rw-r--r--src/gui/lang/twinkle_sv.ts222
-rw-r--r--src/gui/lang/twinkle_xx.ts228
-rw-r--r--src/gui/mphoneform.cpp37
-rw-r--r--src/gui/mphoneform.h2
-rw-r--r--src/gui/mphoneform.ui14
-rw-r--r--src/gui/qml/TextImageButton.qml8
-rw-r--r--src/gui/syssettingsform.cpp23
-rw-r--r--src/gui/syssettingsform.h1
-rw-r--r--src/gui/syssettingsform.ui28
-rw-r--r--src/gui/userprofileform.cpp42
-rw-r--r--src/gui/userprofileform.ui28
-rw-r--r--src/main.cpp23
-rw-r--r--src/parser/hdr_www_authenticate.cpp13
-rw-r--r--src/parser/request.cpp6
-rw-r--r--src/phone.cpp20
-rw-r--r--src/phone.h4
-rw-r--r--src/phone_user.cpp18
-rw-r--r--src/phone_user.h4
-rw-r--r--src/session.cpp5
-rw-r--r--src/sockets/dnssrv.cpp1
-rw-r--r--src/sys_settings.cpp40
-rw-r--r--src/sys_settings.h10
-rw-r--r--src/threads/mutex.cpp160
-rw-r--r--src/threads/mutex.h103
-rw-r--r--src/user.cpp20
-rw-r--r--src/user.h12
-rw-r--r--src/userintf.cpp109
-rw-r--r--src/userintf.h1
-rw-r--r--src/util.cpp4
-rw-r--r--twinkle_config.h.in7
53 files changed, 8053 insertions, 595 deletions
diff --git a/.travis.yml b/.travis.yml
index de77d41..a406bcb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,35 @@
language: cpp
-dist: trusty
+dist: bionic
sudo: required
env:
global:
- - FLAGS="-DWITH_QT5=ON -DWITH_ALSA=ON -DWITH_GSM=ON -DWITH_SPEEX=ON -DWITH_ZRTP=ON"
+ - FLAGS="-DWITH_QT5=ON -DWITH_ALSA=ON -DWITH_GSM=ON -DWITH_SPEEX=ON -DWITH_ZRTP=OFF"
# (qttools5-dev-tools is explicitly included because of Debian bug #835295)
- - PACKAGES="libasound2-dev libgsm1-dev libspeex-dev libspeexdsp-dev libzrtpcpp-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools"
+ - PACKAGES="libasound2-dev libgsm1-dev libspeex-dev libspeexdsp-dev qtdeclarative5-dev qttools5-dev qttools5-dev-tools"
+
matrix:
# Test various compiler versions
- - PACKAGES_ADD="g++-4.9" MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
- - PACKAGES_ADD="g++-5" MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
- - PACKAGES_ADD="g++-6" MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
- # The version of uCommon available on trusty (6.0.7) will cause a build
- # failure when compiling with GCC 7 or Clang.
- #- PACKAGES_ADD="g++-7" MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
+ - PACKAGES_ADD="g++-5" MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
+ - PACKAGES_ADD="g++-6" MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
+ - PACKAGES_ADD="g++-7" MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
+ - PACKAGES_ADD="g++-8" MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
+ - PACKAGES_ADD="g++-9" MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
+ - PACKAGES_ADD="clang-3.9" MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9"
+ - PACKAGES_ADD="clang-4.0" MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
+ - PACKAGES_ADD="clang-5.0" MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
+ - PACKAGES_ADD="clang-6.0" MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"
+ - PACKAGES_ADD="clang-7" MATRIX_EVAL="CC=clang-7 && CXX=clang++-7"
+ - PACKAGES_ADD="clang-8" MATRIX_EVAL="CC=clang-8 && CXX=clang++-8"
+
# Test with all options disabled
- FLAGS="-DWITH_QT5=OFF -DWITH_ALSA=OFF -DWITH_GSM=OFF -DWITH_SPEEX=OFF -DWITH_ZRTP=OFF" PACKAGES=""
+ # Test building with bcg729
+ - BUILD_BCG729="master" FLAGS="-DWITH_QT5=OFF -DWITH_ALSA=OFF -DWITH_G729=ON" PACKAGES="git ca-certificates"
+ # Also test the old pre-1.0.2 API (see issue #104)
+ - BUILD_BCG729="1.0.1" BUILD_BCG729_AUTOTOOLS="Y" FLAGS="-DWITH_QT5=OFF -DWITH_ALSA=OFF -DWITH_G729=ON" PACKAGES="git ca-certificates pkg-config libtool automake autoconf"
+
# See https://docs.travis-ci.com/user/languages/cpp/#C11-C%2B%2B11-%28and-Beyond%29-and-Toolchain-Versioning
before_install:
- eval "${MATRIX_EVAL}"
@@ -28,6 +40,8 @@ install:
- sudo apt-get -y install bison cmake flex libccrtp-dev libmagic-dev libreadline-dev libsndfile1-dev libucommon-dev libxml2-dev linux-libc-dev $PACKAGES $PACKAGES_ADD
script:
+ # Download and build bcg729 if necessary
+ - if [ "$BUILD_BCG729" ]; then git clone git://git.linphone.org/bcg729.git --branch "$BUILD_BCG729" && (cd bcg729 && if [ "$BUILD_BCG729_AUTOTOOLS" ]; then ./autogen.sh && ./configure; else cmake .; fi && make && sudo make install); fi
- mkdir _build
- cd _build
- cmake -DCMAKE_INSTALL_PREFIX=../_install $FLAGS ..
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cec8a2..a3f4e93 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,16 @@
project(twinkle)
-cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
set(PRODUCT_VERSION "1.10.2")
set(PRODUCT_DATE "February 14, 2018")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+# Add -DDEBUG for non-release builds, or uCommon will unilaterally define NDEBUG
+# (https://lists.gnu.org/archive/html/bug-commoncpp/2019-12/msg00000.html)
+set_directory_properties(PROPERTIES
+ COMPILE_DEFINITIONS $<$<OR:$<CONFIG:>,$<CONFIG:Debug>>:DEBUG>)
+
+include(CMakeDependentOption)
OPTION(WITH_ZRTP "Enable ZRTP encrypted calls" OFF)
OPTION(WITH_SPEEX "Enable the Speex codec" OFF)
@@ -13,6 +19,7 @@ OPTION(WITH_ALSA "Enable ALSA support" ON)
OPTION(WITH_JACK "Enable JackAudio support" ON)
OPTION(WITH_DIAMONDCARD "Enable Diamondcard integration" OFF)
OPTION(WITH_QT5 "Enable Qt 5 GUI" ON)
+CMAKE_DEPENDENT_OPTION(WITH_DBUS "Enable use of QtDBus (GUI only)" ON "WITH_QT5" OFF)
OPTION(WITH_G729 "Enable G.729A support" OFF)
OPTION(WITH_GSM "Use external GSM library" OFF)
@@ -20,6 +27,10 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include (CheckIncludeFile)
include (CheckIncludeFiles)
+include (CheckSymbolExists)
+include (CMakePushCheckState)
+include (CheckCXXSourceCompiles)
+include (TestBigEndian)
find_package(LibXml2 REQUIRED)
find_package(LibMagic REQUIRED)
@@ -38,6 +49,11 @@ if (WITH_QT5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS} ${Qt5Quick_EXECUTABLE_COMPILE_FLAGS}")
include_directories(${Qt5Widgets_INCLUDES} ${Qt5Quick_INCLUDES})
add_definitions(${Qt5Widgets_DEFINITIONS} ${Qt5Quick_DEFINITIONS})
+
+ if (WITH_DBUS)
+ find_package(Qt5DBus REQUIRED)
+ set(HAVE_DBUS TRUE)
+ endif (WITH_DBUS)
endif (WITH_QT5)
include_directories(${LIBXML2_INCLUDE_DIR})
@@ -96,6 +112,9 @@ if (WITH_ILBC)
if (ILBC_FOUND)
message(STATUS "iLBC OK")
set(HAVE_ILBC TRUE)
+ if (ILBC_CPP)
+ set(HAVE_ILBC_CPP TRUE)
+ endif (ILBC_CPP)
include_directories(${ILBC_INCLUDE_DIR})
else (ILBC_FOUND)
@@ -109,6 +128,10 @@ if (WITH_G729)
if (G729_FOUND)
message(STATUS "bcg729 OK")
set(HAVE_BCG729 TRUE)
+
+ if (G729_ANNEX_B)
+ set(HAVE_BCG729_ANNEX_B TRUE)
+ endif (G729_ANNEX_B)
include_directories(${G729_INCLUDE_DIR})
else (G729_FOUND)
@@ -133,6 +156,34 @@ check_include_file(unistd.h HAVE_UNISTD_H)
check_include_file(linux/types.h HAVE_LINUX_TYPES_H)
check_include_files("sys/socket.h;linux/errqueue.h" HAVE_LINUX_ERRQUEUE_H)
+check_symbol_exists(strerror_r "string.h" HAVE_STRERROR_R)
+if (HAVE_STRERROR_R)
+ # Check whether the return type is (int) or (char *)
+ # Code taken from Apache Thrift's ConfigureChecks.cmake
+ check_cxx_source_compiles("
+ #include <string.h>
+ int main() {
+ char b;
+ char *a = strerror_r(0, &b, 0);
+ return 0;
+ }
+ " STRERROR_R_CHAR_P)
+endif (HAVE_STRERROR_R)
+
+cmake_push_check_state()
+list(APPEND CMAKE_REQUIRED_LIBRARIES "-lresolv")
+check_cxx_source_compiles("
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+
+ int main() { res_init(); return 0; }
+" HAVE_RES_INIT)
+cmake_pop_check_state()
+
+test_big_endian(WORDS_BIGENDIAN)
+
set(datadir "${CMAKE_INSTALL_PREFIX}/share/twinkle")
configure_file(twinkle_config.h.in twinkle_config.h)
configure_file(twinkle.desktop.in twinkle.desktop)
diff --git a/NEWS b/NEWS
index 0ced74e..1b27196 100644
--- a/NEWS
+++ b/NEWS
@@ -267,8 +267,8 @@ Other
=================
- Local address book
- Message waiting indication (MWI)
- * Sollicted MWI as specified by RFC 3842
- * Unsollicited MWI as implemented by Asterisk
+ * Solicited MWI as specified by RFC 3842
+ * Unsolicited MWI as implemented by Asterisk
- Voice mail speed dial
- Call transfer with consultation
* This is a combination of a consultation call on the other line
diff --git a/README.md b/README.md
index d33c106..c1c33b5 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ To compile Twinkle you need the following libraries:
* libsndfile
* libmagic
* libreadline
-* Qt 5 -- more specifically, the following submodules:
+* Qt 5 – more specifically, the following submodules:
* base
* declarative
* tools
@@ -38,12 +38,13 @@ First of all, choose which options you want to have enabled.
All possible options are:
* Qt 5 GUI: `-DWITH_QT5=On` (on by default)
+* D-Bus use: `-DWITH_DBUS=On` (on by default, requires `WITH_QT5`)
* ALSA support: `-DWITH_ALSA=On` (on by default)
* ZRTP support: `-DWITH_ZRTP=On`
* G.729A codec support: `-DWITH_G729=On`
* Speex codec support: `-DWITH_SPEEX=On`
* iLBC codec support: `-DWITH_ILBC=On`
-* Diamondcard support: `-DWITH_DIAMONDCARD=On`
+* Diamondcard support: `-DWITH_DIAMONDCARD=On` (currently broken)
### Build instructions
@@ -73,24 +74,24 @@ The typical default value for `CMAKE_INSTALL_PREFIX` is `/usr/local`.
If you want to create an application link on your desktop you
can find an application icon in the shared user data directory:
-* twinkle16.png (16x16 icon)
-* twinkle32.png (32x32 icon)
-* twinkle48.png (48x48 icon)
+* `twinkle16.png` (16x16 icon)
+* `twinkle32.png` (32x32 icon)
+* `twinkle48.png` (48x48 icon)
## User data
On first run Twinkle will create the `.twinkle` directory in your home
directory. In this directory all user data will be put:
-* user profiles (.cfg)
-* log files (.log)
-* system settings (twinkle.sys)
-* call history (twinkle.ch)
-* lock file (twinkle.lck)
+* user profiles (`.cfg`)
+* log files (`.log`)
+* system settings (`twinkle.sys`)
+* call history (`twinkle.ch`)
+* lock file (`twinkle.lck`)
## Starting Twinkle
-Give the command: twinkle
+Give the command: `twinkle`
`twinkle -h` will show you some command line options you may use.
@@ -108,7 +109,7 @@ existing configuration file. See below for some hints on
settings to be made with the profile configuration editor.
If you specify a configuration file name, then Twinkle will
-such for this configuration file in your .twinkle directory.
+such for this configuration file in your `.twinkle` directory.
If you have put your configuration file in another location
you have to specify the full path name for the file, i.e.
starting with a slash.
@@ -160,14 +161,14 @@ to change the port forwarding rules likewise.
During execution Twinkle will create the following log files in
your .twinkle directory:
-* twinkle.log (latest log file)
-* twinkle.log.old (previous log file)
+* `twinkle.log` (latest log file)
+* `twinkle.log.old` (previous log file)
-When twinkle.log is full (default is 5 MB) then it is moved to
-twinkle.log.old and a new twinkle.log is created.
+When `twinkle.log` is full (default is 5 MB) then it is moved to
+`twinkle.log.old` and a new `twinkle.log` is created.
-On startup an existing twinkle.log is moved to twinkle.log.old and a
-new twinkle.log is created.
+On startup an existing `twinkle.log` is moved to `twinkle.log.old` and a
+new `twinkle.log` is created.
## User profile configuration
@@ -180,11 +181,11 @@ When you create a new profile you first give it a name and
then you can make the appropriate settings. The name of the
profile is what later on appears in the selection box
when you start Twinkle again. Or you can give the name.cfg
-at the command line (-f option) to immediately start that
+at the command line (`-f` option) to immediately start that
profile.
-The user profile is stored as '<name>.cfg' in the .twinkle
-directory where <name> is the name you gave to the profile.
+The user profile is stored as `<name>.cfg` in the `.twinkle`
+directory where `<name>` is the name you gave to the profile.
At a minimum you have to specify the following:
@@ -273,10 +274,10 @@ A SIP address has the following form:
Where 'user' is a user name or a phone number
and 'host-part' is a domain name, FQDN or IP address
-The only mandatory part for you to enter is the <user>. Twinkle
+The only mandatory part for you to enter is the `<user>`. Twinkle
will fill in the other parts if you do not provide them.
For the host-part, Twinkle will fill in the value you configured
-as your 'domain'.
+as your `domain`.
Currently `sip:` is the only addressing scheme supported by Twinkle.
diff --git a/cmake/FindG729.cmake b/cmake/FindG729.cmake
index 4a30ba0..1fbfeeb 100644
--- a/cmake/FindG729.cmake
+++ b/cmake/FindG729.cmake
@@ -1,14 +1,50 @@
+INCLUDE(CMakePushCheckState)
+INCLUDE(CheckCSourceCompiles)
+
FIND_PATH(G729_INCLUDE_DIR bcg729/decoder.h)
FIND_LIBRARY(G729_LIBRARY NAMES bcg729)
IF(G729_INCLUDE_DIR AND G729_LIBRARY)
SET(G729_FOUND TRUE)
+
+ # The bcg729 API was changed in 1.0.2 to add support for G.729 Annex B.
+ # This checks whether we are dealing with the old or new API.
+ CMAKE_PUSH_CHECK_STATE()
+ SET(CMAKE_REQUIRED_INCLUDES "${INCLUDE_DIRECTORIES}" "${G729_INCLUDE_DIR}")
+ SET(CMAKE_REQUIRED_LIBRARIES "${G729_LIBRARY}")
+ SET(CMAKE_REQUIRED_QUIET TRUE)
+ # Try to compile something using the old (pre-1.0.2) API.
+ #
+ # We cannot do it the other way around, as initBcg729EncoderChannel()
+ # did not have a prototype before 1.0.2, thus compilation would not fail
+ # when passing it an extra argument.
+ CHECK_C_SOURCE_COMPILES("
+ #include <bcg729/encoder.h>
+
+ int main() {
+ /* This function requires an argument since 1.0.2 */
+ initBcg729EncoderChannel();
+ return 0;
+ }
+ " G729_OLD_API)
+ CMAKE_POP_CHECK_STATE()
+
+ IF (G729_OLD_API)
+ SET(G729_ANNEX_B FALSE)
+ ELSE (G729_OLD_API)
+ SET(G729_ANNEX_B TRUE)
+ ENDIF (G729_OLD_API)
ENDIF(G729_INCLUDE_DIR AND G729_LIBRARY)
IF(G729_FOUND)
IF (NOT G729_FIND_QUIETLY)
MESSAGE(STATUS "Found bcg729 includes: ${G729_INCLUDE_DIR}/bcg729/decoder.h")
MESSAGE(STATUS "Found bcg729 library: ${G729_LIBRARY}")
+ IF (G729_ANNEX_B)
+ MESSAGE(STATUS "bcg729 supports Annex B; using the new (1.0.2) API")
+ ELSE (G729_ANNEX_B)
+ MESSAGE(STATUS "bcg729 does not support Annex B; using the old (pre-1.0.2) API")
+ ENDIF (G729_ANNEX_B)
ENDIF (NOT G729_FIND_QUIETLY)
ELSE(G729_FOUND)
IF (G729_FIND_REQUIRED)
diff --git a/cmake/FindIlbc.cmake b/cmake/FindIlbc.cmake
index f66ca55..7bbffa9 100644
--- a/cmake/FindIlbc.cmake
+++ b/cmake/FindIlbc.cmake
@@ -1,8 +1,27 @@
+include (CMakePushCheckState)
+include (CheckCXXSourceCompiles)
+
FIND_PATH(ILBC_INCLUDE_DIR ilbc/iLBC_decode.h)
FIND_LIBRARY(ILBC_LIBRARIES NAMES ilbc)
IF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES)
SET(ILBC_FOUND TRUE)
+
+ # Check if libilbc can be used without 'extern "C"'
+ CMAKE_PUSH_CHECK_STATE()
+ LIST(APPEND CMAKE_REQUIRED_INCLUDES "${ILBC_INCLUDE_DIR}")
+ LIST(APPEND CMAKE_REQUIRED_LIBRARIES "-lilbc")
+ SET(CMAKE_REQUIRED_QUIET TRUE)
+ CHECK_CXX_SOURCE_COMPILES("
+ #include <ilbc/iLBC_decode.h>
+
+ int main() {
+ iLBC_Dec_Inst_t *iLBCdec_inst;
+ initDecode(iLBCdec_inst, 0, 0);
+ return 0;
+ }
+ " ILBC_CPP)
+ CMAKE_POP_CHECK_STATE()
ENDIF(ILBC_INCLUDE_DIR AND ILBC_LIBRARIES)
IF(ILBC_FOUND)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 01f4997..0770bce 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -81,6 +81,7 @@ add_executable(twinkle-console
)
set(twinkle_LIBS
+ -latomic
-lpthread
-lresolv
${LibMagic_LIBRARY}
diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp
index 65935dd..c661910 100644
--- a/src/audio/audio_decoder.cpp
+++ b/src/audio/audio_decoder.cpp
@@ -547,7 +547,11 @@ uint16 t_g729a_audio_decoder::decode(uint8 *payload, uint16 payload_size,
for (uint16 done = 0; done < payload_size; done += 10)
{
+#ifdef HAVE_BCG729_ANNEX_B
+ bcg729Decoder(_context, &payload[done], 0, false, false, false, &pcm_buf[done * 8]);
+#else
bcg729Decoder(_context, &payload[done], false, &pcm_buf[done * 8]);
+#endif
}
return payload_size * 8;
@@ -562,7 +566,11 @@ uint16 t_g729a_audio_decoder::conceal(int16 *pcm_buf, uint16 pcm_buf_size)
{
assert(pcm_buf_size >= 80);
+#ifdef HAVE_BCG729_ANNEX_B
+ bcg729Decoder(_context, nullptr, 0, true, false, false, pcm_buf);
+#else
bcg729Decoder(_context, nullptr, true, pcm_buf);
+#endif
return 80;
}
diff --git a/src/audio/audio_encoder.cpp b/src/audio/audio_encoder.cpp
index d6ff356..952b1ee 100644
--- a/src/audio/audio_encoder.cpp
+++ b/src/audio/audio_encoder.cpp
@@ -433,7 +433,11 @@ uint16 t_g726_audio_encoder::encode(int16 *sample_buf, uint16 nsamples,
t_g729a_audio_encoder::t_g729a_audio_encoder(uint16 payload_id, uint16 ptime, t_user *user_config)
: t_audio_encoder(payload_id, ptime, user_config)
{
+#ifdef HAVE_BCG729_ANNEX_B
+ _context = initBcg729EncoderChannel(false);
+#else
_context = initBcg729EncoderChannel();
+#endif
}
t_g729a_audio_encoder::~t_g729a_audio_encoder()
@@ -451,7 +455,13 @@ uint16 t_g729a_audio_encoder::encode(int16 *sample_buf, uint16 nsamples,
for (uint16 done = 0; done < nsamples; done += 80)
{
+#ifdef HAVE_BCG729_ANNEX_B
+ uint8 frame_size = 10;
+ bcg729Encoder(_context, &sample_buf[done], &payload[done / 8], &frame_size);
+ assert(frame_size == 10);
+#else
bcg729Encoder(_context, &sample_buf[done], &payload[done / 8]);
+#endif
}
return nsamples / 8;
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index fca7d2e..aeff39b 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -1,5 +1,9 @@
project(twinkle-gui)
+# Suppress deprecation warnings from Qt, as they often would require breaking
+# backwards compatibility.
+add_definitions(-DQT_NO_DEPRECATED_WARNINGS)
+
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
@@ -37,6 +41,7 @@ set (twinkle_lang_SRC
lang/twinkle_fr.ts
lang/twinkle_nl.ts
lang/twinkle_ru.ts
+ lang/twinkle_sk.ts
lang/twinkle_sv.ts
)
@@ -52,6 +57,9 @@ qt5_add_translation(twinkle_LANG
)
set(qt_LIBS Qt5::Widgets Qt5::Quick)
+if (WITH_DBUS)
+ list(APPEND qt_LIBS Qt5::DBus)
+endif (WITH_DBUS)
set(CMAKE_AUTOMOC ON)
@@ -93,12 +101,17 @@ set(TWINKLE_GUI-SRCS
textbrowsernoautolink.cpp
osd.cpp
incoming_call_popup.cpp
+ idlesession_manager.cpp
${twinkle_OBJS}
${twinkle_UIS}
${twinkle_QRC}
${twinkle_LANG}
)
+if (WITH_DBUS)
+ list(APPEND TWINKLE_GUI-SRCS
+ idlesession_inhibitor.cpp)
+endif (WITH_DBUS)
add_executable(twinkle ${TWINKLE_GUI-SRCS})
target_link_libraries(twinkle ${twinkle_LIBS} ${qt_LIBS})
diff --git a/src/gui/getprofilenameform.cpp b/src/gui/getprofilenameform.cpp
index 89c715e..854b9c2 100644
--- a/src/gui/getprofilenameform.cpp
+++ b/src/gui/getprofilenameform.cpp
@@ -16,6 +16,7 @@ GetProfileNameForm::GetProfileNameForm(QWidget* parent)
: QDialog(parent)
{
setupUi(this);
+ init();
}
/*
@@ -28,17 +29,38 @@ GetProfileNameForm::~GetProfileNameForm()
void GetProfileNameForm::init()
{
- // Letters, digits, underscore, minus
- QRegExp rxFilenameChars("[\\w\\-][\\w\\-@\\.]*");
+ // Letters, digits, underscore, minus, "@" and period
+ QRegExp rxFilenameChars("[\\w\\-@\\.]*");
// Set validators
// USER
profileLineEdit->setValidator(new QRegExpValidator(rxFilenameChars, this));
+
+ // Focus seems to default to OK button, despite tab order
+ profileLineEdit->setFocus();
}
void GetProfileNameForm::validate()
{
- if (profileLineEdit->text().isEmpty()) return;
+ QString profileName = profileLineEdit->text();
+
+ if (profileName.isEmpty()) return;
+
+ // Check for anything that was let through by the validator
+ QRegExp rxFilename("^[\\w\\-][\\w\\-@\\.]*$");
+ if (!rxFilename.exactMatch(profileName)) {
+ QMessageBox::critical(this, PRODUCT_NAME,
+ tr("Invalid profile name: %1").arg(profileName)
+ // While this would be better suited as informativeText,
+ // Qt wouldn't take it into account when sizing the box
+ // (see http://apocalyptech.com/linux/qt/qmessagebox/)
+ + QString("\n\n") + tr(
+ "Allowed characters are: letters, digits, '-', '_', '.' and '@'.\n"
+ "Furthermore, the initial character cannot be '.' or '@'."
+ ));
+
+ return;
+ }
// Find the .twinkle directory in HOME
QDir d = QDir::home();
@@ -48,7 +70,7 @@ void GetProfileNameForm::validate()
reject();
}
- QString filename = profileLineEdit->text();
+ QString filename = profileName;
filename.append(USER_FILE_EXT);
QString fullname = d.filePath(filename);
if (QFile::exists(fullname)) {
diff --git a/src/gui/getprofilenameform.ui b/src/gui/getprofilenameform.ui
index 9e1ba47..417e952 100644
--- a/src/gui/getprofilenameform.ui
+++ b/src/gui/getprofilenameform.ui
@@ -109,6 +109,30 @@ To remember your profiles easily you could use your SIP user name as a profile n
</property>
</widget>
</item>
+ <item>
+ <widget class="QLabel" name="profileNoteLabel">
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>(Allowed characters: letters, digits, '-', '_', '.', '@')</string>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignVCenter</set>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
</layout>
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index ac14edd..954d8e8 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -56,6 +56,7 @@
#include "yesnodialog.h"
#include "command_args.h"
#include "im/msg_session.h"
+#include "idlesession_manager.h"
#include "qcombobox.h"
#include "qlabel.h"
@@ -783,6 +784,11 @@ t_gui::t_gui(t_phone *_phone) : t_userintf(_phone), timerUpdateMessageSessions(N
qRegisterMetaType<t_cf_type>("t_cf_type");
qRegisterMetaType<string>("string");
qRegisterMetaType<std::list<std::string>>("std::list<std::string>");
+
+ m_idle_session_manager = new IdleSessionManager(this);
+ connect(this, &t_gui::update_state,
+ this, &t_gui::updateIdleSessionState,
+ Qt::QueuedConnection);
mainWindow = new MphoneForm;
#ifdef HAVE_KDE
@@ -818,6 +824,8 @@ void t_gui::run(void) {
thr_process_events = new t_thread(process_events_main, NULL);
MEMMAN_NEW(thr_process_events);
+ updateInhibitIdleSession();
+
QString s;
list<t_user *> user_list = phone->ref_users();
@@ -3175,6 +3183,19 @@ void t_gui::updateTimersMessageSessions() {
}
}
+void t_gui::updateInhibitIdleSession() {
+ m_idle_session_manager->setEnabled(sys_config->get_inhibit_idle_session());
+}
+
+void t_gui::updateIdleSessionState() {
+ bool busy = false;
+ for (int i = 0; i < NUM_USER_LINES; i++) {
+ if (phone->get_line_state(i) == LS_BUSY)
+ busy = true;
+ }
+ m_idle_session_manager->setActivityState(busy);
+}
+
string t_gui::mime2file_extension(t_media media) {
string extension;
diff --git a/src/gui/gui.h b/src/gui/gui.h
index 3538afb..63f2cc9 100644
--- a/src/gui/gui.h
+++ b/src/gui/gui.h
@@ -43,6 +43,7 @@ using namespace std;
// Forward declaration
class MphoneForm;
+class IdleSessionManager;
// Length of redial list in combo boxes
#define SIZE_REDIAL_LIST 10
@@ -65,6 +66,8 @@ class t_gui : public QObject, public t_userintf {
Q_OBJECT
private:
MphoneForm *mainWindow;
+
+ IdleSessionManager *m_idle_session_manager;
// List of active instant messaging session.
list<im::t_msg_session *> messageSessions;
@@ -426,6 +429,10 @@ signals:
void mw_update_call_history();
void mw_update_missed_call_status(int num_missed_calls);
+public slots:
+ // Apply the current "inhibit_idle_session" setting
+ void updateInhibitIdleSession();
+
private slots:
/**
* Update timers associated with message sessions. This
@@ -433,6 +440,9 @@ private slots:
*/
void updateTimersMessageSessions();
+ // Update the current idle/busy state
+ void updateIdleSessionState();
+
bool do_cb_ask_user_to_redirect_invite(t_user *user_config, const t_url &destination,
const string &display);
bool do_cb_ask_user_to_redirect_request(t_user *user_config, const t_url &destination,
diff --git a/src/gui/idlesession_inhibitor.cpp b/src/gui/idlesession_inhibitor.cpp
new file mode 100644
index 0000000..9e4e1d4
--- /dev/null
+++ b/src/gui/idlesession_inhibitor.cpp
@@ -0,0 +1,196 @@
+/*
+ (This file was initially copied from qBittorrent.)
+
+ Copyright (C) 2019 Vladimir Golovnev <glassez@yandex.ru>
+ Frédéric Brière <fbriere@fbriere.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "idlesession_inhibitor.h"
+
+#include "log.h"
+#include "userintf.h"
+
+#include <QDBusConnection>
+#include <QDBusConnectionInterface>
+#include <QDBusMessage>
+#include <QDBusPendingCall>
+#include <QDBusPendingCallWatcher>
+#include <QDBusPendingReply>
+
+// There are various standards for session/power management out there.
+// Fortunately, most of them are either obsolete or redundant; the following
+// two should cover most, if not all, cases.
+
+// freedesktop.org Power Management Specification (KDE, Xfce)
+#define FDO_SERVICE "org.freedesktop.PowerManagement"
+#define FDO_PATH "/org/freedesktop/PowerManagement/Inhibit"
+#define FDO_INTERFACE "org.freedesktop.PowerManagement.Inhibit"
+#define FDO_METHOD_INHIBIT "Inhibit"
+#define FDO_METHOD_UNINHIBIT "UnInhibit"
+
+// GNOME Session (GNOME, MATE)
+#define GSM_SERVICE "org.gnome.SessionManager"
+#define GSM_PATH "/org/gnome/SessionManager"
+#define GSM_INTERFACE "org.gnome.SessionManager"
+#define GSM_METHOD_INHIBIT "Inhibit"
+#define GSM_METHOD_UNINHIBIT "Uninhibit"
+// Additional arguments required by GNOME's Inhibit()
+// - toplevel_xid: The toplevel X window identifier
+// (No idea what this does; everyone just uses 0)
+#define GSM_ARG_TOPLEVEL_XID 0u
+// - flags: Flags that spefify what should be inhibited
+// (8: Inhibit the session being marked as idle)
+#define GSM_ARG_INHIBIT_FLAG 8u
+
+// Common arguments to Inhibit()
+#define INHIBIT_REASON "Call in progress"
+// (Included for PRODUCT_NAME)
+#include "protocol.h"
+
+// How long (in ms) to wait for a reply to our D-Bus (un)inhibit requests
+#define DBUS_CALL_TIMEOUT 1000
+
+
+IdleSessionInhibitor::IdleSessionInhibitor(QObject *parent)
+ : QObject(parent)
+{
+ if (!QDBusConnection::sessionBus().isConnected()) {
+ issueWarning(tr("D-Bus: Could not connect to session bus"));
+ m_state = error;
+ return;
+ }
+
+ auto interface = QDBusConnection::sessionBus().interface();
+ if (interface->isServiceRegistered(FDO_SERVICE)) {
+ m_use_gsm = false;
+ } else if (interface->isServiceRegistered(GSM_SERVICE)) {
+ m_use_gsm = true;
+ } else {
+ issueWarning(tr("D-Bus: No supported session/power management service found"));
+ m_state = error;
+ return;
+ }
+
+ m_state = idle;
+ m_intended_state = idle;
+ m_cookie = 0;
+}
+
+void IdleSessionInhibitor::sendRequest(bool inhibit)
+{
+ QDBusMessage call;
+ if (!m_use_gsm)
+ call = QDBusMessage::createMethodCall(
+ FDO_SERVICE,
+ FDO_PATH,
+ FDO_INTERFACE,
+ inhibit ? FDO_METHOD_INHIBIT : FDO_METHOD_UNINHIBIT);
+ else
+ call = QDBusMessage::createMethodCall(
+ GSM_SERVICE,
+ GSM_PATH,
+ GSM_INTERFACE,
+ inhibit ? GSM_METHOD_INHIBIT : GSM_METHOD_UNINHIBIT);
+
+ QList<QVariant> args;
+ if (inhibit) {
+ args << PRODUCT_NAME;
+ if (m_use_gsm)
+ args << GSM_ARG_TOPLEVEL_XID;
+ args << INHIBIT_REASON;
+ if (m_use_gsm)
+ args << GSM_ARG_INHIBIT_FLAG;
+ } else {
+ args << m_cookie;
+ }
+ call.setArguments(args);
+
+ QDBusPendingCall pcall = QDBusConnection::sessionBus().asyncCall(call, DBUS_CALL_TIMEOUT);
+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this);
+ connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ this, SLOT(onAsyncReply(QDBusPendingCallWatcher*)));
+}
+
+void IdleSessionInhibitor::requestBusy()
+{
+ m_intended_state = busy;
+ if (m_state != idle)
+ return;
+
+ m_state = request_busy;
+
+ sendRequest(true);
+}
+
+void IdleSessionInhibitor::requestIdle()
+{
+ m_intended_state = idle;
+ if (m_state != busy)
+ return;
+
+ m_state = request_idle;
+
+ sendRequest(false);
+}
+
+void IdleSessionInhibitor::onAsyncReply(QDBusPendingCallWatcher *call)
+{
+ switch (m_state) {
+ case request_idle: {
+ // Reply to "Uninhibit" has no return value
+ QDBusPendingReply<> reply = *call;
+
+ if (reply.isError()) {
+ issueWarning(tr("D-Bus: Reply: Error: %1").arg(reply.error().message()));
+ m_state = error;
+ } else {
+ m_state = idle;
+ // Process any pending requestBusy() call
+ if (m_intended_state == busy)
+ requestBusy();
+ }
+ break;
+ }
+ case request_busy: {
+ // Reply to "Inhibit" has a cookie as return value
+ QDBusPendingReply<uint> reply = *call;
+
+ if (reply.isError()) {
+ issueWarning(tr("D-Bus: Reply: Error: %1").arg(reply.error().message()));
+ m_state = error;
+ } else {
+ m_state = busy;
+ m_cookie = reply.value();
+ // Process any pending requestIdle() call
+ if (m_intended_state == idle)
+ requestIdle();
+ }
+ break;
+ }
+ default:
+ issueWarning(tr("D-Bus: Unexpected reply in state %1").arg(m_state));
+ m_state = error;
+ }
+
+ call->deleteLater();
+}
+
+void IdleSessionInhibitor::issueWarning(const QString &msg) const
+{
+ log_file->write_report(msg.toStdString(), "IdleSessionInhibitor",
+ LOG_NORMAL, LOG_WARNING);
+ ui->cb_display_msg(msg.toStdString(), MSG_WARNING);
+}
diff --git a/src/gui/idlesession_inhibitor.h b/src/gui/idlesession_inhibitor.h
new file mode 100644
index 0000000..812e0a0
--- /dev/null
+++ b/src/gui/idlesession_inhibitor.h
@@ -0,0 +1,75 @@
+/*
+ (This file was initially copied from qBittorrent.)
+
+ Copyright (C) 2019 Vladimir Golovnev <glassez@yandex.ru>
+ Frédéric Brière <fbriere@fbriere.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDLESESSION_INHIBITOR_H
+#define IDLESESSION_INHIBITOR_H
+
+#include <QObject>
+
+// Forward declaration
+QT_BEGIN_NAMESPACE
+class QDBusPendingCallWatcher;
+QT_END_NAMESPACE
+
+// Object tasked with inhibiting idle sessions via D-Bus
+class IdleSessionInhibitor : public QObject
+{
+ Q_OBJECT
+
+public:
+ IdleSessionInhibitor(QObject *parent = 0);
+
+ void requestBusy();
+ void requestIdle();
+
+private slots:
+ // Handle the reply to our (un)inhibit request
+ void onAsyncReply(QDBusPendingCallWatcher *call);
+
+private:
+ // Internal state of the inhibitor
+ enum _state
+ {
+ error,
+ busy,
+ idle,
+ request_busy,
+ request_idle
+ };
+ // Current state
+ enum _state m_state;
+ // Most recent idle/busy setting, possibly pending while we're waiting
+ // for a reply to our previous D-Bus call
+ enum _state m_intended_state;
+
+ // Cookie returned by Inhibit(), to be passed to Uninhibit()
+ unsigned int m_cookie;
+
+ // Whether or not we are dealing with GNOME Session
+ bool m_use_gsm;
+
+ // Send an (un)inhibit request via D-Bus
+ void sendRequest(bool inhibit);
+
+ // Display and log a warning
+ void issueWarning(const QString &msg) const;
+};
+
+#endif // IDLESESSION_INHIBITOR_H
diff --git a/src/gui/idlesession_manager.cpp b/src/gui/idlesession_manager.cpp
new file mode 100644
index 0000000..5cc60b7
--- /dev/null
+++ b/src/gui/idlesession_manager.cpp
@@ -0,0 +1,99 @@
+/*
+ (This file was initially copied from qBittorrent.)
+
+ Copyright (C) 2019 Vladimir Golovnev <glassez@yandex.ru>
+ Frédéric Brière <fbriere@fbriere.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "twinkle_config.h"
+
+#include "idlesession_manager.h"
+#ifdef HAVE_DBUS
+#include "idlesession_inhibitor.h"
+#endif
+
+#include "log.h"
+
+#include <assert.h>
+
+IdleSessionManager::IdleSessionManager(QObject *parent)
+ : QObject(parent)
+{
+ // Creation of the inhibitor will only take place in setEnabled(),
+ // to prevent issueing a warning if no management service is found
+ // when the option has not been enabled in the first place.
+
+ m_busy = false;
+ m_inhibitor = nullptr;
+}
+
+void IdleSessionManager::setEnabled(bool enabled)
+{
+ // Make sure logging has been made available at this point
+ assert(log_file);
+
+#ifdef HAVE_DBUS
+ // Create our inhibitor if enabling for the first time
+ if (enabled && !m_inhibitor)
+ m_inhibitor = new IdleSessionInhibitor(this);
+
+ // Changing this setting while busy requires special handling
+ if ((enabled != m_enabled) && m_busy) {
+ // We need to directly call request*() methods, as the current
+ // values of m_enabled and m_busy would screw up set*()
+ if (enabled)
+ // Forward the current state to the new inhibitor
+ m_inhibitor->requestBusy();
+ else
+ // Switch back to idle before going silent
+ m_inhibitor->requestIdle();
+ }
+#endif
+
+ m_enabled = enabled;
+}
+
+void IdleSessionManager::setActivityState(bool busy)
+{
+ if (busy)
+ setBusy();
+ else
+ setIdle();
+}
+
+void IdleSessionManager::setBusy()
+{
+ if (m_busy)
+ return;
+ m_busy = true;
+
+#ifdef HAVE_DBUS
+ if (m_enabled && m_inhibitor)
+ m_inhibitor->requestBusy();
+#endif
+}
+
+void IdleSessionManager::setIdle()
+{
+ if (!m_busy)
+ return;
+ m_busy = false;
+
+#ifdef HAVE_DBUS
+ if (m_enabled && m_inhibitor)
+ m_inhibitor->requestIdle();
+#endif
+}
diff --git a/src/gui/idlesession_manager.h b/src/gui/idlesession_manager.h
new file mode 100644
index 0000000..0ee7267
--- /dev/null
+++ b/src/gui/idlesession_manager.h
@@ -0,0 +1,53 @@
+/*
+ (This file was initially copied from qBittorrent.)
+
+ Copyright (C) 2019 Vladimir Golovnev <glassez@yandex.ru>
+ Frédéric Brière <fbriere@fbriere.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef IDLESESSION_MANAGER_H
+#define IDLESESSION_MANAGER_H
+
+#include <QObject>
+
+// Forward declaration
+class IdleSessionInhibitor;
+
+// Object responsible for keeping track of this session's activity, whether
+// D-Bus is supported or not
+class IdleSessionManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ IdleSessionManager(QObject *parent = 0);
+
+ // Enable/disable inhibition of idle session
+ void setEnabled(bool enabled);
+
+ // Declare the session as busy/idle
+ void setActivityState(bool busy);
+ void setBusy();
+ void setIdle();
+
+private:
+ bool m_enabled;
+ bool m_busy;
+
+ IdleSessionInhibitor *m_inhibitor;
+};
+
+#endif // IDLE_SESSION_MANAGER_H
diff --git a/src/gui/lang/twinkle_cs.ts b/src/gui/lang/twinkle_cs.ts
index dcd34af..5cdfd22 100644
--- a/src/gui/lang/twinkle_cs.ts
+++ b/src/gui/lang/twinkle_cs.ts
@@ -17,7 +17,7 @@
</message>
<message>
<source>First name of contact.</source>
- <translation>Křestní jméno nebo jakékoliv jiné jméno. Bude třídicím klíčem.</translation>
+ <translation>Křestní jméno nebo jakékoliv jiné jméno. Bude třídícím klíčem.</translation>
</message>
<message>
<source>&amp;First name:</source>
@@ -256,7 +256,7 @@
</message>
<message>
<source>failed to publish</source>
- <translation>zveřejnění selhalho</translation>
+ <translation>zveřejnění selhalo</translation>
</message>
<message>
<source>request failed</source>
@@ -419,7 +419,7 @@
</message>
<message>
<source>Over decadic D. Normally not needed.</source>
- <translation>Funční klávesa D. Používaná zřídka.</translation>
+ <translation>Funkční klávesa D. Používaná zřídka.</translation>
</message>
<message>
<source>1</source>
@@ -777,7 +777,7 @@
</message>
<message>
<source>%1, STUN request failed.</source>
- <translation>%1, STUN diatz selhal.</translation>
+ <translation>%1, STUN dotaz selhal.</translation>
</message>
<message>
<source>%1, voice mail status failure.</source>
@@ -829,7 +829,7 @@
</message>
<message>
<source>Cannot open web browser: %1</source>
- <translation>Nemohu otevřit webový prohlížeč: %1</translation>
+ <translation>Nemohu otevřít webový prohlížeč: %1</translation>
</message>
<message>
<source>Configure your web browser in the system settings.</source>
@@ -955,6 +955,14 @@
<translation>Zdá se, že &lt;p&gt;&lt;b&gt;KAddressbook&lt;/b&gt; neobsahuje žádné záznamy s telefonními čísly, které by Twinkle mohl načíst. Použijte prosím tento program k úpravě nebo zanesení vašich kontaktů.&lt;/p&gt;
&lt;p&gt;Druhou možností je používat místní adresář v Twinkle.&lt;/p&gt;</translation>
</message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation>Smazat kontakt &apos;%1&apos; z místního adresáře?</translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation>Smazat kontakt</translation>
+ </message>
</context>
<context>
<name>GetProfileNameForm</name>
@@ -1294,7 +1302,7 @@ With this option you request your SIP provider to hide your identity from the ca
&lt;b&gt;Warning:&lt;/b&gt; not all providers support identity hiding.
&lt;/p&gt;</source>
<translation>&lt;p&gt;S touto volbou dáváte najevo vašemu SIP poskytovateli, že nechcete aby byly na protistranu zaslánu informace o vaší identitě. Např. vaše SIP adresa nebo telefonní číslo. Nicméně vaše IP adresa bude protistraně &lt;b&gt;vždy&lt;/b&gt; sdělena.&lt;/p&gt;
-&lt;p&gt;&lt;b&gt;Upozornění: &lt;/b&gt;Tuto možnost nenenabízejí všichni poskytovatelé!&lt;/p&gt;</translation>
+&lt;p&gt;&lt;b&gt;Upozornění: &lt;/b&gt;Tuto možnost nenabízejí všichni poskytovatelé!&lt;/p&gt;</translation>
</message>
<message>
<source>Not all SIP providers support identity hiding. Make sure your SIP provider supports it if you really need it.</source>
@@ -2531,7 +2539,7 @@ Pokud je SAS shodný na obou stranách, klikněte na ikonku zámečku. Lze se o
</message>
<message>
<source>Redirect incoming call to</source>
- <translation>Příchozí hovor přeměrovat na</translation>
+ <translation>Příchozí hovor přesměrovat na</translation>
</message>
<message>
<source>You can specify up to 3 destinations to which you want to redirect the call. If the first destination does not answer the call, the second destination will be tried and so on.</source>
@@ -2602,7 +2610,7 @@ Pokud je SAS shodný na obou stranách, klikněte na ikonku zámečku. Lze se o
</message>
<message>
<source>Make the selected IP address the default IP address. The next time you start Twinkle, this IP address will be automatically selected.</source>
- <translation>Nastavit vybranou IP adresu jako výchozí. Při přístím startu Twinkle bude automaticky zvolena tato adresa.</translation>
+ <translation>Nastavit vybranou IP adresu jako výchozí. Při příštím startu Twinkle bude automaticky zvolena tato adresa.</translation>
</message>
<message>
<source>Set as default &amp;NIC</source>
@@ -2701,7 +2709,7 @@ Pokud je SAS shodný na obou stranách, klikněte na ikonku zámečku. Lze se o
</message>
<message>
<source>Rename the highlighted profile.</source>
- <translation>Das ausgewählte Benutzerprofil umbenennen.</translation>
+ <translation>Přejmenovat označený profil.</translation>
</message>
<message>
<source>&amp;Set as default</source>
@@ -2753,7 +2761,7 @@ Pokud je SAS shodný na obou stranách, klikněte na ikonku zámečku. Lze se o
</message>
<message>
<source>&lt;html&gt;You can use the profile editor to create a profile. With the profile editor you can change many settings to tune the SIP protocol, RTP and many other things.&lt;br&gt;&lt;br&gt;Alternatively you can use the wizard to quickly setup a user profile. The wizard asks you only a few essential settings. If you create a user profile with the wizard you can still edit the full profile with the profile editor at a later time.&lt;br&gt;&lt;br&gt;Choose what method you wish to use.&lt;/html&gt;</source>
- <translation type="obsolete">&lt;html&gt;Pro vytvoření uživatelského profilu můžete použít editor profilu. Tento vám umožní změnit veškerá nastavení týkající se SIP protokolu, RTP jakož i dalších parametrů programu.&lt;br&gt;&lt;br&gt;Popřípadě použijte Wizard pro rychlé a jednoduché nastavení základních paramtrů ke zvolenému uživatelskému profilu. Wizard se vás dotáže jen na nejzákladnější údaje, které vám váš SIP poskytovatel dá při zaregistrování. Pro některé poskytovatele vám budou dokonce některé z těchto údajů přímo wizardem nabídnuty. I přesto, že profil založíte pomocí wizardu ho budete moci později upravovat pomocí editoru.&lt;br&gt;&lt;br&gt;Nápovědu získáte kdekoliv v Twinkle stiskem klávesové ombinace &quot;Shift + F1&quot;, přes kontextovou nápovědu pomocí stisku pravého tlačítka na myši nebo stiskem na symbol &quot;?&quot; v pravém horním rohu okna.&lt;br&gt;&lt;br&gt;Vyberte si jakým způsobem má být uživatelský profil založen.&lt;/html&gt;</translation>
+ <translation type="obsolete">&lt;html&gt;Pro vytvoření uživatelského profilu můžete použít editor profilu. Tento vám umožní změnit veškerá nastavení týkající se SIP protokolu, RTP jakož i dalších parametrů programu.&lt;br&gt;&lt;br&gt;Popřípadě použijte Wizard pro rychlé a jednoduché nastavení základních parametrů ke zvolenému uživatelskému profilu. Wizard se vás dotáže jen na nejzákladnější údaje, které vám váš SIP poskytovatel dá při zaregistrování. Pro některé poskytovatele vám budou dokonce některé z těchto údajů přímo wizardem nabídnuty. I přesto, že profil založíte pomocí wizardu ho budete moci později upravovat pomocí editoru.&lt;br&gt;&lt;br&gt;Nápovědu získáte kdekoliv v Twinkle stiskem klávesové kombinace &quot;Shift + F1&quot;, přes kontextovou nápovědu pomocí stisku pravého tlačítka na myši nebo stiskem na symbol &quot;?&quot; v pravém horním rohu okna.&lt;br&gt;&lt;br&gt;Vyberte si jakým způsobem má být uživatelský profil založen.&lt;/html&gt;</translation>
</message>
<message>
<source>&lt;html&gt;Next you may adjust the system settings. You can change these settings always at a later time.&lt;br&gt;&lt;br&gt;Click OK to view and adjust the system settings.&lt;/html&gt;</source>
@@ -3180,7 +3188,7 @@ Vyberte prosím aspoň jeden profil.</translation>
</message>
<message>
<source>When using ALSA, it is not recommended to use the default device for the microphone as it gives poor sound quality.</source>
- <translation type="obsolete">Při použítí ALSA rozhraní není doporučeno mít nastaveno pro mikrofon &quot;standardní zařízení&quot;. Může to být příčinou špatné kvality zvuku.</translation>
+ <translation type="obsolete">Při použití ALSA rozhraní není doporučeno mít nastaveno pro mikrofon &quot;standardní zařízení&quot;. Může to být příčinou špatné kvality zvuku.</translation>
</message>
<message>
<source>Reduce &amp;noise from the microphone</source>
@@ -3896,7 +3904,7 @@ If before answering a call, the microphone or speaker appears to be invalid, a w
</message>
<message>
<source>%1 is not set to your home directory.</source>
- <translation>&quot;%1&quot; nní vaším domovským adresářem.</translation>
+ <translation>&quot;%1&quot; není vaším domovským adresářem.</translation>
</message>
<message>
<source>Directory %1 (%2) does not exist.</source>
@@ -4155,17 +4163,17 @@ a na vašem NATu namapovat (UDP) porty.</translation>
</message>
<message>
<source>&amp;Domain*:</source>
- <translation>&amp;Doména*:</translation>
+ <translation type="vanished">&amp;Doména*:</translation>
</message>
<message>
<source>Or&amp;ganization:</source>
- <translation>Or&amp;ganizace:</translation>
+ <translation type="vanished">Or&amp;ganizace:</translation>
</message>
<message>
<source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
&lt;br&gt;&lt;br&gt;
This field is mandatory.</source>
- <translation>Uživatelské jméno, které vám bylo přiděleno vaším poskytovatelem,.je první částí vaší úplné SIP adresy &lt;b&gt;uzivatel&lt;/b&gt;@domain.com
+ <translation>Uživatelské jméno, které vám bylo přiděleno vaším poskytovatelem, je první částí vaší úplné SIP adresy &lt;b&gt;uzivatel&lt;/b&gt;@domain.com.
Může se jednat o telefonní číslo.
&lt;br&gt;&lt;br&gt;
Toto pole je povinné.</translation>
@@ -4233,7 +4241,7 @@ Toto pole je povinné.</translation>
</message>
<message>
<source>&amp;Expiry:</source>
- <translation>&amp;Platnost:</translation>
+ <translation type="vanished">&amp;Platnost:</translation>
</message>
<message>
<source>The registration expiry time that Twinkle will request.</source>
@@ -4297,7 +4305,7 @@ Toto pole je povinné.</translation>
</message>
<message>
<source>When you tick this option Twinkle will first try to resolve a SIP address to an IP address itself. If it can, then the SIP request will be sent there. Only when it cannot resolve the address, it will send the SIP request to the proxy (note that an in-dialog request will only be sent to the proxy in this case when you also ticked the previous option.)</source>
- <translation>Pokud je aktivováno, pokusí se nejprve Twinkle najít k cílové adrese odpovídající IP adresu a poslat SIP dotaz přímo tam. Pokud se nepodaří IP adresu zjistit, je dotaz poslán na proxy. (Upozornění:in-dialog žádosti budou v tomto případě posílány na proxy, jen pokud je aktivována i předchozí volba.)</translation>
+ <translation>Pokud je aktivováno, pokusí se nejprve Twinkle najít k cílové adrese odpovídající IP adresu a poslat SIP dotaz přímo tam. Pokud se nepodaří IP adresu zjistit, je dotaz poslán na proxy. (Upozornění: in-dialog žádosti budou v tomto případě posílány na proxy, jen pokud je aktivována i předchozí volba.)</translation>
</message>
<message>
<source>The hostname, domain name or IP address of your outbound proxy.</source>
@@ -4466,7 +4474,7 @@ Systém VAD je vždy aktivován, pokud je nastaveno kódováni s VBR.</translati
</message>
<message>
<source>Discontinuous transmission is an addition to VAD/VBR operation, that allows one to stop transmitting completely when the background noise is stationary.</source>
- <translation>Nesouvislé vysílání je rozšířením funkčnosi VAD/VBR, kdy je možné úplně přestat odesílat data v případě ticha.</translation>
+ <translation>Nesouvislé vysílání je rozšířením funkčnosti VAD/VBR, kdy je možné úplně přestat odesílat data v případě ticha.</translation>
</message>
<message>
<source>The dynamic type value (96 or higher) to be used for speex narrow band.</source>
@@ -4538,7 +4546,7 @@ Systém VAD je vždy aktivován, pokud je nastaveno kódováni s VBR.</translati
</message>
<message>
<source>The pause after a DTMF tone.</source>
- <translation>Doba prodlevy mezi dvěmi DTMF tóny.</translation>
+ <translation>Doba prodlevy mezi dvěma DTMF tóny.</translation>
</message>
<message>
<source>DTMF &amp;duration:</source>
@@ -4631,11 +4639,11 @@ Vysílá DTMF out-of-band přes požadavek SIP INFO.&lt;/p&gt;</translation>
</message>
<message>
<source>Indicates if Twinkle should ask the user before redirecting a request when a 3XX response is received.</source>
- <translation>Pokud je aktivováno, dotáže se Twinkle při přijmutí požadavku 3XX uživatele, zda-li má být odchozí volání přesměrováno na nový cíl.</translation>
+ <translation>Pokud je aktivováno, dotáže se Twinkle při přijetí požadavku 3XX uživatele, zda-li má být odchozí volání přesměrováno na nový cíl.</translation>
</message>
<message>
<source>Max re&amp;directions:</source>
- <translation>Max. počet &amp;přesměrování:</translation>
+ <translation type="vanished">Max. počet &amp;přesměrování:</translation>
</message>
<message>
<source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
@@ -4647,7 +4655,7 @@ Vysílá DTMF out-of-band přes požadavek SIP INFO.&lt;/p&gt;</translation>
</message>
<message>
<source>Call &amp;Hold variant:</source>
- <translation>Způsob přidržení &amp;hovoru:</translation>
+ <translation type="vanished">Způsob přidržení &amp;hovoru:</translation>
</message>
<message>
<source>RFC 2543</source>
@@ -4712,7 +4720,7 @@ Vysílá DTMF out-of-band přes požadavek SIP INFO.&lt;/p&gt;</translation>
<message>
<source>&lt;p&gt;A SIP UAS may send SDP in a 1XX response for early media, e.g. ringing tone. When the call is answered the SIP UAS should send the same SDP in the 200 OK response according to RFC 3261. Once SDP has been received, SDP in subsequent responses should be discarded.&lt;/p&gt;
&lt;p&gt;By allowing SDP to change during call setup, Twinkle will not discard SDP in subsequent responses and modify the media stream if the SDP is changed. When the SDP in a response is changed, it must have a new version number in the o= line.&lt;/p&gt;</source>
- <translation>&lt;p&gt;SIP UAS může odesílat SDP v 1XX odpovědi na zvuk zkraje hovoru, např. vyzváněcí tón. Pokud bude volání přijmuto, měl by SIP UAS dle RFC 3261 poslat to samé SDP v odpovědi 200 OK. Po přijmutí SDP by měly být všechny následující odpovědi SDP být zahozeny.&lt;/p&gt;
+ <translation>&lt;p&gt;SIP UAS může odesílat SDP v 1XX odpovědi na zvuk zkraje hovoru, např. vyzváněcí tón. Pokud bude volání přijato, měl by SIP UAS dle RFC 3261 poslat to samé SDP v odpovědi 200 OK. Po přijetí SDP by měly být všechny následující odpovědi SDP být zahozeny.&lt;/p&gt;
&lt;p&gt;Pokud je povoleno, že se SDP během navázání hovoru může změnit, Twinkle nebude v následujících odpovědích ignorovat SDP, nýbrž změní požadovaným způsobem vlastnosti proudu RTP. Změněné SDP musí mít v &quot;o=&quot; řádku nové číslo verze.&lt;/p&gt;</translation>
</message>
<message>
@@ -4756,7 +4764,7 @@ Tento formát je používán většinou SIP telefonů.
</message>
<message>
<source>The Via, Route and Record-Route headers can be encoded as a list of comma separated values or as multiple occurrences of the same header.</source>
- <translation>Via-, Route- und Record-Route-Header mohou posílány zakódované jako seznam čárkou oddělených hodnot nebo jako jednotlivé hodnoty, každá ve své hlavičce.</translation>
+ <translation>Via-, Route- a Record-Route-Header mohou posílány zakódované jako seznam čárkou oddělených hodnot nebo jako jednotlivé hodnoty, každá ve své hlavičce.</translation>
</message>
<message>
<source>SIP extensions</source>
@@ -4796,7 +4804,7 @@ Tento formát je používán většinou SIP telefonů.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;povoleno&lt;/b&gt;: 100rel je podporováno (je přidáno do odchozího INVITE jako podporovaná hlavička). Protistrana si potom může vyžádat PRACK na 1xx odpověď.
&lt;br&gt;&lt;br&gt;
-&lt;b&gt;vyžadováno&lt;/b&gt;: 100rel je vyžadováno. Požadavek je vložen do hlavičky require v odchozím INVITE. Pokud je v příchotím INVITE značeno, že je 100rel podporováno, pak bude Twinkle vyžadovat PRACK v odpovědi 1xx Pokud protistrana 100rel nepodporuje, nedojde k navázání spojení.
+&lt;b&gt;vyžadováno&lt;/b&gt;: 100rel je vyžadováno. Požadavek je vložen do hlavičky require v odchozím INVITE. Pokud je v příchozím INVITE značeno, že je 100rel podporováno, pak bude Twinkle vyžadovat PRACK v odpovědi 1xx Pokud protistrana 100rel nepodporuje, nedojde k navázání spojení.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;upřednostňováno&lt;/b&gt;: Podobné jako &quot;vyžadováno&quot;, akorát že v případě, že hovor selže, jelikož protistrana nepodporuje 100rel (odpověď 420), pak se Twinkle pokusí hovor znovu navázat bez vyžadování 100rel.</translation>
</message>
@@ -4904,7 +4912,7 @@ Pokud si tuto volbu vyberete, musíte rovněž na vašem NAT zařízení nasměr
</message>
<message>
<source>S&amp;TUN server:</source>
- <translation>Adresa S&amp;TUN serveru:</translation>
+ <translation type="vanished">Adresa S&amp;TUN serveru:</translation>
</message>
<message>
<source>The hostname, domain name or IP address of the STUN server.</source>
@@ -4998,7 +5006,7 @@ You are at work and all telephone numbers starting with a 0 should be prefixed w
Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
&lt;/tt&gt;
&lt;/blockquote&gt;</source>
- <translation>&lt;p&gt;
+ <translation type="vanished">&lt;p&gt;
Často není formát telefonních čísel, které jsou očekávány od VoIP poskytovatele, shodný s formátem čísel uložených v adresáři. Např. u čísel začínajících na &quot;+&quot; a národním kódem země očekává váš poskytovatel namísto &quot;00&quot; znak &quot;+&quot;. Nebo jste-li napojeni na místní SIP síť a je nutné předtočit nejdříve číslo k přístupu ven.
Zde je možné za použití vyhledávacích a zaměňovacích vzorů (podle způsobu regulárních výrazů a la Perl) nastavit obecně platné pravidla pro konverzi telefonních čísel.
&lt;/p&gt;
@@ -5017,7 +5025,7 @@ K tomu jsou potřebné následující pravidla uvedená v tomto pořadí:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;tt&gt;
-Hledaný výraz = \+49([0-9]*) , Náhrada = 0$1&lt;br&gt;
+Hledaný výraz = \+420([0-9]*) , Náhrada = 0$1&lt;br&gt;
Hledaný výraz = \+([0-9]*) , Náhrada = 00$1&lt;/br&gt;
&lt;/tt&gt;
&lt;/blockquote&gt;
@@ -5031,7 +5039,7 @@ Hledaný výraz = 0[0-9]* , Náhrada = 9$&amp;&lt;br&gt;
&lt;/tt&gt;
&lt;/blockquote&gt;
( $&amp; je speciální proměnná, do které je uloženo celé originální číslo)&lt;br&gt;
-Poznámka: Toto pravidlo nelze nastavit jednoduše jako třetí pravidlo ke dvou pravidlů z předcházejícího příkladu. Bude totiž použito vždy jen to první, které vyhledávání vyhoví. Namísto toho by muselo být změněno nahrazování v pravidlech 1 a 2 - &quot;57$1&quot; a &quot;577$1&quot;</translation>
+Poznámka: Toto pravidlo nelze nastavit jednoduše jako třetí pravidlo ke dvou pravidlům z předcházejícího příkladu. Bude totiž použito vždy jen to první, které vyhledávání vyhoví. Namísto toho by muselo být změněno nahrazování v pravidlech 1 a 2 - &quot;57$1&quot; a &quot;577$1&quot;</translation>
</message>
<message>
<source>Move the selected number conversion rule upwards in the list.</source>
@@ -5230,7 +5238,7 @@ The values of all SIP headers of the outgoing 200 OK are passed in environment v
&lt;p&gt;
&lt;b&gt;TWINKLE_TRIGGER=in_call_answered&lt;/b&gt;. &lt;b&gt;SIPSTATUS_CODE=200&lt;/b&gt;. &lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; contains the reason phrase. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
<translation>&lt;p&gt;
-Tento skript bude spuštěn, pokud bude příchozí hovor přijmut.
+Tento skript bude spuštěn, pokud bude příchozí hovor přijat.
&lt;/p&gt;
&lt;h3&gt;Systémové proměnné&lt;/h3&gt;
&lt;p&gt;
@@ -5326,7 +5334,7 @@ Obsahy všech SIP hlaviček odeslaných SIP INVITE požadavků budou předány t
</message>
<message>
<source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
- <translation>Pokud je aktivováno, pokusí se Twinkle při všech odchozích a příchozích hovorech zašifrovat zvuková data. Aby byl hovor opravdu zašifrován musí i protistrana podporovat šifrování ZRTP/SRTP. Jinak zůstane hovor nešifrovaný.</translation>
+ <translation type="vanished">Pokud je aktivováno, pokusí se Twinkle při všech odchozích a příchozích hovorech zašifrovat zvuková data. Aby byl hovor opravdu zašifrován musí i protistrana podporovat šifrování ZRTP/SRTP. Jinak zůstane hovor nešifrovaný.</translation>
</message>
<message>
<source>ZRTP settings</source>
@@ -5494,7 +5502,7 @@ Pokud je deaktivováno, použije Twinkle první kodek z vlastního seznamu, kter
</message>
<message>
<source>Indicates if the Replaces-extenstion is supported.</source>
- <translation>Indikuje, zda je rozšíření Replaces podporováno.</translation>
+ <translation type="vanished">Indikuje, zda je rozšíření Replaces podporováno.</translation>
</message>
<message>
<source>Attended refer to AoR (Address of Record)</source>
@@ -5502,7 +5510,7 @@ Pokud je deaktivováno, použije Twinkle první kodek z vlastního seznamu, kter
</message>
<message>
<source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
- <translation>Asistované přepojení by mělo používat Contact-URI jako cílovou adresu pro sdělení nového spojení přesměrovávané protistraně. Tato adresa nemusí být ovšem globálně platná. Alternativně se může použít AoR (Address of Record). Nevýhodou je, že při více koncových zařízeních není AoR jednoznačné, zatímco URI kontaktu směřuje na jediné zařízení.</translation>
+ <translation type="vanished">Asistované přepojení by mělo používat Contact-URI jako cílovou adresu pro sdělení nového spojení přesměrovávané protistraně. Tato adresa nemusí být ovšem globálně platná. Alternativně se může použít AoR (Address of Record). Nevýhodou je, že při více koncových zařízeních není AoR jednoznačné, zatímco URI kontaktu směřuje na jediné zařízení.</translation>
</message>
<message>
<source>Privacy</source>
@@ -5518,7 +5526,7 @@ Pokud je deaktivováno, použije Twinkle první kodek z vlastního seznamu, kter
</message>
<message>
<source>Include a P-Preferred-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
- <translation>Pokud je vybráno a je aktivována volba &quot;skrýt odesilatele&quot;, bude spolu s údajem odesilatele odeslána při požadavku INVITE hlacička P-Preferred-Identity.</translation>
+ <translation>Pokud je vybráno a je aktivována volba &quot;skrýt odesilatele&quot;, bude spolu s údajem odesilatele odeslána při požadavku INVITE hlavička P-Preferred-Identity.</translation>
</message>
<message>
<source>&lt;p&gt;
@@ -5616,11 +5624,11 @@ TWINKLE_USER_PROFILE obsahuje jméno uživatelského profilu, pro který je př
</message>
<message>
<source>Unsollicited</source>
- <translation>Nevyžádané</translation>
+ <translation type="vanished">Nevyžádané</translation>
</message>
<message>
<source>Sollicited</source>
- <translation>Vyžádané</translation>
+ <translation type="vanished">Vyžádané</translation>
</message>
<message>
<source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
@@ -5635,7 +5643,7 @@ Asterisk provides unsollicited message waiting indication.
&lt;p&gt;
Sollicited message waiting indication as specified by RFC 3842.
&lt;/p&gt;</source>
- <translation>&lt;H2&gt;Typ indikace čekajících zpráv&lt;/H2&gt;
+ <translation type="vanished">&lt;H2&gt;Typ indikace čekajících zpráv&lt;/H2&gt;
&lt;p&gt;
Pokud váš SIP poskytovatel nabízí upozornění na uložené zprávy v hlasové schránce, může vás Twinkle informovat o nových i již vyslechnutých zprávách ve vaší hlasové schránce. Zeptejte se vašeho poskytovatele, jaký typ indikace čekajících zpráv je používán
&lt;/p&gt;
@@ -5654,7 +5662,7 @@ Vyžádaná indikace čekajících zpráv dle RFC 3842.
</message>
<message>
<source>Sollicited MWI</source>
- <translation>Vyžádané MWI</translation>
+ <translation type="vanished">Vyžádané MWI</translation>
</message>
<message>
<source>Subscription &amp;duration:</source>
@@ -5670,7 +5678,7 @@ Vyžádaná indikace čekajících zpráv dle RFC 3842.
</message>
<message>
<source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
- <translation>Dle specifikace MWI se koncové zařízení hlásí na serveru k příjmu zpráv na určitou dobu a před vypršením této doby by se přihlášení mělo znovu obnovit.</translation>
+ <translation type="vanished">Dle specifikace MWI se koncové zařízení hlásí na serveru k příjmu zpráv na určitou dobu a před vypršením této doby by se přihlášení mělo znovu obnovit.</translation>
</message>
<message>
<source>Your user name for accessing your voice mailbox.</source>
@@ -5786,7 +5794,7 @@ Vyžádaná indikace čekajících zpráv dle RFC 3842.
</message>
<message>
<source>The q-value is a value between 0.000 and 1.000. A higher value means a higher priority.</source>
- <translation>Hodnota &apos;q&apos; je mezi 0.000 and 1.000 Vyšší hodnota znamená vyšší prioritu.</translation>
+ <translation>Hodnota &apos;q&apos; je mezi 0.000 and 1.000. Vyšší hodnota znamená vyšší prioritu.</translation>
</message>
<message>
<source>SIP transport</source>
@@ -5818,7 +5826,7 @@ Vyžádaná indikace čekajících zpráv dle RFC 3842.
</message>
<message>
<source>Use &amp;STUN (does not work for incoming TCP)</source>
- <translation>Použít &amp;STUN (nefunguje pro příchozí TCP)</translation>
+ <translation type="vanished">Použít &amp;STUN (nefunguje pro příchozí TCP)</translation>
</message>
<message>
<source>P&amp;ersistent TCP connection</source>
@@ -5952,6 +5960,163 @@ Vyžádaná indikace čekajících zpráv dle RFC 3842.
<source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
<translation>Pokud máte povolený STUN nebo NAT keep alive, pak bude Twinkle zasílat udržovací pakety v tomto intervalu, aby byla udržena mapování na vašem NATu.</translation>
</message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation>&amp;Doména*:</translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation>Or&amp;ganizace:</translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation>&amp;Platnost:</translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation>Způsob přidržení &amp;hovoru:</translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation>Max. počet &amp;přesměrování:</translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation>Indikuje, zda je rozšíření Replaces podporováno.</translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation>Asistované přepojení by mělo používat Contact-URI jako cílovou adresu pro sdělení nového spojení přesměrovávané protistraně. Tato adresa nemusí být ovšem globálně platná. Alternativně se může použít AoR (Address of Record). Nevýhodou je, že při více koncových zařízeních není AoR jednoznačné, zatímco URI kontaktu směřuje na jediné zařízení.</translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation>Pokud je vybráno a je aktivována volba &quot;skrýt odesilatele&quot;, bude spolu s údajem odesilatele odeslána při požadavku INVITE hlavička P-Preferred-Identity.</translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation>&amp;Posílat hlavičku P-Preferred-Identity při skrývání identity uživatele</translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation>Použít &amp;STUN (nefunguje pro příchozí TCP)</translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation>Adresa S&amp;TUN serveru:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation>&lt;p&gt;
+Často není formát telefonních čísel, které jsou očekávány od VoIP poskytovatele, shodný s formátem čísel uložených v adresáři. Např. u čísel začínajících na &quot;+&quot; a národním kódem země očekává váš poskytovatel namísto &quot;00&quot; znak &quot;+&quot;. Nebo jste-li napojeni na místní SIP síť a je nutné předtočit nejdříve číslo k přístupu ven.
+Zde je možné za použití vyhledávacích a zaměňovacích vzorů (podle způsobu regulárních výrazů a la Perl) nastavit obecně platné pravidla pro konverzi telefonních čísel.
+&lt;/p&gt;
+&lt;p&gt;
+Při každém vytáčení se Twinkle pokusí najít pro čísla z uživatelské části SIP adresy odpovídají výraz v seznamu hledaných vzorů. S prvním nalezeným vyhovujícím výrazem je provedena úprava originálního čísla, přičemž pozice v &quot;(&quot; &quot;)&quot; v hledaném výrazu (např. &quot;([0-9]*)&quot; pro &quot;jakkoliv mnoho čísel&quot;) je nahrazena znaky v odpovídajících proměnných. Např. &quot;$1&quot; pro první pozici. Viz též `man 7 regex` nebo konqueror:&quot;#regex&quot;. Pokud není nalezen žádný odpovídající hledaný vzor, zůstane číslo nezměněno.
+&lt;/p&gt;
+&lt;p&gt;
+Pravidla budou rovněž použita na čísla v příchozích voláních. Podle nastavených pravidel budou tato přetransformována do žádaného formátu.
+&lt;/p&gt;
+&lt;h3&gt;1. příklad&lt;/h3&gt;
+&lt;p&gt;
+Např. váš národní kód je &quot;420&quot; pro českou republiku a ve vašem adresáři máte také mnoho vnitrostátních čísel uložených v mezinárodním formátu. Např.. +420 577 2345678. Avšak VoIP poskytovatel očekává pro vnitrostátní hovor 0577 2345678. Chcete tedy nahradit &apos;+420&apos; za &apos;0&apos; a zároveň pro zahraniční hovory nahradit &apos;+&apos; za &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+K tomu jsou potřebné následující pravidla uvedená v tomto pořadí:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hledaný výraz = \+420([0-9]*) , Náhrada = 0$1&lt;br&gt;
+Hledaný výraz = \+([0-9]*) , Náhrada = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;2. příklad&lt;/h3&gt;
+&lt;p&gt;
+Nacházíte se na telefonní ústředně a všem číslům s 0 jako první číslicí, má být předřazeno číslo 9.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hledaný výraz = 0[0-9]* , Náhrada = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+( $&amp; je speciální proměnná, do které je uloženo celé originální číslo)&lt;br&gt;
+Poznámka: Toto pravidlo nelze nastavit jednoduše jako třetí pravidlo ke dvou pravidlům z předcházejícího příkladu. Bude totiž použito vždy jen to první, které vyhledávání vyhoví. Namísto toho by muselo být změněno nahrazování v pravidlech 1 a 2 - &quot;57$1&quot; a &quot;577$1&quot;</translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation>Pokud je aktivováno, pokusí se Twinkle při všech odchozích a příchozích hovorech zašifrovat zvuková data. Aby byl hovor opravdu zašifrován musí i protistrana podporovat šifrování ZRTP/SRTP. Jinak zůstane hovor nešifrovaný.</translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation>&lt;H2&gt;Typ indikace čekajících zpráv&lt;/H2&gt;
+&lt;p&gt;
+Pokud váš SIP poskytovatel nabízí upozornění na uložené zprávy v hlasové schránce, může vás Twinkle informovat o nových i již vyslechnutých zprávách ve vaší hlasové schránce. Zeptejte se vašeho poskytovatele, jaký typ indikace čekajících zpráv je používán
+&lt;/p&gt;
+&lt;H3&gt;Nevyžádané&lt;/H3&gt;
+&lt;p&gt;
+Asterisk podporuje nevyžádané indikování čekajících zpráv.
+&lt;/p&gt;
+&lt;H3&gt;Vyžádané&lt;/H3&gt;
+&lt;p&gt;
+Vyžádaná indikace čekajících zpráv dle RFC 3842.
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation>Nevyžádané</translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation>Vyžádané</translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation>Vyžádané MWI</translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation>Dle specifikace MWI se koncové zařízení hlásí na serveru k příjmu zpráv na určitou dobu a před vypršením této doby by se přihlášení mělo znovu obnovit.</translation>
+ </message>
</context>
<context>
<name>WizardForm</name>
diff --git a/src/gui/lang/twinkle_de.ts b/src/gui/lang/twinkle_de.ts
index 8ab0b01..b847965 100644
--- a/src/gui/lang/twinkle_de.ts
+++ b/src/gui/lang/twinkle_de.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1" language="de" sourcelanguage="en">
<context>
<name>AddressCardForm</name>
<message>
@@ -1010,7 +1010,7 @@ Es bietet sich an, hier Ihre SIP-Adresse als Name zu verwenden, also &lt;b&gt;me
</message>
<message>
<source>Time</source>
- <translation>Uhreit</translation>
+ <translation>Uhrzeit</translation>
</message>
<message>
<source>In/Out</source>
@@ -2419,7 +2419,7 @@ Um den Online-Status eines Buddies abzufragen, muss &lt;i&gt;dessen&lt;/i&gt; Pr
</message>
<message>
<source>Reject</source>
- <translation >Abweisen</translation>
+ <translation>Abweisen</translation>
</message>
<message>
<source>&amp;Hold</source>
diff --git a/src/gui/lang/twinkle_nl.ts b/src/gui/lang/twinkle_nl.ts
index 131094e..831a2c4 100644
--- a/src/gui/lang/twinkle_nl.ts
+++ b/src/gui/lang/twinkle_nl.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1" language="nl" sourcelanguage="en">
<context>
<name>AddressCardForm</name>
<message>
@@ -111,11 +111,11 @@
</message>
<message>
<source>&amp;Password:</source>
- <translation>&amp;Paswoord:</translation>
+ <translation>W&amp;achtwoord:</translation>
</message>
<message>
<source>Your password for authentication.</source>
- <translation>Uw paswoord voor authenticatie.</translation>
+ <translation>Uw wachtwoord voor authenticatie.</translation>
</message>
<message>
<source>Your SIP authentication name. Quite often this is the same as your SIP user name. It can be a different name though.</source>
@@ -260,7 +260,7 @@
</message>
<message>
<source>request failed</source>
- <translation>verzoel mislukt</translation>
+ <translation>verzoek mislukt</translation>
</message>
<message>
<source>Click right to add a buddy.</source>
@@ -1003,6 +1003,14 @@
<translation>&lt;p&gt;U heeft geen contacten met een telefoonnummer in &lt;b&gt;KAddressBook&lt;/b&gt;, KDE&apos;s adresboek applicatie. Twinkle haalt alle contacten met een telefoonnummer uit KAdressBook. Om uw contacten te beheren, moet u KAddressbook gebruiken.&lt;/p&gt;
&lt;p&gt;Als alternatief kunt u het lokale adresboek van Twinkle gebruiken.&lt;/p&gt;</translation>
</message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation>Weet je zeker dat je contact &apos;%1&apos; wilt verwijderen van je lokale adres boek?</translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation>Verwijder contact</translation>
+ </message>
</context>
<context>
<name>GetProfileNameForm</name>
@@ -1703,7 +1711,7 @@ Als de SAS aan beide kanten hetzelfde is, dan moet u die bevestigen door op het
</message>
<message>
<source>&amp;Quit</source>
- <translation>&amp;Aflsuiten</translation>
+ <translation>&amp;Afsluiten</translation>
</message>
<message>
<source>Ctrl+Q</source>
@@ -2398,7 +2406,7 @@ Als de SAS aan beide kanten hetzelfde is, dan moet u die bevestigen door op het
</message>
<message>
<source>&amp;Manual</source>
- <translation>&amp;Handleinding</translation>
+ <translation>&amp;Handleiding</translation>
</message>
<message>
<source>Sign up</source>
@@ -4237,11 +4245,11 @@ en creëer de volgende statische UDP mapping in uw NAT.</translation>
</message>
<message>
<source>&amp;Domain*:</source>
- <translation>&amp;Domein*:</translation>
+ <translation type="vanished">&amp;Domein*:</translation>
</message>
<message>
<source>Or&amp;ganization:</source>
- <translation>Or&amp;ganisatie:</translation>
+ <translation type="vanished">Or&amp;ganisatie:</translation>
</message>
<message>
<source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
@@ -4309,7 +4317,7 @@ Dit is een verplicht veld.</translation>
</message>
<message>
<source>&amp;Expiry:</source>
- <translation>&amp;Interval:</translation>
+ <translation type="vanished">&amp;Interval:</translation>
</message>
<message>
<source>The registration expiry time that Twinkle will request.</source>
@@ -4721,7 +4729,7 @@ Stuur DTMF out-of-band in een SIP INFO verzoek.
</message>
<message>
<source>Max re&amp;directions:</source>
- <translation>Max &amp;doorverwijzingen:</translation>
+ <translation type="vanished">Max &amp;doorverwijzingen:</translation>
</message>
<message>
<source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
@@ -4733,7 +4741,7 @@ Stuur DTMF out-of-band in een SIP INFO verzoek.
</message>
<message>
<source>Call &amp;Hold variant:</source>
- <translation>Wac&amp;ht variant:</translation>
+ <translation type="vanished">Wac&amp;ht variant:</translation>
</message>
<message>
<source>RFC 2543</source>
@@ -4990,7 +4998,7 @@ Als u deze optie kiest, dan moet u teven een adres vertaling in uw NAT router aa
</message>
<message>
<source>S&amp;TUN server:</source>
- <translation>S&amp;TUN server:</translation>
+ <translation type="vanished">S&amp;TUN server:</translation>
</message>
<message>
<source>The hostname, domain name or IP address of the STUN server.</source>
@@ -5084,7 +5092,7 @@ You are at work and all telephone numbers starting with a 0 should be prefixed w
Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
&lt;/tt&gt;
&lt;/blockquote&gt;</source>
- <translation>&lt;p&gt;
+ <translation type="vanished">&lt;p&gt;
Vaak is het formaat van een telefoonnummer dat u moet draaien anders dan het formaat van het nummer in uw adresboek, bijv. uw nummers starten met een +-teken gevolgd door een landencode, maar uw provider verwacht &apos;00&apos; in plaats van het +-teken, of u bent op kantoor en u moet eerst een &apos;9&apos; draaien om naar buiten te bellen. Hier kunt u nummerformaatconversie definieren m.b.v. reguliere expressies en vervang strings (Perl syntax).
&lt;/p&gt;
&lt;p&gt;
@@ -5390,7 +5398,7 @@ De waarden van alle SIP headers van de uitgaande SIP INVITE worden via variabele
</message>
<message>
<source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
- <translation>Als u ZRTP/SRTP aanzet, dan zal Twinkle proberen om het audiokanaal van uw gesprekken te versleutelen. Versleuteling lukt alleen als uw gesprekspartner ook ZRTP/SRTP ondersteunt. Als uw gesprekspartner geen ZRTP/SRTP ondersteund, dan blijft het audiokanaal onversleuteld.</translation>
+ <translation type="vanished">Als u ZRTP/SRTP aanzet, dan zal Twinkle proberen om het audiokanaal van uw gesprekken te versleutelen. Versleuteling lukt alleen als uw gesprekspartner ook ZRTP/SRTP ondersteunt. Als uw gesprekspartner geen ZRTP/SRTP ondersteund, dan blijft het audiokanaal onversleuteld.</translation>
</message>
<message>
<source>ZRTP settings</source>
@@ -5558,7 +5566,7 @@ Als u deze optie uitschakelt, dan neemt Twinkle de eerste codec uit de actieve c
</message>
<message>
<source>Indicates if the Replaces-extenstion is supported.</source>
- <translation>Geeft aan of de Replaces-extensie ondersteund wordt.</translation>
+ <translation type="vanished">Geeft aan of de Replaces-extensie ondersteund wordt.</translation>
</message>
<message>
<source>Attended refer to AoR (Address of Record)</source>
@@ -5566,7 +5574,7 @@ Als u deze optie uitschakelt, dan neemt Twinkle de eerste codec uit de actieve c
</message>
<message>
<source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
- <translation>Bij begeleid doorverbinden, is de contact URI de doorverbindbestemming. Een contact URI kan echter niet globaal routeerbaar zijn. Als alternatief kan dan de AoR (Address of Record) gebruikt worden. Een nadeel van het gebruik van de AoR is dat deze routeerbaar kan zijn naar meerdere eindpunten in het geval van SIP forking. De contact URI routeert altijd naar een uniek eindpunt.</translation>
+ <translation type="vanished">Bij begeleid doorverbinden, is de contact URI de doorverbindbestemming. Een contact URI kan echter niet globaal routeerbaar zijn. Als alternatief kan dan de AoR (Address of Record) gebruikt worden. Een nadeel van het gebruik van de AoR is dat deze routeerbaar kan zijn naar meerdere eindpunten in het geval van SIP forking. De contact URI routeert altijd naar een uniek eindpunt.</translation>
</message>
<message>
<source>Privacy</source>
@@ -5700,11 +5708,11 @@ TWINKLE_TRIGGER=in_call. SIPREQUEST_METHOD=INVITE. &lt;b&gt;SIPREQUEST_URI&lt;/b
</message>
<message>
<source>Unsollicited</source>
- <translation>Unsollicited</translation>
+ <translation type="vanished">Unsollicited</translation>
</message>
<message>
<source>Sollicited</source>
- <translation>Sollicited</translation>
+ <translation type="vanished">Sollicited</translation>
</message>
<message>
<source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
@@ -5719,7 +5727,7 @@ Asterisk provides unsollicited message waiting indication.
&lt;p&gt;
Sollicited message waiting indication as specified by RFC 3842.
&lt;/p&gt;</source>
- <translation>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+ <translation type="vanished">&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
&lt;p&gt;
Als uw provider de dienst aanbiedt waarmee u uw voice mail status kunt zien, dan kan Twinkle laten zien hoeveel nieuwe voice mail berichten er op u wachten. Er zijn 2 methoden waarop deze dienst kan worden aangeboden.
&lt;/p&gt;
@@ -5738,7 +5746,7 @@ Sollicited message waiting indication zoals gespecificeerd in RFC 3842.
</message>
<message>
<source>Sollicited MWI</source>
- <translation>Sollicited MWI</translation>
+ <translation type="vanished">Sollicited MWI</translation>
</message>
<message>
<source>Subscription &amp;duration:</source>
@@ -5754,7 +5762,7 @@ Sollicited message waiting indication zoals gespecificeerd in RFC 3842.
</message>
<message>
<source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
- <translation>Twinkle meldt zich voor een bepaalde periode aan bij de voice mailbox server. Net voordat deze periode verstrijkt, zal Twinkle zich opnieuw aanmelden.</translation>
+ <translation type="vanished">Twinkle meldt zich voor een bepaalde periode aan bij de voice mailbox server. Net voordat deze periode verstrijkt, zal Twinkle zich opnieuw aanmelden.</translation>
</message>
<message>
<source>Your user name for accessing your voice mailbox.</source>
@@ -5922,7 +5930,7 @@ Sollicited message waiting indication zoals gespecificeerd in RFC 3842.
</message>
<message>
<source>Use &amp;STUN (does not work for incoming TCP)</source>
- <translation>&amp;STUN (werkt niet voor inkomend TCP verkeer)</translation>
+ <translation type="vanished">&amp;STUN (werkt niet voor inkomend TCP verkeer)</translation>
</message>
<message>
<source>P&amp;ersistent TCP connection</source>
@@ -6056,6 +6064,119 @@ Sollicited message waiting indication zoals gespecificeerd in RFC 3842.
<source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
<translation>Als u STUN of NAT keep alive aan heeft gezet, dan zal Twinkle keep alive pakketjes sturen met deze snelheid om de adresbindingen in uw NAT router in leven te houden.</translation>
</message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WizardForm</name>
diff --git a/src/gui/lang/twinkle_ru.ts b/src/gui/lang/twinkle_ru.ts
index 8b60aa9..6fc4ec2 100644
--- a/src/gui/lang/twinkle_ru.ts
+++ b/src/gui/lang/twinkle_ru.ts
@@ -1,4 +1,4 @@
-<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.0">
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="ru" version="2.1">
<context>
<name>AddressCardForm</name>
<message>
@@ -917,6 +917,14 @@
<source>&lt;p&gt;You seem not to have any contacts with a phone number in &lt;b&gt;KAddressBook&lt;/b&gt;, KDE&apos;s address book application. Twinkle retrieves all contacts with a phone number from KAddressBook. To manage your contacts you have to use KAddressBook.&lt;p&gt;As an alternative you may use Twinkle&apos;s local address book.&lt;/p&gt;</source>
<translation>&lt;p&gt;У Вас нет ни одного контакта с телефонным номером в &lt;b&gt;KAddressBook&lt;/b&gt;(приложении KDE адресная книга). Twinkle получает все контакты с телефонными номерами из Адресной книги KDE. Для управления вашими контактами вы должны использовать KAddressBook.&lt;p&gt;Как альтернативу вы можете использовать локальную адресную книгу Twinkle.&lt;/p&gt;</translation>
</message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation>Вы уверены, что хотите удалить контакт &apos;%1&apos; из локальной адресной книги?</translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation>Удалить контакт</translation>
+ </message>
</context>
<context>
<name>GetProfileNameForm</name>
@@ -3890,14 +3898,6 @@ STUN не работает.
<translation>&amp;Имя пользователя*:</translation>
</message>
<message>
- <source>&amp;Domain*:</source>
- <translation>&amp;Домен*:</translation>
- </message>
- <message>
- <source>Or&amp;ganization:</source>
- <translation>Ор&amp;ганизация:</translation>
- </message>
- <message>
<source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
&lt;br&gt;&lt;br&gt;
This field is mandatory.</source>
@@ -3966,10 +3966,6 @@ This field is mandatory.</source>
<translation>Имя компьютера, доменное имя или IP адрес вашего регистратора. Если вы используете исходящий прокси, совпадающий с вашим регистратором, вы можете оставить его пустым.</translation>
</message>
<message>
- <source>&amp;Expiry:</source>
- <translation>&amp;Устаревание:</translation>
- </message>
- <message>
<source>The registration expiry time that Twinkle will request.</source>
<translation>Время устаревание регистрации, после которого Twinkle перепошлёт запрос заново.</translation>
</message>
@@ -4405,10 +4401,6 @@ Send DTMF out-of-band via a SIP INFO request.
<translation>Опции протокола</translation>
</message>
<message>
- <source>Call &amp;Hold variant:</source>
- <translation>&amp;Вариант удержания вызова:</translation>
- </message>
- <message>
<source>RFC 2543</source>
<translation>RFC 2543</translation>
</message>
@@ -4552,10 +4544,6 @@ This format is what most SIP phones use.
<translation>Если включено, Twinkle спрашивает, запрашивает ли пользователь 3XX, чтобы исходящий вызов был перенаправлен на новый пункт назначения.</translation>
</message>
<message>
- <source>Max re&amp;directions:</source>
- <translation>&amp;Максимум перенаправлений:</translation>
- </message>
- <message>
<source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
<translation>Номер переадресации исходящих вызовов, после которого Twinkle прекращает попытки установить соединение. Предотвращает перегрузку при перенаправлении.</translation>
</message>
@@ -4606,10 +4594,6 @@ This format is what most SIP phones use.
<translation>Замены</translation>
</message>
<message>
- <source>Indicates if the Replaces-extenstion is supported.</source>
- <translation>Указывает, поддерживается ли расширение Replaces.</translation>
- </message>
- <message>
<source>REFER</source>
<translation>Рефер</translation>
</message>
@@ -4674,10 +4658,6 @@ This format is what most SIP phones use.
<translation>Добавлять рефера в AoR (адрес записи)</translation>
</message>
<message>
- <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
- <translation>Приходящая передача вызова должна использовать URI контакта в качестве адресата для связи нового соединения, перенаправленного на контрагента. Однако этот адрес не может быть глобально действительным. В качестве альтернативы можно использовать AoR (адрес записи). Недостатком является то, что с несколькими конечными устройствами AoR однозначен, тогда как URI контакта направляется на одно устройство.</translation>
- </message>
- <message>
<source>Privacy</source>
<translation>Защита</translation>
</message>
@@ -4744,18 +4724,10 @@ When you choose this option you have to create static address mappings in your N
Если вы выберете эту опцию, вам также необходимо направить соответствующие порты RTP на ваш компьютер на устройстве NAT.</translation>
</message>
<message>
- <source>Use &amp;STUN (does not work for incoming TCP)</source>
- <translation>Использовать &amp;STUN (не работает для входящего TCP)</translation>
- </message>
- <message>
<source>Choose this option when your SIP provider offers a STUN server for NAT traversal.</source>
<translation>Выберите эту опцию если ваш провайдер SIP предлагает STUN-сервер для обхода NAT.</translation>
</message>
<message>
- <source>S&amp;TUN server:</source>
- <translation>S&amp;TUN сервер:</translation>
- </message>
- <message>
<source>The hostname, domain name or IP address of the STUN server.</source>
<translation>Имя сервера, доменное имя или IP адрес STUN сервера.</translation>
</message>
@@ -4816,73 +4788,6 @@ When you choose this option you have to create static address mappings in your N
<translation>Замена</translation>
</message>
<message>
- <source>&lt;p&gt;
-Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects '00' instead of the '+', or you are at the office and all your numbers need to be prefixed with a '9' to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
-&lt;/p&gt;
-&lt;p&gt;
-For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
-&lt;/p&gt;
-&lt;p&gt;
-The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
-&lt;/p&gt;
-&lt;h3&gt;Example 1&lt;/h3&gt;
-&lt;p&gt;
-Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the '+31' and replace it by a '0'. For dialling numbers abroad you just want to replace the '+' by '00'.
-&lt;/p&gt;
-&lt;p&gt;
-The following rules will do the trick:
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
-Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;
-&lt;h3&gt;Example 2&lt;/h3&gt;
-&lt;p&gt;
-You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;</source>
- <translation>&lt;p&gt;
-Часто количество телефонных номеров, ожидаемых от провайдера VoIP, не совпадает с количеством, сохранённым в каталоге. К примеру, для номеров, начинающихся с «+» и национального кода страны, ваш провайдер ожидает «+» вместо «00». Или, если вы подключены к локальной сети SIP, вам необходимо предварительно указать номер доступа.
-Можно установить общепринятые правила для преобразования телефонных номеров с использованием шаблонов поиска и свопинга (с помощью регулярных выражений и языка Perl).
-&lt;/p&gt;
-&lt;p&gt;
-Каждый раз, когда вы набираете номер, Twinkle пытается найти соответствующие номера в списке шаблонов поиска для чисел со стороны пользователя SIP-адреса. Первое найденное совпадающее выражение - это исходное число, а позиция в («») в поисковом выражении (например, «([0-9] *)» для «любого числа чисел» заменяется символами соответствующих переменных. К примеру, «1 доллар» для первой позиции. См. также `man 7 regex` или konqueror:«#regex». Если совпадающий шаблон не найден, число остаётся неизменным.
-&lt;/p&gt;
-&lt;p&gt;
-Правила будут также применяться к номерам входящих вызовов. В зависимости от установленных правил они будут преобразованы в нужный формат.
-&lt;/p&gt;
-&lt;h3&gt;1. пример&lt;/h3&gt;
-&lt;p&gt;
-К примеру, ваш национальный код «420» для Чешской Республики, и в вашем каталоге у вас также есть много национальных номеров, хранящихся в международном формате. Например, позвоните по телефону +420 777 2345678. Тем не менее, провайдер VoIP ожидает по национальному звонку 0577 2345678. Вы хотите заменить «+420» на «0» и заменить «+» на «00» на внешние вызовы.
-&lt;/p&gt;
-&lt;p&gt;
-В этом порядке требуются следующие правила:
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Поисковый запрос = \ +49 ([0-9] *), Замена = 0 $ 1&lt;br&gt;
-Поисковый запрос = \ + ([0-9] *), Замена = 00 $ 1&lt;/br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;
-&lt;h3&gt;2. пример&lt;/h3&gt;
-&lt;p&gt;
-Вы находитесь на телефонной станции, и все номера с 0 в качестве первой цифры должны быть пронумерованы 9.
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Поисковый запрос = 0 [0-9] *, Замена = 9 $ &amp;&lt;br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;
-($&amp; - специальная переменная, в которой хранится весь исходный номер)&lt;br&gt;
-Примечание. Это правило нельзя задать просто как третье правило для двух правил в предыдущем примере. Это будет использовать только первое, чтобы соответствовать поиску. Вместо этого замена в Правилах 1 и 2 должна быть изменена - «57$1» и «577$1»,</translation>
- </message>
- <message>
<source>Move the selected number conversion rule upwards in the list.</source>
<translation>Переместить выбранное правило преобразования номера вверх в списке.</translation>
</message>
@@ -5290,10 +5195,6 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation>&amp;Включить ZRTP/SRTP шифрование</translation>
</message>
<message>
- <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
- <translation>Если включено, Twinkle пытается зашифровать аудиоданные во всех исходящих и входящих вызовах. Для того, чтобы вызов был зашифрован, контрагент должен также поддерживать шифрование ZRTP / SRTP. В противном случае вызов остаётся незашифрованным.</translation>
- </message>
- <message>
<source>ZRTP settings</source>
<translation>ZRTP настройки</translation>
</message>
@@ -5330,48 +5231,10 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation>SIP адрес или телефонный номер для доступа к вашей голосовой почте.</translation>
</message>
<message>
- <source>Unsollicited</source>
- <translation>Незапрошен</translation>
- </message>
- <message>
- <source>Sollicited</source>
- <translation>Запрошен</translation>
- </message>
- <message>
- <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
-&lt;p&gt;
-If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
-&lt;/p&gt;
-&lt;H3&gt;Unsollicited&lt;/H3&gt;
-&lt;p&gt;
-Asterisk provides unsollicited message waiting indication.
-&lt;/p&gt;
-&lt;H3&gt;Sollicited&lt;/H3&gt;
-&lt;p&gt;
-Sollicited message waiting indication as specified by RFC 3842.
-&lt;/p&gt;</source>
- <translation>&lt;H2&gt;Тип отображения ожидающего сообщения&lt;/H2&gt;
-&lt;p&gt;
-Если ваш SIP-провайдер предлагает оповещения о сохранённых сообщениях в вашей голосовой почте, Twinkle может рассказать вам о новых и уже услышанных сообщениях в вашей голосовой почте. Спросите своего провайдера, какой тип ожидающего сообщения используется
-&lt;/p&gt;
-&lt;H3&gt;Нежелательный&lt;/H3&gt;
-&lt;p&gt;
-Asterisk поддерживает нежелательные ожидающие сообщения.
-&lt;/p&gt;
-&lt;H3&gt;Запрошенный&lt;/H3&gt;
-&lt;p&gt;
-Запрошенная индикация ожидающего сообщения в соответствии с RFC 3842.
-&lt;/p&gt;</translation>
- </message>
- <message>
<source>&amp;MWI type:</source>
<translation>&amp;MWI тип:</translation>
</message>
<message>
- <source>Sollicited MWI</source>
- <translation>Запрошенный MWI</translation>
- </message>
- <message>
<source>Subscription &amp;duration:</source>
<translation>Продолжительность &amp;подписки:</translation>
</message>
@@ -5384,10 +5247,6 @@ Asterisk поддерживает нежелательные ожидающие
<translation>Имя сервера, доменное имя или IP адрес вашего сервера голосовой почты.</translation>
</message>
<message>
- <source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
- <translation>Согласно спецификации MWI, конечное устройство сообщает серверу о получении сообщения в течение определённого периода времени, и до истечения этого времени регистрация должна возобновиться.</translation>
- </message>
- <message>
<source>Your user name for accessing your voice mailbox.</source>
<translation>Ваше имя пользователя для доступа к вашей голосовой почте.</translation>
</message>
@@ -5683,6 +5542,163 @@ This could be the hostname or IP address of your PC if you want direct PC to PC
<source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
<translation>Если у вас включен STUN или NAT, то Twinkle отправит пакеты обслуживания на этот интервал, чтобы сохранить отображение на вашем NAT.</translation>
</message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation>До&amp;мен*:</translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation>Органи&amp;зация:</translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation>У&amp;старевание:</translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation>&amp;Вариант удержания вызова:</translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation>&amp;Максимум перенаправлений:</translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation>Указывает, поддерживается ли расширение Replaces.</translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation>Приходящая передача вызова должна использовать URI контакта в качестве адресата для связи нового соединения, перенаправленного на контрагента. Однако этот адрес не может быть глобально действительным. В качестве альтернативы можно использовать AoR (адрес записи). Недостатком является то, что с несколькими конечными устройствами AoR однозначен, тогда как URI контакта направляется на одно устройство.</translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation>Включать заголовок P-Asserted-Identity с вашей личностью в запросе INVITE для вызова со скрытием личности.</translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation>&amp;Отправлять заголовок P-Asserted-Identity когда личность пользователя скрывается</translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation>Использовать STUN (не &amp;работает для входящего TCP)</translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation>STUN сер&amp;вер:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects '00' instead of the '+', or you are at the office and all your numbers need to be prefixed with a '9' to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the '+31' and replace it by a '0'. For dialling numbers abroad you just want to replace the '+' by '00'.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation>&lt;p&gt;
+Часто количество телефонных номеров, ожидаемых от провайдера VoIP, не совпадает с количеством, сохранённым в каталоге. К примеру, для номеров, начинающихся с «+» и национального кода страны, ваш провайдер ожидает «+» вместо «00». Или, если вы подключены к локальной сети SIP, вам необходимо предварительно указать номер доступа.
+Можно установить общепринятые правила для преобразования телефонных номеров с использованием шаблонов поиска и свопинга (с помощью регулярных выражений и языка Perl).
+&lt;/p&gt;
+&lt;p&gt;
+Каждый раз, когда вы набираете номер, Twinkle пытается найти соответствующие номера в списке шаблонов поиска для чисел со стороны пользователя SIP-адреса. Первое найденное совпадающее выражение - это исходное число, а позиция в («») в поисковом выражении (например, «([0-9] *)» для «любого числа чисел» заменяется символами соответствующих переменных. К примеру, «1 доллар» для первой позиции. См. также `man 7 regex` или konqueror:«#regex». Если совпадающий шаблон не найден, число остаётся неизменным.
+&lt;/p&gt;
+&lt;p&gt;
+Правила будут также применяться к номерам входящих вызовов. В зависимости от установленных правил они будут преобразованы в нужный формат.
+&lt;/p&gt;
+&lt;h3&gt;1. пример&lt;/h3&gt;
+&lt;p&gt;
+К примеру, ваш национальный код «420» для Чешской Республики, и в вашем каталоге у вас также есть много национальных номеров, хранящихся в международном формате. Например, позвоните по телефону +420 777 2345678. Тем не менее, провайдер VoIP ожидает по национальному звонку 0577 2345678. Вы хотите заменить «+420» на «0» и заменить «+» на «00» на внешние вызовы.
+&lt;/p&gt;
+&lt;p&gt;
+В этом порядке требуются следующие правила:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Поисковый запрос = \ +49 ([0-9] *), Замена = 0 $ 1&lt;br&gt;
+Поисковый запрос = \ + ([0-9] *), Замена = 00 $ 1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;2. пример&lt;/h3&gt;
+&lt;p&gt;
+Вы находитесь на телефонной станции, и все номера с 0 в качестве первой цифры должны быть пронумерованы 9.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Поисковый запрос = 0 [0-9] *, Замена = 9 $ &amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+($&amp; - специальная переменная, в которой хранится весь исходный номер)&lt;br&gt;
+Примечание. Это правило нельзя задать просто как третье правило для двух правил в предыдущем примере. Это будет использовать только первое, чтобы соответствовать поиску. Вместо этого замена в Правилах 1 и 2 должна быть изменена - «57$1» и «577$1»,</translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation>Если включено, Twinkle пытается зашифровать аудиоданные во всех исходящих и входящих вызовах. Для того, чтобы вызов был зашифрован, контрагент должен также поддерживать шифрование ZRTP / SRTP. В противном случае вызов остаётся незашифрованным.</translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation>&lt;H2&gt;Тип отображения ожидающего сообщения&lt;/H2&gt;
+&lt;p&gt;
+Если ваш SIP-провайдер предлагает оповещения о сохранённых сообщениях в вашей голосовой почте, Twinkle может рассказать вам о новых и уже услышанных сообщениях в вашей голосовой почте. Спросите своего провайдера, какой тип ожидающего сообщения используется
+&lt;/p&gt;
+&lt;H3&gt;Незапрошенный&lt;/H3&gt;
+&lt;p&gt;
+Asterisk поддерживает незапрошенные ожидающие сообщения.
+&lt;/p&gt;
+&lt;H3&gt;Запрошенный&lt;/H3&gt;
+&lt;p&gt;
+Запрошенная индикация ожидающего сообщения в соответствии с RFC 3842.
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation>Незапрошенный</translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation>Запрошенный</translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation>Запрошенный MWI</translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation>Для запрошенного MWI, конечное устройство сообщает серверу о получении сообщения в течение определённого периода времени, и до истечения этого времени регистрация должна возобновиться.</translation>
+ </message>
</context>
<context>
<name>WizardForm</name>
@@ -5833,4 +5849,4 @@ This could be the hostname or IP address of your PC if you want direct PC to PC
<translation>Отклонить</translation>
</message>
</context>
-</TS>
+</TS> \ No newline at end of file
diff --git a/src/gui/lang/twinkle_sk.ts b/src/gui/lang/twinkle_sk.ts
new file mode 100644
index 0000000..5197faa
--- /dev/null
+++ b/src/gui/lang/twinkle_sk.ts
@@ -0,0 +1,5988 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sk" sourcelanguage="en">
+<context>
+ <name>AddressCardForm</name>
+ <message>
+ <source>Twinkle - Address Card</source>
+ <translation>Twinkle - Záznam v adresári</translation>
+ </message>
+ <message>
+ <source>&amp;Remark:</source>
+ <translation>P&amp;oznámka:</translation>
+ </message>
+ <message>
+ <source>Infix name of contact.</source>
+ <translation>Prostredné meno.</translation>
+ </message>
+ <message>
+ <source>First name of contact.</source>
+ <translation>Krstné meno.</translation>
+ </message>
+ <message>
+ <source>&amp;First name:</source>
+ <translation>&amp;Krstné meno:</translation>
+ </message>
+ <message>
+ <source>You may place any remark about the contact here.</source>
+ <translation>Sem môžete vložiť akúkoľvek poznámku o kontakte.</translation>
+ </message>
+ <message>
+ <source>&amp;Phone:</source>
+ <translation>&amp;Telefón:</translation>
+ </message>
+ <message>
+ <source>&amp;Infix name:</source>
+ <translation>&amp;Prostredné meno:</translation>
+ </message>
+ <message>
+ <source>Phone number or SIP address of contact.</source>
+ <translation>Telefónne číslo alebo SIP adresa kontaktu.</translation>
+ </message>
+ <message>
+ <source>Last name of contact.</source>
+ <translation>Priezvisko kontaktu.</translation>
+ </message>
+ <message>
+ <source>&amp;Last name:</source>
+ <translation>&amp;Priezvisko:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>You must fill in a name.</source>
+ <translation>Musíte zadať meno.</translation>
+ </message>
+ <message>
+ <source>You must fill in a phone number or SIP address.</source>
+ <translation>Musíte zadať telefónne číslo alebo SIP adresu.</translation>
+ </message>
+</context>
+<context>
+ <name>AddressTableModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Meno</translation>
+ </message>
+ <message>
+ <source>Phone</source>
+ <translation>Telefón</translation>
+ </message>
+ <message>
+ <source>Remark</source>
+ <translation>Poznámka</translation>
+ </message>
+</context>
+<context>
+ <name>AuthenticationForm</name>
+ <message>
+ <source>Twinkle - Authentication</source>
+ <translation>Twinkle - Prihlásenie</translation>
+ </message>
+ <message>
+ <source>user</source>
+ <comment>No need to translate</comment>
+ <translation>user</translation>
+ </message>
+ <message>
+ <source>The user for which authentication is requested.</source>
+ <translation>Používateľ, ktorý sa má prihlásiť.</translation>
+ </message>
+ <message>
+ <source>profile</source>
+ <comment>No need to translate</comment>
+ <translation>profile</translation>
+ </message>
+ <message>
+ <source>The user profile of the user for which authentication is requested.</source>
+ <translation>Profil používateľa, pre ktorého je vyžadované prihlásenie.</translation>
+ </message>
+ <message>
+ <source>User profile:</source>
+ <translation>Profil používateľa:</translation>
+ </message>
+ <message>
+ <source>User:</source>
+ <translation>Používateľ:</translation>
+ </message>
+ <message>
+ <source>&amp;Password:</source>
+ <translation>&amp;Heslo:</translation>
+ </message>
+ <message>
+ <source>Your password for authentication.</source>
+ <translation>Vaše heslo na prihlásenie.</translation>
+ </message>
+ <message>
+ <source>Your SIP authentication name. Quite often this is the same as your SIP user name. It can be a different name though.</source>
+ <translation>Vaše prihlasovacie SIP meno. Často je rovnaké ako vaše SIP meno, no môže sa aj líšiť.</translation>
+ </message>
+ <message>
+ <source>&amp;User name:</source>
+ <translation>Meno &amp;používateľa:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Login required for realm:</source>
+ <translation>Prihlásenie vyžadované pre realm:</translation>
+ </message>
+ <message>
+ <source>realm</source>
+ <comment>No need to translate</comment>
+ <translation>realm</translation>
+ </message>
+ <message>
+ <source>The realm for which you need to authenticate.</source>
+ <translation>Realm, ku ktorému je vyžadované prihlásenie.</translation>
+ </message>
+</context>
+<context>
+ <name>BuddyForm</name>
+ <message>
+ <source>Twinkle - Buddy</source>
+ <translation>Twinkle - Kontakt</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Vybrať adresu z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;Phone:</source>
+ <translation>&amp;Telefón:</translation>
+ </message>
+ <message>
+ <source>Name of your buddy.</source>
+ <translation>Meno vášho kontaktu.</translation>
+ </message>
+ <message>
+ <source>&amp;Show availability</source>
+ <translation>Zobraziť dostupno&amp;sť</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Check this option if you want to see the availability of your buddy. This will only work if your provider offers a presence agent.</source>
+ <translation>Vyberte túto možnosť, ak chcete vidieť dostupnosť vytvoreného kontaktu. Toto bude fungovať iba vtedy, ak váš poskytovateľ ponúka túto možnosť.</translation>
+ </message>
+ <message>
+ <source>&amp;Name:</source>
+ <translation>&amp;Meno:</translation>
+ </message>
+ <message>
+ <source>SIP address your buddy.</source>
+ <translation>SIP adresa vášho kontaktu.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>You must fill in a name.</source>
+ <translation>Musíte zadať meno.</translation>
+ </message>
+ <message>
+ <source>Invalid phone.</source>
+ <translation>Neplatné telefónne číslo.</translation>
+ </message>
+ <message>
+ <source>Failed to save buddy list: %1</source>
+ <translation>Nepodarilo sa uložiť zoznam kontaktov: %1</translation>
+ </message>
+</context>
+<context>
+ <name>BuddyList</name>
+ <message>
+ <source>Availability</source>
+ <translation>Dostupnosť</translation>
+ </message>
+ <message>
+ <source>unknown</source>
+ <translation>neznáma</translation>
+ </message>
+ <message>
+ <source>offline</source>
+ <translation>offline</translation>
+ </message>
+ <message>
+ <source>online</source>
+ <translation>online</translation>
+ </message>
+ <message>
+ <source>request rejected</source>
+ <translation>požiadavka odmietnutá</translation>
+ </message>
+ <message>
+ <source>not published</source>
+ <translation>nie je zverejnená</translation>
+ </message>
+ <message>
+ <source>failed to publish</source>
+ <translation>zverejnenie zlyhalo</translation>
+ </message>
+ <message>
+ <source>request failed</source>
+ <translation>požiadavka zlyhala</translation>
+ </message>
+ <message>
+ <source>Click right to add a buddy.</source>
+ <translation>Pravým kliknutím pridáte kontakt.</translation>
+ </message>
+</context>
+<context>
+ <name>CoreAudio</name>
+ <message>
+ <source>Failed to open sound card</source>
+ <translation>Nepodarilo sa získať prístup ku zvukovej karte</translation>
+ </message>
+ <message>
+ <source>Failed to create a UDP socket (RTP) on port %1</source>
+ <translation>Nepodarilo sa vytvoriť UDP socket (RTP) na porte %1</translation>
+ </message>
+ <message>
+ <source>Failed to create audio receiver thread.</source>
+ <translation>Nepodarilo sa vytvoriť vlákno pre nahrávanie zvuku.</translation>
+ </message>
+ <message>
+ <source>Failed to create audio transmitter thread.</source>
+ <translation>Nepodarilo sa vytvoriť vlákno pre prehrávanie zvuku.</translation>
+ </message>
+</context>
+<context>
+ <name>CoreCallHistory</name>
+ <message>
+ <source>local user</source>
+ <translation>lokálny používateľ</translation>
+ </message>
+ <message>
+ <source>remote user</source>
+ <translation>vzdialený používateľ</translation>
+ </message>
+ <message>
+ <source>failure</source>
+ <translation>chyba</translation>
+ </message>
+ <message>
+ <source>unknown</source>
+ <translation>neznámy</translation>
+ </message>
+ <message>
+ <source>in</source>
+ <translation>prichádzajúce</translation>
+ </message>
+ <message>
+ <source>out</source>
+ <translation>odchádzajúce</translation>
+ </message>
+</context>
+<context>
+ <name>DeregisterForm</name>
+ <message>
+ <source>Twinkle - Deregister</source>
+ <translation>Twinkle - Odregistrovať</translation>
+ </message>
+ <message>
+ <source>deregister all devices</source>
+ <translation>odregistrovať všetky zariadenia</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+</context>
+<context>
+ <name>DiamondcardProfileForm</name>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation type="obsolete">Zrušiť (Es&amp;c)</translation>
+ </message>
+ <message>
+ <source>Fill in your account ID.</source>
+ <translation>Zadajte ID vášho účtu.</translation>
+ </message>
+ <message>
+ <source>Fill in your PIN code.</source>
+ <translation>Zadajte váš kód PIN.</translation>
+ </message>
+ <message>
+ <source>A user profile with name %1 already exists.</source>
+ <translation>Profil používateľa s menom %1 už existuje.</translation>
+ </message>
+</context>
+<context>
+ <name>DtmfForm</name>
+ <message>
+ <source>Twinkle - DTMF</source>
+ <translation>Twinkle - DTMF</translation>
+ </message>
+ <message>
+ <source>Keypad</source>
+ <translation>Numerická klávesnica</translation>
+ </message>
+ <message>
+ <source>2</source>
+ <translation>2</translation>
+ </message>
+ <message>
+ <source>3</source>
+ <translation>3</translation>
+ </message>
+ <message>
+ <source>Over decadic A. Normally not needed.</source>
+ <translation>Funkčný kláves A. Používaný zriedkavo.</translation>
+ </message>
+ <message>
+ <source>4</source>
+ <translation>4</translation>
+ </message>
+ <message>
+ <source>5</source>
+ <translation>5</translation>
+ </message>
+ <message>
+ <source>6</source>
+ <translation>6</translation>
+ </message>
+ <message>
+ <source>Over decadic B. Normally not needed.</source>
+ <translation>Funkčný kláves B. Používaný zriedkavo.</translation>
+ </message>
+ <message>
+ <source>7</source>
+ <translation>7</translation>
+ </message>
+ <message>
+ <source>8</source>
+ <translation>8</translation>
+ </message>
+ <message>
+ <source>9</source>
+ <translation>9</translation>
+ </message>
+ <message>
+ <source>Over decadic C. Normally not needed.</source>
+ <translation>Funkčný kláves C. Používaný zriedkavo.</translation>
+ </message>
+ <message>
+ <source>Star (*)</source>
+ <translation>Hviezdička (*)</translation>
+ </message>
+ <message>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <source>Pound (#)</source>
+ <translation>Mriežka (#)</translation>
+ </message>
+ <message>
+ <source>Over decadic D. Normally not needed.</source>
+ <translation>Funkčný kláves D. Používaný zriedkavo.</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;Zavrieť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+</context>
+<context>
+ <name>FreeDeskSysTray</name>
+ <message>
+ <source>Show/Hide</source>
+ <translation type="obsolete">Zobraziť/Minimalizovať</translation>
+ </message>
+ <message>
+ <source>Quit</source>
+ <translation type="obsolete">Ukončiť</translation>
+ </message>
+</context>
+<context>
+ <name>GUI</name>
+ <message>
+ <source>The following profiles are both for user %1</source>
+ <translation>Nasledujúce profily používajú rovnakého používateľa %1</translation>
+ </message>
+ <message>
+ <source>You can only run multiple profiles for different users.</source>
+ <translation>Viac profilov môžete používať iba pri rôznych používateľoch.</translation>
+ </message>
+ <message>
+ <source>Cannot find a network interface. Twinkle will use 127.0.0.1 as the local IP address. When you connect to the network you have to restart Twinkle to use the correct IP address.</source>
+ <translation>Nepodarilo sa nájsť sieťové rozhranie. Twinkle použije 127.0.0.1 ako svoju lokálnu IP adresu. Ak sa pripojíte k sieti neskôr, musíte Twinkle spustiť znovu, aby začal používať správnu IP adresu.</translation>
+ </message>
+ <message>
+ <source>Line %1: incoming call for %2</source>
+ <translation>Linka %1: prichádzajúci hovor pre %2</translation>
+ </message>
+ <message>
+ <source>Call transferred by %1</source>
+ <translation>Volanie prepojené používateľom %1</translation>
+ </message>
+ <message>
+ <source>Line %1: far end cancelled call.</source>
+ <translation>Linka %1: protistrana prerušila hovor.</translation>
+ </message>
+ <message>
+ <source>Line %1: far end released call.</source>
+ <translation>Linka %1: hovor ukončený protistranou.</translation>
+ </message>
+ <message>
+ <source>Line %1: SDP answer from far end not supported.</source>
+ <translation>Linka %1: SDP odpoveď protistrany nie je podporovaná.</translation>
+ </message>
+ <message>
+ <source>Line %1: SDP answer from far end missing.</source>
+ <translation>Linka %1: chýbajúca SDP odpoveď protistrany.</translation>
+ </message>
+ <message>
+ <source>Line %1: Unsupported content type in answer from far end.</source>
+ <translation>Linka %1: Typ obsahu v odpovedi protistrany nie je podporovaný.</translation>
+ </message>
+ <message>
+ <source>Line %1: no ACK received, call will be terminated.</source>
+ <translation>Linka %1: žiadny ACK od protistrany, volanie bude ukončené.</translation>
+ </message>
+ <message>
+ <source>Line %1: no PRACK received, call will be terminated.</source>
+ <translation>Linka %1: žiadny PRACK od protistrany, volanie bude ukončené.</translation>
+ </message>
+ <message>
+ <source>Line %1: PRACK failed.</source>
+ <translation>Linka %1: PRACK zlyhalo.</translation>
+ </message>
+ <message>
+ <source>Line %1: failed to cancel call.</source>
+ <translation>Linka %1: chyba pri pokuse o ukončenie hovoru.</translation>
+ </message>
+ <message>
+ <source>Line %1: far end answered call.</source>
+ <translation>Linka %1: protistrana prijala hovor.</translation>
+ </message>
+ <message>
+ <source>Line %1: call failed.</source>
+ <translation>Linka %1: volanie zlyhalo.</translation>
+ </message>
+ <message>
+ <source>The call can be redirected to:</source>
+ <translation>Hovor môže byť presmerovaný na:</translation>
+ </message>
+ <message>
+ <source>Line %1: call released.</source>
+ <translation>Linka %1: hovor ukončený.</translation>
+ </message>
+ <message>
+ <source>Line %1: call established.</source>
+ <translation>Linka %1:spojenie nadviazané.</translation>
+ </message>
+ <message>
+ <source>Response on terminal capability request: %1 %2</source>
+ <translation>Odpoveď protistrany na požiadavku na výpis schopností: %1 %2</translation>
+ </message>
+ <message>
+ <source>Terminal capabilities of %1</source>
+ <translation>Schopnosti protistrany %1</translation>
+ </message>
+ <message>
+ <source>Accepted body types:</source>
+ <translation>Akceptované &quot;body types&quot;:</translation>
+ </message>
+ <message>
+ <source>unknown</source>
+ <translation>neznáme</translation>
+ </message>
+ <message>
+ <source>Accepted encodings:</source>
+ <translation>Akceptované kódovania:</translation>
+ </message>
+ <message>
+ <source>Accepted languages:</source>
+ <translation>Akceptované jazyky:</translation>
+ </message>
+ <message>
+ <source>Allowed requests:</source>
+ <translation>Povolené požiadavky:</translation>
+ </message>
+ <message>
+ <source>Supported extensions:</source>
+ <translation>Podporované rozšírenia:</translation>
+ </message>
+ <message>
+ <source>none</source>
+ <translation>žiadne</translation>
+ </message>
+ <message>
+ <source>End point type:</source>
+ <translation>Typ koncového zariadenia:</translation>
+ </message>
+ <message>
+ <source>Line %1: call retrieve failed.</source>
+ <translation>Linka %1: chyba pri pokuse o obnovenie hovoru.</translation>
+ </message>
+ <message>
+ <source>%1, registration failed: %2 %3</source>
+ <translation>%1, neúspešné prihlásenie: %2 %3</translation>
+ </message>
+ <message>
+ <source>%1, registration succeeded (expires = %2 seconds)</source>
+ <translation>%1, registrácia úspešná (platná na %2 sekúnd)</translation>
+ </message>
+ <message>
+ <source>%1, registration failed: STUN failure</source>
+ <translation>%1, registrácia skončila s chybou: zlyhanie STUN</translation>
+ </message>
+ <message>
+ <source>%1, de-registration succeeded: %2 %3</source>
+ <translation>%1, úspešné odhlásenie: %2 %3</translation>
+ </message>
+ <message>
+ <source>%1, fetching registrations failed: %2 %3</source>
+ <translation>%1, chyba pri požiadavke na registráciu: %2 %3</translation>
+ </message>
+ <message>
+ <source>: you are not registered</source>
+ <translation>: nie ste registrovaný</translation>
+ </message>
+ <message>
+ <source>: you have the following registrations</source>
+ <translation>: sú aktívne nasledujúce registrácie</translation>
+ </message>
+ <message>
+ <source>: fetching registrations...</source>
+ <translation>: prebieha požiadavka na registrácie...</translation>
+ </message>
+ <message>
+ <source>Line %1: redirecting request to</source>
+ <translation>Linka %1: požiadavka presmerovaná na</translation>
+ </message>
+ <message>
+ <source>Redirecting request to: %1</source>
+ <translation>Presmerovať požiadavku na: %1</translation>
+ </message>
+ <message>
+ <source>Line %1: DTMF detected:</source>
+ <translation>Linka %1: detegované DTMF:</translation>
+ </message>
+ <message>
+ <source>invalid DTMF telephone event (%1)</source>
+ <translation>neplatná udalosť DTMF (%1)</translation>
+ </message>
+ <message>
+ <source>Line %1: send DTMF %2</source>
+ <translation>Linka %1: odosiela sa DTMF %2</translation>
+ </message>
+ <message>
+ <source>Line %1: far end does not support DTMF telephone events.</source>
+ <translation>Linka %1: protistrana nepodporuje udalosti DTMF.</translation>
+ </message>
+ <message>
+ <source>Line %1: received notification.</source>
+ <translation>Linka %1: prijatá notifikácia.</translation>
+ </message>
+ <message>
+ <source>Event: %1</source>
+ <translation>Udalosť: %1</translation>
+ </message>
+ <message>
+ <source>State: %1</source>
+ <translation>Stav: %1</translation>
+ </message>
+ <message>
+ <source>Reason: %1</source>
+ <translation>Dôvod: %1</translation>
+ </message>
+ <message>
+ <source>Progress: %1 %2</source>
+ <translation>Priebeh: %1 %2</translation>
+ </message>
+ <message>
+ <source>Line %1: call transfer failed.</source>
+ <translation>Linka %1: prepojenie hovoru zlyhalo.</translation>
+ </message>
+ <message>
+ <source>Line %1: call successfully transferred.</source>
+ <translation>Linka %1: hovor bol úspešne prepojený.</translation>
+ </message>
+ <message>
+ <source>Line %1: call transfer still in progress.</source>
+ <translation>Linka %1: prepojenie hovoru stále prebieha.</translation>
+ </message>
+ <message>
+ <source>No further notifications will be received.</source>
+ <translation>Nebudú prijímané ďalšie notifikácie.</translation>
+ </message>
+ <message>
+ <source>Line %1: transferring call to %2</source>
+ <translation>Linka %1: hovor sa prepája na %2</translation>
+ </message>
+ <message>
+ <source>Transfer requested by %1</source>
+ <translation>Prepojenie vyžiadal %1</translation>
+ </message>
+ <message>
+ <source>Line %1: Call transfer failed. Retrieving original call.</source>
+ <translation>Linka %1: Prepojenie hovoru zlyhalo. Obnovujem pôvodný hovor.</translation>
+ </message>
+ <message>
+ <source>Redirecting call</source>
+ <translation>Presmerovávam hovor</translation>
+ </message>
+ <message>
+ <source>User profile:</source>
+ <translation>Profil používateľa:</translation>
+ </message>
+ <message>
+ <source>User:</source>
+ <translation>Používateľ:</translation>
+ </message>
+ <message>
+ <source>Do you allow the call to be redirected to the following destination?</source>
+ <translation>Súhlasíte, aby bol hovor presmerovaný na túto destináciu?</translation>
+ </message>
+ <message>
+ <source>If you don&apos;t want to be asked this anymore, then you must change the settings in the SIP protocol section of the user profile.</source>
+ <translation>Ak na túto otázku už ďalej nechcete odpovedať, musíte zmeniť nastavenia v sekcii protokol SIP v profile používateľa.</translation>
+ </message>
+ <message>
+ <source>Redirecting request</source>
+ <translation>Presmerovávam požiadavku</translation>
+ </message>
+ <message>
+ <source>Do you allow the %1 request to be redirected to the following destination?</source>
+ <translation>Má byť požiadavka %1 presmerovaná na nasledujúcu destináciu?</translation>
+ </message>
+ <message>
+ <source>Transferring call</source>
+ <translation>Prepájanie hovoru</translation>
+ </message>
+ <message>
+ <source>Request to transfer call received from:</source>
+ <translation>Požiadavka na prepojenie hovoru prijatá od:</translation>
+ </message>
+ <message>
+ <source>Do you allow the call to be transferred to the following destination?</source>
+ <translation>Povoliť prepojenie hovoru k nasledujúcej destinácii?</translation>
+ </message>
+ <message>
+ <source>Info:</source>
+ <translation>Info:</translation>
+ </message>
+ <message>
+ <source>Warning:</source>
+ <translation>Varovanie:</translation>
+ </message>
+ <message>
+ <source>Critical:</source>
+ <translation>Kritické:</translation>
+ </message>
+ <message>
+ <source>Firewall / NAT discovery...</source>
+ <translation>Detekcia firewallu/NATu...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Prerušiť</translation>
+ </message>
+ <message>
+ <source>Line %1</source>
+ <translation>Linka %1</translation>
+ </message>
+ <message>
+ <source>Click the padlock to confirm a correct SAS.</source>
+ <translation>Pre potvrdenie správneho hesla SAS kliknite na ikonu zámku.</translation>
+ </message>
+ <message>
+ <source>The remote user on line %1 disabled the encryption.</source>
+ <translation>Protistrana na linke %1 deaktivovala šifrovanie.</translation>
+ </message>
+ <message>
+ <source>Line %1: SAS confirmed.</source>
+ <translation>Linka %1: SAS potvrdené.</translation>
+ </message>
+ <message>
+ <source>Line %1: SAS confirmation reset.</source>
+ <translation>Linka %1: SAS potvrdenie vymazané.</translation>
+ </message>
+ <message>
+ <source>Line %1: call rejected.</source>
+ <translation>Linka %1: hovor odmietnutý.</translation>
+ </message>
+ <message>
+ <source>Line %1: call redirected.</source>
+ <translation>Linka %1: hovor presmerovaný.</translation>
+ </message>
+ <message>
+ <source>Failed to start conference.</source>
+ <translation>Nepodarilo sa zahájiť konferenciu.</translation>
+ </message>
+ <message>
+ <source>Override lock file and start anyway?</source>
+ <translation>Ignorovať súbor so zámkom a spustiť aj tak?</translation>
+ </message>
+ <message>
+ <source>%1, STUN request failed: %2 %3</source>
+ <translation>%1, STUN požiadavka zlyhala: %2 %3</translation>
+ </message>
+ <message>
+ <source>%1, STUN request failed.</source>
+ <translation>%1, STUN požiadavka zlyhala.</translation>
+ </message>
+ <message>
+ <source>%1, voice mail status failure.</source>
+ <translation>%1, chyba stavu hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>%1, voice mail status rejected.</source>
+ <translation>%1, odmietnutý stav hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>%1, voice mailbox does not exist.</source>
+ <translation>%1, hlasová schránka neexistuje.</translation>
+ </message>
+ <message>
+ <source>%1, voice mail status terminated.</source>
+ <translation>%1, ukončený prenos z hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>%1, de-registration failed: %2 %3</source>
+ <translation>%1, deregistrácia zlyhala: %2 %3</translation>
+ </message>
+ <message>
+ <source>Request to transfer call received.</source>
+ <translation>Prijatá požiadavka na prepojenie hovoru.</translation>
+ </message>
+ <message>
+ <source>If these are users for different domains, then enable the following option in your user profile (SIP protocol)</source>
+ <translation>Ak sú toto používatelia pre rôzne domény, aktivujte nasledujúcu voľbu v profile vášho používateľa (Protokol SIP)</translation>
+ </message>
+ <message>
+ <source>Use domain name to create a unique contact header</source>
+ <translation>Použiť doménové meno pre vytvorenie jedinečnej kontaktnej hlavičky</translation>
+ </message>
+ <message>
+ <source>Failed to create a %1 socket (SIP) on port %2</source>
+ <translation>Zlyhalo vytvorenie %1 socketu (SIP) na porte %2</translation>
+ </message>
+ <message>
+ <source>Accepted by network</source>
+ <translation>Akceptované sieťou</translation>
+ </message>
+ <message>
+ <source>Failed to save message attachment: %1</source>
+ <translation>Zlyhalo uloženie prílohy správy: %1</translation>
+ </message>
+ <message>
+ <source>Transferred by: %1</source>
+ <translation>Prepojil: %1</translation>
+ </message>
+ <message>
+ <source>Cannot open web browser: %1</source>
+ <translation>Nemôžem otvoriť webový prehliadač: %1</translation>
+ </message>
+ <message>
+ <source>Configure your web browser in the system settings.</source>
+ <translation>Nastavte váš webový prehliadač v nastaveniach systému.</translation>
+ </message>
+</context>
+<context>
+ <name>GetAddressForm</name>
+ <message>
+ <source>Twinkle - Select address</source>
+ <translation>Twinkle - Výber adresy</translation>
+ </message>
+ <message>
+ <source>&amp;Show only SIP addresses</source>
+ <translation>Zobraziť iba adresy &amp;SIP</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Check this option when you only want to see contacts with SIP addresses, i.e. starting with &quot;&lt;b&gt;sip:&lt;/b&gt;&quot;.</source>
+ <translation>Ak je aktivované, budú zobrazené iba kontakty, ktoré obsahujú platnú adresu SIP (začínajúcu na &quot;&lt;b&gt;sip:&lt;/b&gt;&quot;).</translation>
+ </message>
+ <message>
+ <source>&amp;Reload</source>
+ <translation>Aktua&amp;lizovať</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+L</translation>
+ </message>
+ <message>
+ <source>Reload the list of addresses from KAddressbook.</source>
+ <translation>Znovu načítať zoznam adries z KAddressbook.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>&amp;KAddressBook</source>
+ <translation>&amp;KAddressBook</translation>
+ </message>
+ <message>
+ <source>This list of addresses is taken from &lt;b&gt;KAddressBook&lt;/b&gt;. Contacts for which you did not provide a phone number are not shown here. To add, delete or modify address information you have to use KAddressBook.</source>
+ <translation>Tento zoznam kontaktov pochádza z &lt;b&gt;KAddressBook&lt;/b&gt;. Kontakty, ktoré neobsahujú telefónne číslo alebo adresu SIP tu nie sú uvedené. Pre vytvorenie alebo úpravu kontaktov použite program KAddressBook.</translation>
+ </message>
+ <message>
+ <source>&amp;Local address book</source>
+ <translation>&amp;Miestny adresár</translation>
+ </message>
+ <message>
+ <source>Remark</source>
+ <translation type="obsolete">Poznámka</translation>
+ </message>
+ <message>
+ <source>Contacts in the local address book of Twinkle.</source>
+ <translation>Kontakty v lokálnom adresári Twinkle.</translation>
+ </message>
+ <message>
+ <source>&amp;Add</source>
+ <translation>Prid&amp;ať</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+A</translation>
+ </message>
+ <message>
+ <source>Add a new contact to the local address book.</source>
+ <translation>Pridať nový kontakt do miestneho adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;Delete</source>
+ <translation>O&amp;dstrániť</translation>
+ </message>
+ <message>
+ <source>Alt+D</source>
+ <translation>Alt+D</translation>
+ </message>
+ <message>
+ <source>Delete a contact from the local address book.</source>
+ <translation>Vymazať vybraný kontakt z miestneho adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;Edit</source>
+ <translation>&amp;Upraviť</translation>
+ </message>
+ <message>
+ <source>Alt+E</source>
+ <translation>Alt+U</translation>
+ </message>
+ <message>
+ <source>Edit a contact from the local address book.</source>
+ <translation>Upraviť vybraný kontakt v miestnom adresári.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;You seem not to have any contacts with a phone number in &lt;b&gt;KAddressBook&lt;/b&gt;, KDE&apos;s address book application. Twinkle retrieves all contacts with a phone number from KAddressBook. To manage your contacts you have to use KAddressBook.&lt;p&gt;As an alternative you may use Twinkle&apos;s local address book.&lt;/p&gt;</source>
+ <translation>Zdá sa, že &lt;p&gt;&lt;b&gt;KAddressBook&lt;/b&gt; neobsahuje žiadne záznamy s telefónnymi číslami, ktoré by Twinkle mohol načítať. Twinkle načítava z KAddressBook všetky kontakty s telefónnym číslom. Použite prosím tento program pre úpravu alebo pridanie vašich kontaktov.&lt;/p&gt;
+&lt;p&gt;Druhou možnosťou je použiť miestny adresár v Twinkle.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation>Naozaj odstrániť kontakt &apos;%1&apos; z miestneho adresára?</translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation>Odstrániť kontakt</translation>
+ </message>
+</context>
+<context>
+ <name>GetProfileNameForm</name>
+ <message>
+ <source>Twinkle - Profile name</source>
+ <translation>Twinkle - Názov profilu</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Enter a name for your profile:</source>
+ <translation>Zadajte názov profilu:</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;The name of your profile&lt;/b&gt;
+&lt;br&gt;&lt;br&gt;
+A profile contains your user settings, e.g. your user name and password. You have to give each profile a name.
+&lt;br&gt;&lt;br&gt;
+If you have multiple SIP accounts, you can create multiple profiles. When you startup Twinkle it will show you the list of profile names from which you can select the profile you want to run.
+&lt;br&gt;&lt;br&gt;
+To remember your profiles easily you could use your SIP user name as a profile name, e.g. &lt;b&gt;example@example.com&lt;/b&gt;</source>
+ <translation>&lt;b&gt;Názov vášho profilu&lt;/b&gt;
+&lt;br&gt;&lt;br&gt;
+Profil obsahuje všetky nastavenia používateľa, napr. meno používateľa alebo heslo. Každý profil musí byť pomenovaný.
+&lt;br&gt;&lt;br&gt;
+Ak máte viac SIP účtov, môžete si vytvoriť niekoľko profilov. Pri spustení vám Twinkle zobrazí zoznam názvov profilov, z ktorých si môžete vybrať tie, ktoré chcete spustiť.
+&lt;br&gt;&lt;br&gt;
+Pre jednoduchšie zapamätanie profilu ich môžete pomenovať podľa vášho používateľského účtu, napr. &lt;b&gt;example@example.com&lt;/b&gt;
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot find .twinkle directory in your home directory.</source>
+ <translation>Nepodarilo sa nájsť adresár .twinkle vo vašom domovskom adresári.</translation>
+ </message>
+ <message>
+ <source>Profile already exists.</source>
+ <translation>Profil s týmto názvom už existuje.</translation>
+ </message>
+ <message>
+ <source>Rename profile &apos;%1&apos; to:</source>
+ <translation>Premenovať profil &apos;%1&apos; na:</translation>
+ </message>
+</context>
+<context>
+ <name>HistoryForm</name>
+ <message>
+ <source>Twinkle - Call History</source>
+ <translation>Twinkle - Zoznam volaní</translation>
+ </message>
+ <message>
+ <source>Time</source>
+ <translation>Čas</translation>
+ </message>
+ <message>
+ <source>In/Out</source>
+ <translation>Prichádzajúce/Odchádzajúce</translation>
+ </message>
+ <message>
+ <source>From/To</source>
+ <translation>Protistrana</translation>
+ </message>
+ <message>
+ <source>Subject</source>
+ <translation>Predmet</translation>
+ </message>
+ <message>
+ <source>Status</source>
+ <translation>Stav</translation>
+ </message>
+ <message>
+ <source>Call details</source>
+ <translation>Podrobnosti hovoru</translation>
+ </message>
+ <message>
+ <source>Details of the selected call record.</source>
+ <translation>Podrobnosti vybraného hovoru.</translation>
+ </message>
+ <message>
+ <source>View</source>
+ <translation>Zobraziť</translation>
+ </message>
+ <message>
+ <source>&amp;Incoming calls</source>
+ <translation>&amp;Prichádzajúce hovory</translation>
+ </message>
+ <message>
+ <source>Alt+I</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Check this option to show incoming calls.</source>
+ <translation>Zaškrtnite túto voľbu pre zobrazenie prichádzajúcich hovorov.</translation>
+ </message>
+ <message>
+ <source>&amp;Outgoing calls</source>
+ <translation>&amp;Odchádzajúce hovory</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>Check this option to show outgoing calls.</source>
+ <translation>Zaškrtnite túto voľbu pre zobrazenie odchádzajúcich hovorov.</translation>
+ </message>
+ <message>
+ <source>&amp;Answered calls</source>
+ <translation>&amp;Prijaté hovory</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Check this option to show answered calls.</source>
+ <translation>Zaškrtnite túto voľbu pre zobrazenie prijatých hovorov.</translation>
+ </message>
+ <message>
+ <source>&amp;Missed calls</source>
+ <translation>&amp;Zmeškané hovory</translation>
+ </message>
+ <message>
+ <source>Alt+M</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>Check this option to show missed calls.</source>
+ <translation>Zaškrtnite túto voľbu pre zobrazenie zmeškaných hovorov.</translation>
+ </message>
+ <message>
+ <source>Current &amp;user profiles only</source>
+ <translation>&amp;Iba aktívne používateľské profily</translation>
+ </message>
+ <message>
+ <source>Alt+U</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <source>Check this option to show only calls associated with this user profile.</source>
+ <translation>Ak je táto voľba aktivovaná, budú zobrazené iba hovory, ktoré boli uskutočnené pod profilom tohto používateľa.</translation>
+ </message>
+ <message>
+ <source>C&amp;lear</source>
+ <translation>&amp;Vyčistiť</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;Clear the complete call history.&lt;/p&gt;
+&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; this will clear &lt;b&gt;all&lt;/b&gt; records, also records not shown depending on the checked view options.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Vymazať celú históriu volaní.&lt;/p&gt;
+&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Týmto sa vymažú všetky záznamy. Vrátane tých, ktoré momentálne - v závislosti od vybraných parametrov nastavení - nemusia byť zobrazené.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Close this window.</source>
+ <translation>Zavrieť toto okno.</translation>
+ </message>
+ <message>
+ <source>Call start:</source>
+ <translation>Začatý hovor:</translation>
+ </message>
+ <message>
+ <source>Call answer:</source>
+ <translation>Odpovedané na volanie:</translation>
+ </message>
+ <message>
+ <source>Call end:</source>
+ <translation>Hovor ukončený:</translation>
+ </message>
+ <message>
+ <source>Call duration:</source>
+ <translation>Trvanie hovoru:</translation>
+ </message>
+ <message>
+ <source>Direction:</source>
+ <translation>Smer:</translation>
+ </message>
+ <message>
+ <source>From:</source>
+ <translation>Od:</translation>
+ </message>
+ <message>
+ <source>To:</source>
+ <translation>Kam:</translation>
+ </message>
+ <message>
+ <source>Reply to:</source>
+ <translation>Odpovedať na:</translation>
+ </message>
+ <message>
+ <source>Referred by:</source>
+ <translation>Cez:</translation>
+ </message>
+ <message>
+ <source>Subject:</source>
+ <translation>Predmet:</translation>
+ </message>
+ <message>
+ <source>Released by:</source>
+ <translation>Ukončil:</translation>
+ </message>
+ <message>
+ <source>Status:</source>
+ <translation>Stav:</translation>
+ </message>
+ <message>
+ <source>Far end device:</source>
+ <translation>Zariadenie protistrany:</translation>
+ </message>
+ <message>
+ <source>User profile:</source>
+ <translation>Profil používateľa:</translation>
+ </message>
+ <message>
+ <source>conversation</source>
+ <translation>rozhovor</translation>
+ </message>
+ <message>
+ <source>Call...</source>
+ <translation>Volať...</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>Odstrániť</translation>
+ </message>
+ <message>
+ <source>Re:</source>
+ <translation>Odp:</translation>
+ </message>
+ <message>
+ <source>Clo&amp;se</source>
+ <translation>Za&amp;vrieť</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>&amp;Call</source>
+ <translation>&amp;Volať</translation>
+ </message>
+ <message>
+ <source>Call selected address.</source>
+ <translation>Zavolať na vybranú adresu.</translation>
+ </message>
+ <message>
+ <source>Number of calls:</source>
+ <translation>Počet hovorov:</translation>
+ </message>
+ <message>
+ <source>###</source>
+ <translation>###</translation>
+ </message>
+ <message>
+ <source>Total call duration:</source>
+ <translation>Celkové trvanie hovorov:</translation>
+ </message>
+</context>
+<context>
+ <name>IncomingCallPopup</name>
+ <message>
+ <source>%1 calling</source>
+ <translation>%1 volá</translation>
+ </message>
+</context>
+<context>
+ <name>InviteForm</name>
+ <message>
+ <source>Twinkle - Call</source>
+ <translation>Twinkle - Volanie</translation>
+ </message>
+ <message>
+ <source>&amp;To:</source>
+ <translation>K&amp;am:</translation>
+ </message>
+ <message>
+ <source>Optionally you can provide a subject here. This might be shown to the callee.</source>
+ <translation>Tu môžete voliteľne zadať predmet hovoru, ktorý môže byť zobrazený volanému účastníkovi.</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Vybrať adresu z adresára.</translation>
+ </message>
+ <message>
+ <source>The address that you want to call. This can be a full SIP address like &lt;b&gt;sip:example@example.com&lt;/b&gt; or just the user part or telephone number of the full address. When you do not specify a full address, then Twinkle will complete the address by using the domain value of your user profile.</source>
+ <translation>Adresa, na ktorú chcete zavolať. Toto môže byť plnohodnotná adresa SIP ako napr. &lt;b&gt;sip:priklad@priklad.com&lt;/b&gt; alebo len meno používateľa, príp. telefónne číslo. Ak nie je zadaná úplná adresa, Twinkle ju doplní o doménové meno aktuálneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>The user that will make the call.</source>
+ <translation>Používateľ, ktorý uskutoční hovor.</translation>
+ </message>
+ <message>
+ <source>&amp;Subject:</source>
+ <translation>&amp;Predmet:</translation>
+ </message>
+ <message>
+ <source>&amp;From:</source>
+ <translation>&amp;Od:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>&amp;Hide identity</source>
+ <translation>&amp;Skryť identitu volajúceho</translation>
+ </message>
+ <message>
+ <source>Alt+H</source>
+ <translation>Alt+H</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+With this option you request your SIP provider to hide your identity from the called party. This will only hide your identity, e.g. your SIP address, telephone number. It does &lt;b&gt;not&lt;/b&gt; hide your IP address.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;Warning:&lt;/b&gt; not all providers support identity hiding.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Touto voľbou dávate najavo vášmu poskytovateľovi SIP, že si neželáte, aby boli protistrane zaslané informácie o vašej identite. Napr. vaša adresa SIP alebo telefónne číslo. Vaša IP adresa bude protistrane &lt;b&gt;vždy&lt;/b&gt; zobrazená.&lt;/p&gt;
+&lt;p&gt;&lt;b&gt;Upozornenie:&lt;/b&gt; Túto možnosť nepodporujú všetci poskytovatelia!&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Not all SIP providers support identity hiding. Make sure your SIP provider supports it if you really need it.</source>
+ <translation>Nie všetci poskytovatelia SIP umožňujú skrytie identity. Ak túto funkciu naozaj potrebujete, uistite sa, že ju váš poskytovateľ SIP ponúka.</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+</context>
+<context>
+ <name>LogViewForm</name>
+ <message>
+ <source>Twinkle - Log</source>
+ <translation>Twinkle - Protokol</translation>
+ </message>
+ <message>
+ <source>Contents of the current log file (~/.twinkle/twinkle.log)</source>
+ <translation>Obsah aktuálneho súboru s protokolom (~/.twinkle/twinkle.log)</translation>
+ </message>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;Zavrieť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>C&amp;lear</source>
+ <translation>&amp;Vyčistiť</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>Clear the log window. This does &lt;b&gt;not&lt;/b&gt; clear the log file itself.</source>
+ <translation>Vyčistiť okno s protokolom. Obsah samotného súboru s protokolom odstránený &lt;b&gt;nebude&lt;/b&gt;.</translation>
+ </message>
+</context>
+<context>
+ <name>MessageForm</name>
+ <message>
+ <source>Twinkle - Instant message</source>
+ <translation>Twinkle - Textová správa</translation>
+ </message>
+ <message>
+ <source>&amp;To:</source>
+ <translation>&amp;Komu:</translation>
+ </message>
+ <message>
+ <source>The user that will send the message.</source>
+ <translation>Používateľ, ktorý pošle správu.</translation>
+ </message>
+ <message>
+ <source>The address of the user that you want to send a message. This can be a full SIP address like &lt;b&gt;sip:example@example.com&lt;/b&gt; or just the user part or telephone number of the full address. When you do not specify a full address, then Twinkle will complete the address by using the domain value of your user profile.</source>
+ <translation>Adresa používateľa, ktorému chcete poslať správu. Môže to byť buď adresa SIP, ako napríklad &lt;b&gt;sip:priklad@priklad.com&lt;/b&gt; alebo len používateľ, príp. telefónne číslo. Ak neuvediete celú adresu, Twinkle doplní adresu doménou z profilu vášho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Výber adresy z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;User profile:</source>
+ <translation>&amp;Profil používateľa:</translation>
+ </message>
+ <message>
+ <source>Conversation</source>
+ <translation>Konverzácia</translation>
+ </message>
+ <message>
+ <source>Type your message here and then press &quot;send&quot; to send it.</source>
+ <translation>Sem napíšte správu a stlačením tlačidla &quot;Odoslať&quot; ju odošlite.</translation>
+ </message>
+ <message>
+ <source>&amp;Send</source>
+ <translation>&amp;Odoslať</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+D</translation>
+ </message>
+ <message>
+ <source>Send the message.</source>
+ <translation>Odoslať správu.</translation>
+ </message>
+ <message>
+ <source>Delivery failure</source>
+ <translation>Doručenie zlyhalo</translation>
+ </message>
+ <message>
+ <source>Delivery notification</source>
+ <translation>Potvrdenie o doručení</translation>
+ </message>
+ <message>
+ <source>Send file...</source>
+ <translation>Odoslať súbor...</translation>
+ </message>
+ <message>
+ <source>Send file</source>
+ <translation>Odoslať súbor</translation>
+ </message>
+ <message>
+ <source>image size is scaled down in preview</source>
+ <translation>obrázok je v náhľade zmenšený</translation>
+ </message>
+ <message>
+ <source>Open with %1...</source>
+ <translation>Otvoriť s %1...</translation>
+ </message>
+ <message>
+ <source>Open with...</source>
+ <translation>Otvoriť s...</translation>
+ </message>
+ <message>
+ <source>Save attachment as...</source>
+ <translation>Uložiť prílohu ako...</translation>
+ </message>
+ <message>
+ <source>File already exists. Do you want to overwrite this file?</source>
+ <translation>Súbor už existuje. Chcete tento súbor prepísať?</translation>
+ </message>
+ <message>
+ <source>Failed to save attachment.</source>
+ <translation>Chyba pri ukladaní prílohy.</translation>
+ </message>
+ <message>
+ <source>%1 is typing a message.</source>
+ <translation>%1 píše správu.</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>Veľkosť</translation>
+ </message>
+</context>
+<context>
+ <name>MessageFormView</name>
+ <message>
+ <source>sending message</source>
+ <translation>odosielanie správy</translation>
+ </message>
+</context>
+<context>
+ <name>MphoneForm</name>
+ <message>
+ <source>Twinkle</source>
+ <translation>Twinkle</translation>
+ </message>
+ <message>
+ <source>&amp;Call:</source>
+ <comment>Label in front of combobox to enter address</comment>
+ <translation>&amp;Volané číslo:</translation>
+ </message>
+ <message>
+ <source>The address that you want to call. This can be a full SIP address like &lt;b&gt;sip:example@example.com&lt;/b&gt; or just the user part or telephone number of the full address. When you do not specify a full address, then Twinkle will complete the address by using the domain value of your user profile.</source>
+ <translation>Adresa, na ktorú chcete zavolať. Toto môže byť plnohodnotná adresa SIP ako napr. &lt;b&gt;sip:priklad@priklad.com&lt;/b&gt; alebo len meno používateľa, príp. telefónne číslo. Ak nie je zadaná úplná adresa, Twinkle ju doplní o doménové meno aktuálneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>The user that will make the call.</source>
+ <translation>Používateľ, ktorý uskutoční volanie.</translation>
+ </message>
+ <message>
+ <source>&amp;User:</source>
+ <translation>&amp;Používateľ:</translation>
+ </message>
+ <message>
+ <source>Dial</source>
+ <translation>Volať</translation>
+ </message>
+ <message>
+ <source>Dial the address.</source>
+ <translation>Volať adresu.</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Vybrať adresu z adresára.</translation>
+ </message>
+ <message>
+ <source>Auto answer indication.</source>
+ <translation>Indikátor automatického príjmu hovoru.</translation>
+ </message>
+ <message>
+ <source>Call redirect indication.</source>
+ <translation>Indikátor presmerovania hovoru.</translation>
+ </message>
+ <message>
+ <source>Do not disturb indication.</source>
+ <translation>Indikátor stavu nerušiť.</translation>
+ </message>
+ <message>
+ <source>Missed call indication.</source>
+ <translation>Indikátor zmeškaných hovorov.</translation>
+ </message>
+ <message>
+ <source>Registration status.</source>
+ <translation>Stav registrácie.</translation>
+ </message>
+ <message>
+ <source>Display</source>
+ <translation>Správy</translation>
+ </message>
+ <message>
+ <source>Line status</source>
+ <translation>Stav linky</translation>
+ </message>
+ <message>
+ <source>Line &amp;1:</source>
+ <translation>Linka &amp;1:</translation>
+ </message>
+ <message>
+ <source>Alt+1</source>
+ <translation>Alt+1</translation>
+ </message>
+ <message>
+ <source>Click to switch to line 1.</source>
+ <translation>Kliknite pre prepnutie na linku 1.</translation>
+ </message>
+ <message>
+ <source>From:</source>
+ <translation>Od:</translation>
+ </message>
+ <message>
+ <source>To:</source>
+ <translation>Kam:</translation>
+ </message>
+ <message>
+ <source>Subject:</source>
+ <translation>Predmet:</translation>
+ </message>
+ <message>
+ <source>idle</source>
+ <comment>No need to translate</comment>
+ <translation>idle</translation>
+ </message>
+ <message>
+ <source>Transferring call</source>
+ <translation>Hovor bude presmerovaný</translation>
+ </message>
+ <message>
+ <source>sas</source>
+ <comment>No need to translate</comment>
+ <translation>sas</translation>
+ </message>
+ <message>
+ <source>Short authentication string</source>
+ <translation>Krátky overovací reťazec</translation>
+ </message>
+ <message>
+ <source>g711a/g711a</source>
+ <comment>No need to translate</comment>
+ <translation>g711a/g711a</translation>
+ </message>
+ <message>
+ <source>Audio codec</source>
+ <translation>Audio kodek</translation>
+ </message>
+ <message>
+ <source>0:00:00</source>
+ <translation>0:00:00</translation>
+ </message>
+ <message>
+ <source>Call duration</source>
+ <translation>Trvanie hovoru</translation>
+ </message>
+ <message>
+ <source>sip:from</source>
+ <comment>No need to translate</comment>
+ <translation>sip:from</translation>
+ </message>
+ <message>
+ <source>sip:to</source>
+ <comment>No need to translate</comment>
+ <translation>sip:to</translation>
+ </message>
+ <message>
+ <source>subject</source>
+ <comment>No need to translate</comment>
+ <translation>subject</translation>
+ </message>
+ <message>
+ <source>photo</source>
+ <comment>No need to translate</comment>
+ <translation>photo</translation>
+ </message>
+ <message>
+ <source>Line &amp;2:</source>
+ <translation>Linka &amp;2:</translation>
+ </message>
+ <message>
+ <source>Alt+2</source>
+ <translation>Alt+2</translation>
+ </message>
+ <message>
+ <source>Click to switch to line 2.</source>
+ <translation>Kliknite pre prepnutie na linku 2.</translation>
+ </message>
+ <message>
+ <source>&amp;File</source>
+ <translation>&amp;Súbor</translation>
+ </message>
+ <message>
+ <source>&amp;Edit</source>
+ <translation>&amp;Upraviť</translation>
+ </message>
+ <message>
+ <source>C&amp;all</source>
+ <translation>&amp;Hovor</translation>
+ </message>
+ <message>
+ <source>Activate line</source>
+ <translation>Vybrať linku</translation>
+ </message>
+ <message>
+ <source>&amp;Registration</source>
+ <translation>&amp;Registrácia</translation>
+ </message>
+ <message>
+ <source>&amp;Services</source>
+ <translation>S&amp;lužby</translation>
+ </message>
+ <message>
+ <source>&amp;View</source>
+ <translation>&amp;Zobraziť</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>Po&amp;mocník</translation>
+ </message>
+ <message>
+ <source>Quit</source>
+ <translation>Ukončiť</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>&amp;Ukončiť</translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+ <message>
+ <source>About Twinkle</source>
+ <translation>O programe Twinkle</translation>
+ </message>
+ <message>
+ <source>&amp;About Twinkle</source>
+ <translation>O &amp;programe Twinkle</translation>
+ </message>
+ <message>
+ <source>Call someone</source>
+ <translation>Zavolať niekomu</translation>
+ </message>
+ <message>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <source>Answer incoming call</source>
+ <translation>Prijať prichádzajúci hovor</translation>
+ </message>
+ <message>
+ <source>F6</source>
+ <translation>F6</translation>
+ </message>
+ <message>
+ <source>Release call</source>
+ <translation>Ukončiť hovor</translation>
+ </message>
+ <message>
+ <source>Reject incoming call</source>
+ <translation>Odmietnuť prichádzajúci hovor</translation>
+ </message>
+ <message>
+ <source>F8</source>
+ <translation>F8</translation>
+ </message>
+ <message>
+ <source>Put a call on hold, or retrieve a held call</source>
+ <translation>Podržať hovor alebo pokračovať v podržanom hovore</translation>
+ </message>
+ <message>
+ <source>Redirect incoming call without answering</source>
+ <translation>Presmerovať prichádzajúci hovor bez prijatia hovoru</translation>
+ </message>
+ <message>
+ <source>Open keypad to enter digits for voice menu&apos;s</source>
+ <translation>Otvoriť numerickú klávesnicu pre hlasové menu</translation>
+ </message>
+ <message>
+ <source>Register</source>
+ <translation>Registrovať sa</translation>
+ </message>
+ <message>
+ <source>&amp;Register</source>
+ <translation>&amp;Registrovať sa</translation>
+ </message>
+ <message>
+ <source>Deregister</source>
+ <translation>Odregistrovať sa</translation>
+ </message>
+ <message>
+ <source>&amp;Deregister</source>
+ <translation>&amp;Odregistrovať sa</translation>
+ </message>
+ <message>
+ <source>Deregister this device</source>
+ <translation>Odregistrovať toto zariadenie</translation>
+ </message>
+ <message>
+ <source>Show registrations</source>
+ <translation>Zobraziť registrácie</translation>
+ </message>
+ <message>
+ <source>&amp;Show registrations</source>
+ <translation>&amp;Zobraziť registrácie</translation>
+ </message>
+ <message>
+ <source>Terminal capabilities</source>
+ <translation>Parametre protistrany</translation>
+ </message>
+ <message>
+ <source>Request terminal capabilities from someone</source>
+ <translation>Požiadavka na parametre protistrany</translation>
+ </message>
+ <message>
+ <source>Do not disturb</source>
+ <translation>Nerušiť</translation>
+ </message>
+ <message>
+ <source>&amp;Do not disturb</source>
+ <translation>&amp;Nerušiť</translation>
+ </message>
+ <message>
+ <source>Call redirection</source>
+ <translation>Presmerovanie hovoru</translation>
+ </message>
+ <message>
+ <source>Call &amp;redirection...</source>
+ <translation>&amp;Presmerovanie hovoru...</translation>
+ </message>
+ <message>
+ <source>Repeat last call</source>
+ <translation>Opakované vytáčanie</translation>
+ </message>
+ <message>
+ <source>F12</source>
+ <translation>F12</translation>
+ </message>
+ <message>
+ <source>About Qt</source>
+ <translation>O Qt</translation>
+ </message>
+ <message>
+ <source>About &amp;Qt</source>
+ <translation>O &amp;Qt</translation>
+ </message>
+ <message>
+ <source>User profile</source>
+ <translation>Profil používateľa</translation>
+ </message>
+ <message>
+ <source>&amp;User profile...</source>
+ <translation>&amp;Profil používateľa...</translation>
+ </message>
+ <message>
+ <source>Join two calls in a 3-way conference</source>
+ <translation>Spojiť dva hovory do konferencie</translation>
+ </message>
+ <message>
+ <source>Mute a call</source>
+ <translation>Vypnúť mikrofón</translation>
+ </message>
+ <message>
+ <source>Transfer call</source>
+ <translation>Presmerovať hovor</translation>
+ </message>
+ <message>
+ <source>System settings</source>
+ <translation>Nastavenia systému</translation>
+ </message>
+ <message>
+ <source>&amp;System settings...</source>
+ <translation>&amp;Nastavenia systému...</translation>
+ </message>
+ <message>
+ <source>Deregister all</source>
+ <translation>Všetko odregistrovať</translation>
+ </message>
+ <message>
+ <source>Deregister &amp;all</source>
+ <translation>&amp;Všetko odregistrovať</translation>
+ </message>
+ <message>
+ <source>Deregister all your registered devices</source>
+ <translation>Odregistrovať všetky registrované zariadenia</translation>
+ </message>
+ <message>
+ <source>Auto answer</source>
+ <translation>Automaticky prijímať volania</translation>
+ </message>
+ <message>
+ <source>&amp;Auto answer</source>
+ <translation>&amp;Automaticky prijímať volania</translation>
+ </message>
+ <message>
+ <source>Log</source>
+ <translation>Protokol</translation>
+ </message>
+ <message>
+ <source>&amp;Log...</source>
+ <translation>&amp;Protokol...</translation>
+ </message>
+ <message>
+ <source>Call history</source>
+ <translation>História volaní</translation>
+ </message>
+ <message>
+ <source>Call &amp;history...</source>
+ <translation>&amp;História volaní...</translation>
+ </message>
+ <message>
+ <source>F9</source>
+ <translation>F9</translation>
+ </message>
+ <message>
+ <source>Change user ...</source>
+ <translation>Zmeniť používateľa...</translation>
+ </message>
+ <message>
+ <source>&amp;Change user ...</source>
+ <translation>&amp;Zmeniť používateľa...</translation>
+ </message>
+ <message>
+ <source>Activate or de-activate users</source>
+ <translation>Aktivovať alebo deaktivovať používateľov</translation>
+ </message>
+ <message>
+ <source>What&apos;s This?</source>
+ <translation>Čo je toto?</translation>
+ </message>
+ <message>
+ <source>What&apos;s &amp;This?</source>
+ <translation>Čo je &amp;toto?</translation>
+ </message>
+ <message>
+ <source>Shift+F1</source>
+ <translation>Shift+F1</translation>
+ </message>
+ <message>
+ <source>Line 1</source>
+ <translation>Linka 1</translation>
+ </message>
+ <message>
+ <source>Line 2</source>
+ <translation>Linka 2</translation>
+ </message>
+ <message>
+ <source>idle</source>
+ <translation>voľná</translation>
+ </message>
+ <message>
+ <source>dialing</source>
+ <translation>vytáčam</translation>
+ </message>
+ <message>
+ <source>attempting call, please wait</source>
+ <translation>pokus o nadviazanie spojenia, prosím čakajte</translation>
+ </message>
+ <message>
+ <source>incoming call</source>
+ <translation>prichádzajúce volanie</translation>
+ </message>
+ <message>
+ <source>establishing call, please wait</source>
+ <translation>nadväzujem hovor, prosím čakajte</translation>
+ </message>
+ <message>
+ <source>established</source>
+ <translation>nadviazané</translation>
+ </message>
+ <message>
+ <source>established (waiting for media)</source>
+ <translation>nadviazané (čaká sa na zvuk)</translation>
+ </message>
+ <message>
+ <source>releasing call, please wait</source>
+ <translation>zavesujem, prosím čakajte</translation>
+ </message>
+ <message>
+ <source>unknown state</source>
+ <translation>neznámy stav</translation>
+ </message>
+ <message>
+ <source>Voice is encrypted</source>
+ <translation>Hovor je zašifrovaný</translation>
+ </message>
+ <message>
+ <source>Click to confirm SAS.</source>
+ <translation>Kliknite pre potvrdenie SAS.</translation>
+ </message>
+ <message>
+ <source>Click to clear SAS verification.</source>
+ <translation>Kliknite pre zrušenie overenia SAS.</translation>
+ </message>
+ <message>
+ <source>User:</source>
+ <translation>Používateľ:</translation>
+ </message>
+ <message>
+ <source>Call:</source>
+ <translation>Hovor:</translation>
+ </message>
+ <message>
+ <source>Registration status:</source>
+ <translation>Stav registrácie:</translation>
+ </message>
+ <message>
+ <source>Registered</source>
+ <translation>Registrovaný</translation>
+ </message>
+ <message>
+ <source>Failed</source>
+ <translation>Nepodarilo sa</translation>
+ </message>
+ <message>
+ <source>Not registered</source>
+ <translation>Neregistrovaný</translation>
+ </message>
+ <message>
+ <source>No users are registered.</source>
+ <translation>Nie je prihlásený žiaden používateľ.</translation>
+ </message>
+ <message>
+ <source>Do not disturb active for:</source>
+ <translation>Nerušiť aktivované pre:</translation>
+ </message>
+ <message>
+ <source>Redirection active for:</source>
+ <translation>Presmerovanie aktivované pre:</translation>
+ </message>
+ <message>
+ <source>Auto answer active for:</source>
+ <translation>Automatické prijímanie hovorov aktivované pre:</translation>
+ </message>
+ <message>
+ <source>Do not disturb is not active.</source>
+ <translation>Nerušiť nie je aktívne.</translation>
+ </message>
+ <message>
+ <source>Redirection is not active.</source>
+ <translation>Presmerovanie volaní nie je aktivované.</translation>
+ </message>
+ <message>
+ <source>Auto answer is not active.</source>
+ <translation>Automatické prijímanie hovorov nie je aktívne.</translation>
+ </message>
+ <message>
+ <source>You have no missed calls.</source>
+ <translation>Nemáte žiadne zmeškané hovory.</translation>
+ </message>
+ <message>
+ <source>You missed 1 call.</source>
+ <translation>1 zmeškaný hovor.</translation>
+ </message>
+ <message>
+ <source>You missed %1 calls.</source>
+ <translation>%1 zmeškaných hovorov.</translation>
+ </message>
+ <message>
+ <source>Click to see call history for details.</source>
+ <translation>Kliknutím otvoríte podrobný zoznam hovorov.</translation>
+ </message>
+ <message>
+ <source>Starting user profiles...</source>
+ <translation>Štartujem profily používateľov...</translation>
+ </message>
+ <message>
+ <source>The following profiles are both for user %1</source>
+ <translation>Nasledujúce profily používajú rovnakých používateľov %1</translation>
+ </message>
+ <message>
+ <source>You can only run multiple profiles for different users.</source>
+ <translation>Rôzne profily musia používať rôznych používateľov.</translation>
+ </message>
+ <message>
+ <source>You have changed the SIP UDP port. This setting will only become active when you restart Twinkle.</source>
+ <translation>Bol zmenený port SIP UDP. Toto nastavenie bude aktívne až pri ďalšom spustení programu Twinkle.</translation>
+ </message>
+ <message>
+ <source>Esc</source>
+ <translation>Esc</translation>
+ </message>
+ <message>
+ <source>Transfer consultation</source>
+ <translation>Asistované presmerovanie</translation>
+ </message>
+ <message>
+ <source>Hide identity</source>
+ <translation>Skryť identitu</translation>
+ </message>
+ <message>
+ <source>Click to show registrations.</source>
+ <translation>Kliknutím zobrazíte registrácie.</translation>
+ </message>
+ <message>
+ <source>%1 new, 1 old message</source>
+ <translation>%1 nová, 1 stará správa</translation>
+ </message>
+ <message>
+ <source>%1 new, %2 old messages</source>
+ <translation>%1 nové, %2 staré správy</translation>
+ </message>
+ <message>
+ <source>1 new message</source>
+ <translation>1 nová správa</translation>
+ </message>
+ <message>
+ <source>%1 new messages</source>
+ <translation>%1 nových správ</translation>
+ </message>
+ <message>
+ <source>1 old message</source>
+ <translation>1 stará správa</translation>
+ </message>
+ <message>
+ <source>%1 old messages</source>
+ <translation>%1 starých správ</translation>
+ </message>
+ <message>
+ <source>Messages waiting</source>
+ <translation>Prijatých správ</translation>
+ </message>
+ <message>
+ <source>No messages</source>
+ <translation>Žiadne správy</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Voice mail status:&lt;/b&gt;</source>
+ <translation>&lt;b&gt;Stav hlasovej schránky:&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <source>Failure</source>
+ <translation>Chyba</translation>
+ </message>
+ <message>
+ <source>Unknown</source>
+ <translation>Neznámy</translation>
+ </message>
+ <message>
+ <source>Click to access voice mail.</source>
+ <translation>Kliknutím vstúpite do hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>Click to activate/deactivate</source>
+ <translation>Kliknutím aktivujete/deaktivujete</translation>
+ </message>
+ <message>
+ <source>Click to activate</source>
+ <translation>Kliknutím aktivujete</translation>
+ </message>
+ <message>
+ <source>not provisioned</source>
+ <translation>nie je poskytované</translation>
+ </message>
+ <message>
+ <source>You must provision your voice mail address in your user profile, before you can access it.</source>
+ <translation>Skôr ako vám bude umožnené použiť hlasovú schránku je potrebné nastaviť jej adresu v profile používateľa.</translation>
+ </message>
+ <message>
+ <source>The line is busy. Cannot access voice mail.</source>
+ <translation>Hlasovú schránku nie je možné otvoriť. Linka je obsadená.</translation>
+ </message>
+ <message>
+ <source>The voice mail address %1 is an invalid address. Please provision a valid address in your user profile.</source>
+ <translation>Adresa hlasovej schránky %1 je neplatná. Skontrolujte nastavenia vo vašom profile používateľa.</translation>
+ </message>
+ <message>
+ <source>Message waiting indication.</source>
+ <translation>Zobrazenie čakajúcich správ.</translation>
+ </message>
+ <message>
+ <source>Voice mail</source>
+ <translation>Hlasová schránka</translation>
+ </message>
+ <message>
+ <source>&amp;Voice mail</source>
+ <translation>&amp;Hlasová schránka</translation>
+ </message>
+ <message>
+ <source>Access voice mail</source>
+ <translation>Vstúpiť do hlasovej schránky</translation>
+ </message>
+ <message>
+ <source>F11</source>
+ <translation>F11</translation>
+ </message>
+ <message>
+ <source>Buddy list</source>
+ <translation>Zoznam kontaktov</translation>
+ </message>
+ <message>
+ <source>&amp;Message</source>
+ <translation>S&amp;práva</translation>
+ </message>
+ <message>
+ <source>Msg</source>
+ <translation>Msg</translation>
+ </message>
+ <message>
+ <source>Instant &amp;message...</source>
+ <translation>Textová &amp;správa...</translation>
+ </message>
+ <message>
+ <source>Instant message</source>
+ <translation>Textová správa</translation>
+ </message>
+ <message>
+ <source>&amp;Call...</source>
+ <translation>&amp;Volať...</translation>
+ </message>
+ <message>
+ <source>&amp;Edit...</source>
+ <translation>&amp;Upraviť...</translation>
+ </message>
+ <message>
+ <source>&amp;Delete</source>
+ <translation>&amp;Odstrániť</translation>
+ </message>
+ <message>
+ <source>O&amp;ffline</source>
+ <translation>O&amp;ffline</translation>
+ </message>
+ <message>
+ <source>&amp;Online</source>
+ <translation>&amp;Online</translation>
+ </message>
+ <message>
+ <source>&amp;Change availability</source>
+ <translation>&amp;Zmeniť dostupnosť</translation>
+ </message>
+ <message>
+ <source>&amp;Add buddy...</source>
+ <translation>&amp;Pridať kontakt...</translation>
+ </message>
+ <message>
+ <source>Failed to save buddy list: %1</source>
+ <translation>Zlyhalo uloženie zoznamu kontaktov: %1</translation>
+ </message>
+ <message>
+ <source>You can create a separate buddy list for each user profile. You can only see availability of your buddies and publish your own availability if your provider offers a presence server.</source>
+ <translation>Je možné vytvoriť oddelený zoznam kontaktov pre každý profil používateľa. Dostupnosť vašich kontaktov a vlastnú dostupnosť je možné zistiť a využívať len vtedy, ak to váš poskytovateľ podporuje.</translation>
+ </message>
+ <message>
+ <source>&amp;Buddy list</source>
+ <translation>Zoznam &amp;kontaktov</translation>
+ </message>
+ <message>
+ <source>&amp;Display</source>
+ <translation>&amp;Správy</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+ <message>
+ <source>Diamondcard</source>
+ <translation>Diamondcard</translation>
+ </message>
+ <message>
+ <source>Manual</source>
+ <translation>Príručka</translation>
+ </message>
+ <message>
+ <source>&amp;Manual</source>
+ <translation>Prír&amp;učka</translation>
+ </message>
+ <message>
+ <source>Sign up</source>
+ <translation>Prihlásiť sa</translation>
+ </message>
+ <message>
+ <source>&amp;Sign up...</source>
+ <translation>&amp;Prihlásiť sa...</translation>
+ </message>
+ <message>
+ <source>Recharge...</source>
+ <translation>Dobiť kredit...</translation>
+ </message>
+ <message>
+ <source>Balance history...</source>
+ <translation>História zostatkov...</translation>
+ </message>
+ <message>
+ <source>Call history...</source>
+ <translation>História volaní...</translation>
+ </message>
+ <message>
+ <source>Admin center...</source>
+ <translation>Administratívne centrum...</translation>
+ </message>
+ <message>
+ <source>Recharge</source>
+ <translation>Dobiť kredit</translation>
+ </message>
+ <message>
+ <source>Balance history</source>
+ <translation>História zostatkov</translation>
+ </message>
+ <message>
+ <source>Admin center</source>
+ <translation>Administratívne centrum</translation>
+ </message>
+ <message>
+ <source>Call</source>
+ <translation>Volať</translation>
+ </message>
+ <message>
+ <source>&amp;Answer</source>
+ <translation>Pri&amp;jať</translation>
+ </message>
+ <message>
+ <source>Answer</source>
+ <translation>Prijať</translation>
+ </message>
+ <message>
+ <source>&amp;Bye</source>
+ <translation>&amp;Zavesiť</translation>
+ </message>
+ <message>
+ <source>Bye</source>
+ <translation>Zavesiť</translation>
+ </message>
+ <message>
+ <source>&amp;Reject</source>
+ <translation>&amp;Odmietnuť</translation>
+ </message>
+ <message>
+ <source>Reject</source>
+ <translation>Odmietnuť</translation>
+ </message>
+ <message>
+ <source>&amp;Hold</source>
+ <translation>&amp;Podržať</translation>
+ </message>
+ <message>
+ <source>Hold</source>
+ <translation>Podržať</translation>
+ </message>
+ <message>
+ <source>R&amp;edirect...</source>
+ <translation>&amp;Presmerovať...</translation>
+ </message>
+ <message>
+ <source>Redirect</source>
+ <translation>Presmerovať</translation>
+ </message>
+ <message>
+ <source>&amp;Dtmf...</source>
+ <translation>&amp;DTMF...</translation>
+ </message>
+ <message>
+ <source>Dtmf</source>
+ <translation>DTMF</translation>
+ </message>
+ <message>
+ <source>&amp;Terminal capabilities...</source>
+ <translation>&amp;Parametre protistrany...</translation>
+ </message>
+ <message>
+ <source>&amp;Redial</source>
+ <translation>&amp;Opakovať</translation>
+ </message>
+ <message>
+ <source>Redial</source>
+ <translation>Opakovať</translation>
+ </message>
+ <message>
+ <source>&amp;Conference</source>
+ <translation>&amp;Konferencia</translation>
+ </message>
+ <message>
+ <source>Conf</source>
+ <translation>Konferencia</translation>
+ </message>
+ <message>
+ <source>&amp;Mute</source>
+ <translation>&amp;Stíšiť</translation>
+ </message>
+ <message>
+ <source>Mute</source>
+ <translation>Stíšiť</translation>
+ </message>
+ <message>
+ <source>Trans&amp;fer...</source>
+ <translation>Prep&amp;ojiť...</translation>
+ </message>
+ <message>
+ <source>Xfer</source>
+ <translation>Prepojiť</translation>
+ </message>
+</context>
+<context>
+ <name>NumberConversionForm</name>
+ <message>
+ <source>Twinkle - Number conversion</source>
+ <translation>Twinkle - Konverzia tel. čísla</translation>
+ </message>
+ <message>
+ <source>&amp;Match expression:</source>
+ <translation>&amp;Hľadaný výraz:</translation>
+ </message>
+ <message>
+ <source>&amp;Replace:</source>
+ <translation>&amp;Nahradiť:</translation>
+ </message>
+ <message>
+ <source>Perl style format string for the replacement number.</source>
+ <translation>Formátovací reťazec (štýl Perlu) s nahradeným číslom.</translation>
+ </message>
+ <message>
+ <source>Perl style regular expression matching the number format you want to modify.</source>
+ <translation>Regulárny výraz (štýl Perlu) pre nahrádzané číslo.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>Match expression may not be empty.</source>
+ <translation>Hľadaný výraz nesmie byť prázdny.</translation>
+ </message>
+ <message>
+ <source>Replace value may not be empty.</source>
+ <translation>Nahrádzaná hodnota nesmie byť prázdna.</translation>
+ </message>
+ <message>
+ <source>Invalid regular expression.</source>
+ <translation>Neplatný regulárny výraz.</translation>
+ </message>
+</context>
+<context>
+ <name>RedirectForm</name>
+ <message>
+ <source>Twinkle - Redirect</source>
+ <translation>Twinkle - Presmerovanie</translation>
+ </message>
+ <message>
+ <source>Redirect incoming call to</source>
+ <translation>Prichádzajúci hovor presmerovať na</translation>
+ </message>
+ <message>
+ <source>You can specify up to 3 destinations to which you want to redirect the call. If the first destination does not answer the call, the second destination will be tried and so on.</source>
+ <translation>Pre presmerovanie volania je možné zadať max. 3 čísla. Ak nebude hovor prijatý prvým cieľom, prebehne pokus o presmerovanie na druhý cieľ atď.</translation>
+ </message>
+ <message>
+ <source>&amp;3rd choice destination:</source>
+ <translation>&amp;3. cieľ:</translation>
+ </message>
+ <message>
+ <source>&amp;2nd choice destination:</source>
+ <translation>&amp;2. cieľ:</translation>
+ </message>
+ <message>
+ <source>&amp;1st choice destination:</source>
+ <translation>&amp;1. cieľ:</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Výber adresy z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+ <message>
+ <source>F12</source>
+ <translation>F12</translation>
+ </message>
+ <message>
+ <source>F11</source>
+ <translation>F11</translation>
+ </message>
+</context>
+<context>
+ <name>SelectNicForm</name>
+ <message>
+ <source>Twinkle - Select NIC</source>
+ <translation>Twinkle - Výber sieťového rozhrania</translation>
+ </message>
+ <message>
+ <source>Select the network interface/IP address that you want to use:</source>
+ <translation>Vyberte sieťové rozhranie/IP adresu, ktorú chcete použiť:</translation>
+ </message>
+ <message>
+ <source>You have multiple IP addresses. Here you must select which IP address should be used. This IP address will be used inside the SIP messages.</source>
+ <translation>Na vašom počítači je k dispozícii viac IP adries. Tu vyberiete tú, ktorú chcete používať. Táto IP adresa bude používať Twinkle vo vnútri správ SIP.</translation>
+ </message>
+ <message>
+ <source>Set as default &amp;IP</source>
+ <translation>&amp;Nastaviť ako predvolenú IP adresu</translation>
+ </message>
+ <message>
+ <source>Alt+I</source>
+ <translation>Alt+N</translation>
+ </message>
+ <message>
+ <source>Make the selected IP address the default IP address. The next time you start Twinkle, this IP address will be automatically selected.</source>
+ <translation>Nastaviť vybranú IP adresu ako predvolenú. Twinkle túto IP adresu automaticky použije pri ďalšom spustení.</translation>
+ </message>
+ <message>
+ <source>Set as default &amp;NIC</source>
+ <translation>Nastaviť ako &amp;predvolené rozhranie</translation>
+ </message>
+ <message>
+ <source>Alt+N</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Make the selected network interface the default interface. The next time you start Twinkle, this interface will be automatically selected.</source>
+ <translation>Nastaviť vybrané sieťové rozhranie ako predvolené. Twinkle použije toto rozhranie pri ďalšom spustení.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>If you want to remove or change the default at a later time, you can do that via the system settings.</source>
+ <translation>Predvolené nastavenie je možné zmeniť kedykoľvek neskôr v nastaveniach systému.</translation>
+ </message>
+</context>
+<context>
+ <name>SelectProfileForm</name>
+ <message>
+ <source>Twinkle - Select user profile</source>
+ <translation>Twinkle - Výber profilu používateľa</translation>
+ </message>
+ <message>
+ <source>Select user profile(s) to run:</source>
+ <translation>Vyberte profily používateľov, ktoré majú byť aktivované:</translation>
+ </message>
+ <message>
+ <source>Tick the check boxes of the user profiles that you want to run and press run.</source>
+ <translation>Označte profil používateľa, s ktorým by mal Twinkle pracovať a stlačte &quot;Spustiť&quot;.</translation>
+ </message>
+ <message>
+ <source>Create a new profile with the profile editor.</source>
+ <translation>Pomocou editoru profilu vytvoriť nový profil používateľa.</translation>
+ </message>
+ <message>
+ <source>&amp;Wizard</source>
+ <translation>Spri&amp;evodca</translation>
+ </message>
+ <message>
+ <source>Alt+W</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <source>Create a new profile with the wizard.</source>
+ <translation>Vytvoriť nový profil používateľa pomocou sprievodcu.</translation>
+ </message>
+ <message>
+ <source>&amp;Edit</source>
+ <translation>U&amp;praviť</translation>
+ </message>
+ <message>
+ <source>Alt+E</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Edit the highlighted profile.</source>
+ <translation>Upraviť zvolený profil používateľa.</translation>
+ </message>
+ <message>
+ <source>&amp;Delete</source>
+ <translation>&amp;Odstrániť</translation>
+ </message>
+ <message>
+ <source>Alt+D</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Delete the highlighted profile.</source>
+ <translation>Odstrániť zvolený profil používateľa.</translation>
+ </message>
+ <message>
+ <source>Ren&amp;ame</source>
+ <translation>&amp;Premenovať</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Rename the highlighted profile.</source>
+ <translation>Premenovať označený profil.</translation>
+ </message>
+ <message>
+ <source>&amp;Set as default</source>
+ <translation>Nastaviť ako pred&amp;volený</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>Make the selected profiles the default profiles. The next time you start Twinkle, these profiles will be automatically run.</source>
+ <translation>Nastaviť vybrané profily ako predvolené. Twinkle ich použije automaticky pri ďalšom spustení.</translation>
+ </message>
+ <message>
+ <source>&amp;Run</source>
+ <translation>&amp;Spustiť</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Run Twinkle with the selected profiles.</source>
+ <translation>Spustiť Twinkle so zvolenými profilmi používateľmi.</translation>
+ </message>
+ <message>
+ <source>S&amp;ystem settings</source>
+ <translation>S&amp;ystémové nastavenia</translation>
+ </message>
+ <message>
+ <source>Alt+Y</source>
+ <translation>Alt+Y</translation>
+ </message>
+ <message>
+ <source>Edit the system settings.</source>
+ <translation>Upraviť nastavenia systému.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>&lt;html&gt;Before you can use Twinkle, you must create a user profile.&lt;br&gt;Click OK to create a profile.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Skôr ako budete môcť Twinkle začať používať, musíte vytvoriť profil používateľa.&lt;br&gt;Kliknite OK pre založenie nového profilu.&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;html&gt;Next you may adjust the system settings. You can change these settings always at a later time.&lt;br&gt;&lt;br&gt;Click OK to view and adjust the system settings.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;V ďalšom kroku môžete upraviť nastavenia systému. Môžete to urobiť aj kedykoľvek neskôr.&lt;br&gt;&lt;br&gt;Kliknite na OK pre prístup k nastaveniam systému.&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <source>You did not select any user profile to run.
+Please select a profile.</source>
+ <translation>Nevybrali ste žiadny profil používateľa.
+Vyberte prosím aspoň jeden profil.</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to delete profile &apos;%1&apos;?</source>
+ <translation>Naozaj odstrániť profil používateľa &apos;%1&apos;?</translation>
+ </message>
+ <message>
+ <source>Delete profile</source>
+ <translation>Odstrániť profil</translation>
+ </message>
+ <message>
+ <source>Failed to delete profile.</source>
+ <translation>Chyba pri odstraňovaní profilu.</translation>
+ </message>
+ <message>
+ <source>Failed to rename profile.</source>
+ <translation>Chyba pri premenovaní profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;If you want to remove or change the default at a later time, you can do that via the system settings.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Predvolené nastavenie je možné kedykoľvek zrušiť alebo zmeniť v nastaveniach systému. &lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Cannot find .twinkle directory in your home directory.</source>
+ <translation>Nie je možné nájsť adresár .twinkle vo vašom domovskom adresári.</translation>
+ </message>
+ <message>
+ <source>&amp;Profile editor</source>
+ <translation>&amp;Editor profilu</translation>
+ </message>
+ <message>
+ <source>Create profile</source>
+ <translation>Vytvoriť profil</translation>
+ </message>
+ <message>
+ <source>Ed&amp;itor</source>
+ <translation>Ed&amp;itor</translation>
+ </message>
+ <message>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <source>Dia&amp;mondcard</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Alt+M</source>
+ <translation>Alt+M</translation>
+ </message>
+ <message>
+ <source>Modify profile</source>
+ <translation>Upraviť profil</translation>
+ </message>
+ <message>
+ <source>Startup profile</source>
+ <translation>Profil pri spustení</translation>
+ </message>
+ <message>
+ <source>&amp;Diamondcard</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Create a profile for a Diamondcard account. With a Diamondcard account you can make worldwide calls to regular and cell phones and send SMS messages.</source>
+ <translation>Vytvoriť profil pre účet Diamondcard. S účtom Diamondcard môžete volať na pevné linky, do mobilných sietí po celom svete a odosielať správy SMS.</translation>
+ </message>
+ <message>
+ <source>&lt;html&gt;You can use the profile editor to create a profile. With the profile editor you can change many settings to tune the SIP protocol, RTP and many other things.&lt;br&gt;&lt;br&gt;Alternatively you can use the wizard to quickly setup a user profile. The wizard asks you only a few essential settings. If you create a user profile with the wizard you can still edit the full profile with the profile editor at a later time.&lt;br&gt;&lt;br&gt;</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>You can create a Diamondcard account to make worldwide calls to regular and cell phones and send SMS messages.&lt;br&gt;&lt;br&gt;</source>
+ <translation>Tu si môžete zaregistrovať účet Diamondcard, s ktorým môžete volať na pevné linky, do mobilných sietí po celom svete a odosielať správy SMS.&lt;br&gt;&lt;br&gt;</translation>
+ </message>
+ <message>
+ <source>Choose what method you wish to use.&lt;/html&gt;</source>
+ <translation>Vyberte metódu, ktorú chcete použiť&lt;/html&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>SelectUserForm</name>
+ <message>
+ <source>Twinkle - Select user</source>
+ <translation>Twinkle - Výber používateľa</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>&amp;Select all</source>
+ <translation>Vybrať &amp;všetko</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>C&amp;lear all</source>
+ <translation>O&amp;dznačiť všetko</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+D</translation>
+ </message>
+ <message>
+ <source>purpose</source>
+ <comment>No need to translate</comment>
+ <translation>purpose</translation>
+ </message>
+ <message>
+ <source>Register</source>
+ <translation>Prihlásiť sa</translation>
+ </message>
+ <message>
+ <source>Select users that you want to register.</source>
+ <translation>Vybrať používateľov, ktorých chcete zaregistrovať.</translation>
+ </message>
+ <message>
+ <source>Deregister</source>
+ <translation>Odregistrovať</translation>
+ </message>
+ <message>
+ <source>Select users that you want to deregister.</source>
+ <translation>Vybrať používateľov, ktorých chcete odregistrovať.</translation>
+ </message>
+ <message>
+ <source>Deregister all devices</source>
+ <translation>Odhlásiť všetky zariadenia</translation>
+ </message>
+ <message>
+ <source>Select users for which you want to deregister all devices.</source>
+ <translation>Vybrať používateľov, pri ktorých chcete odhlásiť všetky zariadenia.</translation>
+ </message>
+ <message>
+ <source>Do not disturb</source>
+ <translation>Nerušiť</translation>
+ </message>
+ <message>
+ <source>Select users for which you want to enable &apos;do not disturb&apos;.</source>
+ <translation>Vybrať používateľov, pri ktorých má byť aktivovaný režim &quot;Nerušiť&quot;.</translation>
+ </message>
+ <message>
+ <source>Auto answer</source>
+ <translation>Automaticky prijať volanie</translation>
+ </message>
+ <message>
+ <source>Select users for which you want to enable &apos;auto answer&apos;.</source>
+ <translation>Vybrať profil používateľa, pre ktorého má byť aktivovaný režim &quot;Automaticky prijať volanie&quot;.</translation>
+ </message>
+</context>
+<context>
+ <name>SendFileForm</name>
+ <message>
+ <source>Twinkle - Send File</source>
+ <translation>Twinkle - Odoslať súbor</translation>
+ </message>
+ <message>
+ <source>Select file to send.</source>
+ <translation>Výber súboru na odoslanie.</translation>
+ </message>
+ <message>
+ <source>&amp;File:</source>
+ <translation>&amp;Súbor:</translation>
+ </message>
+ <message>
+ <source>&amp;Subject:</source>
+ <translation>&amp;Predmet:</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>File does not exist.</source>
+ <translation>Súbor neexistuje.</translation>
+ </message>
+ <message>
+ <source>Send file...</source>
+ <translation>Odoslať súbor...</translation>
+ </message>
+</context>
+<context>
+ <name>SrvRedirectForm</name>
+ <message>
+ <source>Twinkle - Call Redirection</source>
+ <translation>Twinkle - Presmerovanie hovoru</translation>
+ </message>
+ <message>
+ <source>User:</source>
+ <translation>Používateľ:</translation>
+ </message>
+ <message>
+ <source>There are 3 redirect services:&lt;p&gt;
+&lt;b&gt;Unconditional:&lt;/b&gt; redirect all calls
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;Busy:&lt;/b&gt; redirect a call if both lines are busy
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;No answer:&lt;/b&gt; redirect a call when the no-answer timer expires
+&lt;/p&gt;</source>
+ <translation>Existujú 3 spôsoby presmerovania volania:&lt;p&gt;
+&lt;b&gt;Nepodmienené:&lt;/b&gt; presmerovať všetky hovory
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;Obsadené:&lt;/b&gt; presmerovať hovor, ak sú obe linky obsadené
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;Bez odpovede:&lt;/b&gt; presmerovať hovor po uplynutí čakacej doby
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&amp;Unconditional</source>
+ <translation>N&amp;epodmienené</translation>
+ </message>
+ <message>
+ <source>&amp;Redirect all calls</source>
+ <translation>&amp;Presmerovať všetky hovory</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+R</translation>
+ </message>
+ <message>
+ <source>Activate the unconditional redirection service.</source>
+ <translation>Aktivovať službu presmerovaní všetkých hovorov.</translation>
+ </message>
+ <message>
+ <source>Redirect to</source>
+ <translation>Presmerovať na</translation>
+ </message>
+ <message>
+ <source>You can specify up to 3 destinations to which you want to redirect the call. If the first destination does not answer the call, the second destination will be tried and so on.</source>
+ <translation>Môžete zadať až 3 ciele pre presmerovanie volaní. Ak nebude hovor prijatý prvým cieľom, bude použitý druhý cieľ, prípadne tretí.</translation>
+ </message>
+ <message>
+ <source>&amp;3rd choice destination:</source>
+ <translation>&amp;3. cieľ:</translation>
+ </message>
+ <message>
+ <source>&amp;2nd choice destination:</source>
+ <translation>&amp;2. cieľ:</translation>
+ </message>
+ <message>
+ <source>&amp;1st choice destination:</source>
+ <translation>&amp;1. cieľ:</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Vyberte adresu z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;Busy</source>
+ <translation>&amp;Obsadené</translation>
+ </message>
+ <message>
+ <source>&amp;Redirect calls when I am busy</source>
+ <translation>&amp;Presmerovať hovory, ak sú linky obsadené</translation>
+ </message>
+ <message>
+ <source>Activate the redirection when busy service.</source>
+ <translation>Aktivovať presmerovanie, ak je linka obsadená.</translation>
+ </message>
+ <message>
+ <source>&amp;No answer</source>
+ <translation>&amp;Bez odpovede</translation>
+ </message>
+ <message>
+ <source>&amp;Redirect calls when I do not answer</source>
+ <translation>&amp;Presmerovať hovor, ak naň nie je odpovedané</translation>
+ </message>
+ <message>
+ <source>Activate the redirection on no answer service.</source>
+ <translation>Aktivovať službu &quot;Presmerovať v neprítomnosti&quot;.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>Accept and save all changes.</source>
+ <translation>Prijať a uložiť všetky zmeny.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>Undo your changes and close the window.</source>
+ <translation>Neukladať vykonané zmeny a zavrieť okno.</translation>
+ </message>
+ <message>
+ <source>You have entered an invalid destination.</source>
+ <translation>Zadali ste neplatnú cieľovú adresu.</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+ <message>
+ <source>F11</source>
+ <translation>F11</translation>
+ </message>
+ <message>
+ <source>F12</source>
+ <translation>F12</translation>
+ </message>
+</context>
+<context>
+ <name>SysSettingsForm</name>
+ <message>
+ <source>Twinkle - System Settings</source>
+ <translation>Twinkle - Nastavenia systému</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Všeobecné</translation>
+ </message>
+ <message>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <source>Ring tones</source>
+ <translation>Tóny vyzváňania</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Network</source>
+ <translation>Sieť</translation>
+ </message>
+ <message>
+ <source>Log</source>
+ <translation>Protokol</translation>
+ </message>
+ <message>
+ <source>Select a category for which you want to see or modify the settings.</source>
+ <translation>Vyberte skupinu vlastností, v ktorej chcete zmeniť nastavenia.</translation>
+ </message>
+ <message>
+ <source>Sound Card</source>
+ <translation>Zvuková karta</translation>
+ </message>
+ <message>
+ <source>Select the sound card for playing the ring tone for incoming calls.</source>
+ <translation>Vyberte zvukovú kartu pre prehrávanie vyzváňacieho tónu prichádzajúceho volania.</translation>
+ </message>
+ <message>
+ <source>Select the sound card to which your microphone is connected.</source>
+ <translation>Vyberte zvukovú kartu, ku ktorej máte pripojený mikrofón.</translation>
+ </message>
+ <message>
+ <source>Select the sound card for the speaker function during a call.</source>
+ <translation>Vyberte zvukovú kartu pre slúchadlo alebo reproduktor.</translation>
+ </message>
+ <message>
+ <source>&amp;Speaker:</source>
+ <translation>&amp;Slúchadlo/reproduktor:</translation>
+ </message>
+ <message>
+ <source>&amp;Ring tone:</source>
+ <translation>&amp;Tón vyzváňania:</translation>
+ </message>
+ <message>
+ <source>Other device:</source>
+ <translation>Iné zariadenie:</translation>
+ </message>
+ <message>
+ <source>&amp;Microphone:</source>
+ <translation>&amp;Mikrofón:</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Pokročilé</translation>
+ </message>
+ <message>
+ <source>OSS &amp;fragment size:</source>
+ <translation>Veľkosť &amp;fragmentov OSS:</translation>
+ </message>
+ <message>
+ <source>16</source>
+ <translation>16</translation>
+ </message>
+ <message>
+ <source>32</source>
+ <translation>32</translation>
+ </message>
+ <message>
+ <source>64</source>
+ <translation>64</translation>
+ </message>
+ <message>
+ <source>128</source>
+ <translation>128</translation>
+ </message>
+ <message>
+ <source>256</source>
+ <translation>256</translation>
+ </message>
+ <message>
+ <source>The ALSA play period size influences the real time behaviour of your soundcard for playing sound. If your sound frequently drops while using ALSA, you might try a different value here.</source>
+ <translation>Nastavenie periódy prehrávania ALSA ovplyvňuje oneskorenie zvuku na zvukovej karte. Pri problémoch s vypadávaním alebo preskakovaním zvuku skúste použiť inú hodnotu.</translation>
+ </message>
+ <message>
+ <source>ALSA &amp;play period size:</source>
+ <translation>Veľkosť &amp;periódy prehrávania ALSA:</translation>
+ </message>
+ <message>
+ <source>&amp;ALSA capture period size:</source>
+ <translation>Veľkosť periódy nahrávania &amp;ALSA:</translation>
+ </message>
+ <message>
+ <source>The OSS fragment size influences the real time behaviour of your soundcard. If your sound frequently drops while using OSS, you might try a different value here.</source>
+ <translation>Veľkosť fragmentu OSS ovplyvňuje oneskorenie zvuku na zvukovej karte. Pri problémoch s vypadávaním alebo preskakovaním zvuku skúste použiť inú hodnotu.</translation>
+ </message>
+ <message>
+ <source>The ALSA capture period size influences the real time behaviour of your soundcard for capturing sound. If the other side of your call complains about frequently dropping sound, you might try a different value here.</source>
+ <translation>Veľkosť periódy nahrávania ALSA ovplyvňuje oneskorenie zvuku pri zaznamenávaní zvuku. Ak sa protistrana sťažuje na časté výpadky zvuku, skúste použiť inú hodnotu.</translation>
+ </message>
+ <message>
+ <source>&amp;Max log size:</source>
+ <translation>&amp;Maximálna veľkosť protokolu:</translation>
+ </message>
+ <message>
+ <source>The maximum size of a log file in MB. When the log file exceeds this size, a backup of the log file is created and the current log file is zapped. Only one backup log file will be kept.</source>
+ <translation>Maximálna veľkosť súboru s protokolom v MB. Pri dosiahnutí tejto veľkosti súboru Twinkle vytvorí z aktuálneho súboru zálohu a začne zapisovať do nového súboru. Uchováva sa len posledný súbor so zálohou.</translation>
+ </message>
+ <message>
+ <source>MB</source>
+ <translation>MB</translation>
+ </message>
+ <message>
+ <source>Log &amp;debug reports</source>
+ <translation>Zapísať správy pre &amp;ladenie</translation>
+ </message>
+ <message>
+ <source>Alt+D</source>
+ <translation>ALt+L</translation>
+ </message>
+ <message>
+ <source>Indicates if reports marked as &quot;debug&quot; will be logged.</source>
+ <translation>Indikuje, či sa majú do protokolu zapisovať &quot;debug&quot; správy.</translation>
+ </message>
+ <message>
+ <source>Log &amp;SIP reports</source>
+ <translation>Zapisovať do protokolu &amp;SIP hlásenia</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+S</translation>
+ </message>
+ <message>
+ <source>Indicates if SIP messages will be logged.</source>
+ <translation>Indikuje, či majú byť správy SIP ukladané do protokolu.</translation>
+ </message>
+ <message>
+ <source>Log S&amp;TUN reports</source>
+ <translation>Zapisovať do protokolu hlásenia S&amp;TUN</translation>
+ </message>
+ <message>
+ <source>Alt+T</source>
+ <translation>Alt+T</translation>
+ </message>
+ <message>
+ <source>Indicates if STUN messages will be logged.</source>
+ <translation>Indikuje, či majú byť správy STUN ukladané do protokolu.</translation>
+ </message>
+ <message>
+ <source>Log m&amp;emory reports</source>
+ <translation>Zapisovať hlásenia o pa&amp;mäti do protokolu</translation>
+ </message>
+ <message>
+ <source>Alt+E</source>
+ <translation>Alt+M</translation>
+ </message>
+ <message>
+ <source>Indicates if reports concerning memory management will be logged.</source>
+ <translation>Indikuje, či sa majú do protokolu zapisovať hlásenia o správe pamäte.</translation>
+ </message>
+ <message>
+ <source>System tray</source>
+ <translation>Systémová lišta</translation>
+ </message>
+ <message>
+ <source>Create &amp;system tray icon on startup</source>
+ <translation>Pri spustení vytvoriť &amp;ikonu v systémovej lište</translation>
+ </message>
+ <message>
+ <source>Enable this option if you want a system tray icon for Twinkle. The system tray icon is created when you start Twinkle.</source>
+ <translation>Zapnite túto voľbu, ak chcete vidieť ikonu Twinkle v systémovej lište. Tá sa vytvori pri spustení Twinkle.</translation>
+ </message>
+ <message>
+ <source>&amp;Hide in system tray when closing main window</source>
+ <translation>Skryť v systémovej lište pri zatvorení &amp;hlavného okna</translation>
+ </message>
+ <message>
+ <source>Alt+H</source>
+ <translation>Alt+H</translation>
+ </message>
+ <message>
+ <source>Enable this option if you want Twinkle to hide in the system tray when you close the main window.</source>
+ <translation>Povoľte, ak chcete, aby sa Twinkle pri zatvorení hlavného okna skryl do systémovej lišty.</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation>Štart programu</translation>
+ </message>
+ <message>
+ <source>S&amp;tartup hidden in system tray</source>
+ <translation>Spustiť minimalizované v &amp;systémovej lište</translation>
+ </message>
+ <message>
+ <source>Next time you start Twinkle it will immediately hide in the system tray. This works best when you also select a default user profile.</source>
+ <translation>Pri budúcom štarte sa Twinkle ihneď skryje do systémovej lišty. Toto funguje najlepšie vtedy, ak vyberiete predvolený profil používateľa.</translation>
+ </message>
+ <message>
+ <source>If you always use the same profile(s), then you can mark these profiles as default here. The next time you start Twinkle, you will not be asked to select which profiles to run. The default profiles will automatically run.</source>
+ <translation>Ak vždy používate tie isté profily, potom ich tu môžete označiť ako predvolené. Pri ďalšom spustení sa vás Twinkle nebude pýtať na to, ktoré profily má spustiť. Automaticky budú spustené predvolené profily.</translation>
+ </message>
+ <message>
+ <source>Services</source>
+ <translation>Služby</translation>
+ </message>
+ <message>
+ <source>Call &amp;waiting</source>
+ <translation>Čakajúce hovor&amp;y</translation>
+ </message>
+ <message>
+ <source>Alt+W</source>
+ <translation>Alt+Y</translation>
+ </message>
+ <message>
+ <source>With call waiting an incoming call is accepted when only one line is busy. When you disable call waiting an incoming call will be rejected when one line is busy.</source>
+ <translation>Pri zapnutej funkcii čakajúcich hovorov sú prichádzajúce hovory prijaté vtedy, ak je obsadená iba jedna linka. Ak túto funkciu zakážete, prichádzajúce hovory budú odmietané aj keď je používaná iba jedna linka.</translation>
+ </message>
+ <message>
+ <source>Hang up &amp;both lines when ending a 3-way conference call.</source>
+ <translation>Zavesiť o&amp;be linky pri ukončení konferenčného hovoru.</translation>
+ </message>
+ <message>
+ <source>Alt+B</source>
+ <translation>Alt+B</translation>
+ </message>
+ <message>
+ <source>Hang up both lines when you press bye to end a 3-way conference call. When this option is disabled, only the active line will be hung up and you can continue talking with the party on the other line.</source>
+ <translation>Ak je aktivované budú pri &quot;zavesení&quot; hovoru v konferencii ukončené obe linky. V opačnom prípade bude ukončený hovor len na aktívnej linke a je možné pokračovať v hovore na druhej linke.</translation>
+ </message>
+ <message>
+ <source>&amp;Maximum calls in call history:</source>
+ <translation>&amp;Maximálny počet záznamov v histórií volaní:</translation>
+ </message>
+ <message>
+ <source>The maximum number of calls that will be kept in the call history.</source>
+ <translation>Maximálny počet hovorov, ktoré budú udržované v zozname hovorov.</translation>
+ </message>
+ <message>
+ <source>&amp;Auto show main window on incoming call after</source>
+ <translation>Pri prichádzajúcom hovore &amp;automaticky zobraziť hlavné okno programu po uplynutí</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+A</translation>
+ </message>
+ <message>
+ <source>When the main window is hidden, it will be automatically shown on an incoming call after the number of specified seconds.</source>
+ <translation>Ak je hlavné okno programu skryté, bude pri prichádzajúcom hovore po uplynutí zadaného času (s) automaticky zobrazené.</translation>
+ </message>
+ <message>
+ <source>Number of seconds after which the main window should be shown.</source>
+ <translation>Čas v sekundách, po uplynutí ktorého bude zobrazené hlavné okno.</translation>
+ </message>
+ <message>
+ <source>secs</source>
+ <translation>sekúnd</translation>
+ </message>
+ <message>
+ <source>&amp;RTP port:</source>
+ <translation>&amp;RTP port:</translation>
+ </message>
+ <message>
+ <source>The UDP port used for sending and receiving RTP for the first line. The UDP port for the second line is 2 higher. E.g. if port 8000 is used for the first line, then the second line uses port 8002. When you use call transfer then the next even port (eg. 8004) is also used.</source>
+ <translation>UDO port použitý pri posielaní a prijímaní RTP na prvej linke. UDP port pre druhú linku je o 2 čísla vyšší, napr. ak je pre prvú linku použitý port 8000, druhá linka používa port 8002. Ak použijete presmerovanie hovoru, použije sa nasledujúci párny port (napr. 8004).</translation>
+ </message>
+ <message>
+ <source>&amp;SIP UDP port:</source>
+ <translation type="obsolete">&amp;SIP UDP port:</translation>
+ </message>
+ <message>
+ <source>Ring tone</source>
+ <translation>Tón vyzváňania</translation>
+ </message>
+ <message>
+ <source>&amp;Play ring tone on incoming call</source>
+ <translation>Pri prichádzajúcom hovore &amp;prehrávať vyzváňací tón</translation>
+ </message>
+ <message>
+ <source>Alt+P</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Indicates if a ring tone should be played when a call comes in.</source>
+ <translation>Indikuje, či má pri prichádzajúcich hovoroch znieť vyzváňanie.</translation>
+ </message>
+ <message>
+ <source>&amp;Default ring tone</source>
+ <translation>&amp;Predvolený tón vyzváňania</translation>
+ </message>
+ <message>
+ <source>Play the default ring tone when a call comes in.</source>
+ <translation>Prehrá predvolený tón vyzváňania pri prichádzajúcom hovore.</translation>
+ </message>
+ <message>
+ <source>C&amp;ustom ring tone</source>
+ <translation>&amp;Vlastný tón vyzváňania</translation>
+ </message>
+ <message>
+ <source>Alt+U</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>Play a custom ring tone when a call comes in.</source>
+ <translation>Pri prichádzajúcom hovore prehrať vlastný tón vyzváňania.</translation>
+ </message>
+ <message>
+ <source>Specify the file name of a .wav file that you want to be played as ring tone.</source>
+ <translation>Zadajte názov súboru .wav s vlastným tónom vyzváňania.</translation>
+ </message>
+ <message>
+ <source>Ring back tone</source>
+ <translation>Tón pre signalizáciu vyzváňania na volanej stanici</translation>
+ </message>
+ <message>
+ <source>P&amp;lay ring back tone when network does not play ring back tone</source>
+ <translation>&amp;Prehrať tón pre vyzváňanie na volanej stanici, ak telefónna sieť žiaden tón neposkytuje</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Play ring back tone while you are waiting for the far-end to answer your call.
+&lt;/p&gt;
+&lt;p&gt;
+Depending on your SIP provider the network might provide ring back tone or an announcement.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Prehrať tón pre vyzváňanie na volanej stanici, ak telefónna sieť žiadny taký tón neposkytuje.&lt;/p&gt;
+
+&lt;p&gt;Prítomnosť tohto tónu závisí na vašom poskytovateľovi.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>D&amp;efault ring back tone</source>
+ <translation>Predvolený tón pre vyzváňanie na &amp;volanej stanici</translation>
+ </message>
+ <message>
+ <source>Play the default ring back tone.</source>
+ <translation>Prehrávať predvolený tón vyzváňania na volanej stanici.</translation>
+ </message>
+ <message>
+ <source>Cu&amp;stom ring back tone</source>
+ <translation>Vla&amp;stný tón vyzváňania na volanej stanici</translation>
+ </message>
+ <message>
+ <source>Play a custom ring back tone.</source>
+ <translation>Použiť vlastný tón vyzváňania na volanej stanici.</translation>
+ </message>
+ <message>
+ <source>Specify the file name of a .wav file that you want to be played as ring back tone.</source>
+ <translation>Zadajte meno súboru .wav pre váš vlastný tón vyzváňania na volanej stanici.</translation>
+ </message>
+ <message>
+ <source>&amp;Lookup name for incoming call</source>
+ <translation>Podľa čísla &amp;zistiť meno volajúceho</translation>
+ </message>
+ <message>
+ <source>Ove&amp;rride received display name</source>
+ <translation>P&amp;repisovať meno volajúceho</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+R</translation>
+ </message>
+ <message>
+ <source>The caller may have provided a display name already. Tick this box if you want to override that name with the name you have in your address book.</source>
+ <translation>Volajúca protistrana môže posielať vlastné meno. Pri aktivovaní tejto voľby bude zobrazované meno prepísané menom z vášho adresára.</translation>
+ </message>
+ <message>
+ <source>Lookup &amp;photo for incoming call</source>
+ <translation>Hľadať &amp;fotografiu volajúceho</translation>
+ </message>
+ <message>
+ <source>Lookup the photo of a caller in your address book and display it on an incoming call.</source>
+ <translation>Hľadať fotografiu vo vašom adresári a zobraziť ju pri prichádzajúcom hovore.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>Accept and save your changes.</source>
+ <translation>Akceptovať a uložiť zmeny v nastaveniach.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>Undo all your changes and close the window.</source>
+ <translation>Vrátiť všetky zmeny a zavrieť okno.</translation>
+ </message>
+ <message>
+ <source>Ring tones</source>
+ <comment>Description of .wav files in file dialog</comment>
+ <translation>Tóny vyzváňania</translation>
+ </message>
+ <message>
+ <source>Choose ring tone</source>
+ <translation>Vybrať tón vyzváňania</translation>
+ </message>
+ <message>
+ <source>Ring back tones</source>
+ <comment>Description of .wav files in file dialog</comment>
+ <translation>Tón vyzváňania na volanej stanici</translation>
+ </message>
+ <message>
+ <source>Choose ring back tone</source>
+ <translation>Vybrať tón vyzváňania na volanej stanici</translation>
+ </message>
+ <message>
+ <source>&amp;Validate devices before usage</source>
+ <translation>Overiť zvukové za&amp;riadenia pred ich použitím</translation>
+ </message>
+ <message>
+ <source>Alt+V</source>
+ <translation>Alt+R</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Twinkle validates the audio devices before usage to avoid an established call without an audio channel.
+&lt;p&gt;
+On startup of Twinkle a warning is given if an audio device is inaccessible.
+&lt;p&gt;
+If before making a call, the microphone or speaker appears to be invalid, a warning is given and no call can be made.
+&lt;p&gt;
+If before answering a call, the microphone or speaker appears to be invalid, a warning is given and the call will not be answered.</source>
+ <translation>&lt;p&gt;Twinkle overuje zvukové zariadenia pred ich použitím, aby se nestalo, že počas hovoru nebude fungovať zvuk.
+&lt;p&gt;Twinkle pri štarte skontroluje a zobrazí varovanie,ak nie je dané audio zariadenie dostupné.&lt;/p&gt;
+&lt;p&gt;Ak sa pred začatím hovoru zistí, že mikrofón alebo reproduktor/slúchadlá nefunguje/ú, zobrazí sa varovanie a hovor nebude možné uskutočniť.&lt;/p&gt;
+&lt;p&gt;Rovnako v prípade, že je detegovaný prichádzajúci hovor a audio zariadenie nie je v poriadku, zobrazí sa varovanie a hovor nebude možné prijať.</translation>
+ </message>
+ <message>
+ <source>On an incoming call, Twinkle will try to find the name belonging to the incoming SIP address in your address book. This name will be displayed.</source>
+ <translation>Pri prichádzajúcom hovore sa Twinkle pokúsi nájsť k volajúcemu v adresári zodpovedajúci záznam. Ak sa to podarí, bude jeho meno zobrazené.</translation>
+ </message>
+ <message>
+ <source>Select ring tone file.</source>
+ <translation>Vybrať súbor s tónom vyzváňania.</translation>
+ </message>
+ <message>
+ <source>Select ring back tone file.</source>
+ <translation>Vybrať súbor vyzváňacieho tónu na protistrane.</translation>
+ </message>
+ <message>
+ <source>Maximum allowed size (0-65535) in bytes of an incoming SIP message over UDP.</source>
+ <translation>Maximálna povolená veľkosť prichádzajúcej SIP správy cez UDP v bajtoch(0-65535).</translation>
+ </message>
+ <message>
+ <source>&amp;SIP port:</source>
+ <translation>&amp;SIP port:</translation>
+ </message>
+ <message>
+ <source>Max. SIP message size (&amp;TCP):</source>
+ <translation>Max. veľkosť SIP správy (&amp;TCP):</translation>
+ </message>
+ <message>
+ <source>The UDP/TCP port used for sending and receiving SIP messages.</source>
+ <translation>UDP/TCP port použitý pre odosielanie a prijímanie správ SIP.</translation>
+ </message>
+ <message>
+ <source>Max. SIP message size (&amp;UDP):</source>
+ <translation>Max. veľkosť správy SIP (&amp;UDP):</translation>
+ </message>
+ <message>
+ <source>Maximum allowed size (0-4294967295) in bytes of an incoming SIP message over TCP.</source>
+ <translation>Maximálna povolená veľkosť prichádzajúcej správy SIP cez TCP v bajtoch (0-4294967295).</translation>
+ </message>
+ <message>
+ <source>W&amp;eb browser command:</source>
+ <translation>Príkaz pre w&amp;ebový prehliadač:</translation>
+ </message>
+ <message>
+ <source>Command to start your web browser. If you leave this field empty Twinkle will try to figure out your default web browser.</source>
+ <translation>Príkaz pre spustenie webového prehliadača. Ak toto pole necháte prázdne, Twinkle sa pokúsi zistiť váš predvolený prehliadač.</translation>
+ </message>
+ <message>
+ <source>512</source>
+ <translation>512</translation>
+ </message>
+ <message>
+ <source>1024</source>
+ <translation>1024</translation>
+ </message>
+ <message>
+ <source>Tip: for crackling sound with PulseAudio, set play period size to maximum.</source>
+ <translation>Tip: pri praskajúcom zvuku s PulseAudio nastavte najvyššiu periódu prehrávania ALSA.</translation>
+ </message>
+ <message>
+ <source>Enable in-call OSD</source>
+ <translation>Povoliť OSD počas hovoru</translation>
+ </message>
+</context>
+<context>
+ <name>SysTrayPopup</name>
+ <message>
+ <source>Answer</source>
+ <translation>Prijať</translation>
+ </message>
+ <message>
+ <source>Reject</source>
+ <translation>Odmietnuť</translation>
+ </message>
+ <message>
+ <source>Incoming Call</source>
+ <translation>Prichádzajúci hovor</translation>
+ </message>
+</context>
+<context>
+ <name>TermCapForm</name>
+ <message>
+ <source>Twinkle - Terminal Capabilities</source>
+ <translation>Twinkle - Parametre protistrany</translation>
+ </message>
+ <message>
+ <source>&amp;From:</source>
+ <translation>&amp;Od:</translation>
+ </message>
+ <message>
+ <source>Get terminal capabilities of</source>
+ <translation>Získať parametre protistrany</translation>
+ </message>
+ <message>
+ <source>&amp;To:</source>
+ <translation>&amp;Adresa:</translation>
+ </message>
+ <message>
+ <source>The address that you want to query for capabilities (OPTION request). This can be a full SIP address like &lt;b&gt;sip:example@example.com&lt;/b&gt; or just the user part or telephone number of the full address. When you do not specify a full address, then Twinkle will complete the address by using the domain value of your user profile.</source>
+ <translation>Adresa alebo číslo protistrany, ktorej parametre sa majú zistiť (OPTION request). Môže to byť úplná adresa SIP ako &lt;b&gt;sip:priklad@priklad.com&lt;/b&gt; alebo len meno používateľa, príp. telefónne číslo z úplnej adresy. Ak nie je zadaná úplná SIP adresa, Twinkle doplní adresu o doménu z profilu používateľa.</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Výber adresy z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+</context>
+<context>
+ <name>TransferForm</name>
+ <message>
+ <source>Twinkle - Transfer</source>
+ <translation>Twinkle - Prepojenie</translation>
+ </message>
+ <message>
+ <source>Transfer call to</source>
+ <translation>Prepojiť hovor na</translation>
+ </message>
+ <message>
+ <source>&amp;To:</source>
+ <translation>&amp;Na:</translation>
+ </message>
+ <message>
+ <source>The address of the person you want to transfer the call to. This can be a full SIP address like &lt;b&gt;sip:example@example.com&lt;/b&gt; or just the user part or telephone number of the full address. When you do not specify a full address, then Twinkle will complete the address by using the domain value of your user profile.</source>
+ <translation>Adresa alebo číslo protistrany, na ktorú má byť hovor prepojený. Môže to byť úplná adresa SIP ako &lt;b&gt;sip:priklad@priklad.com&lt;/b&gt; alebo len meno používateľa, príp. telefónne číslo z úplnej adresy. Ak nie je zadaná úplná SIP adresa, Twinkle doplní adresu o doménu z profilu používateľa.</translation>
+ </message>
+ <message>
+ <source>Address book</source>
+ <translation>Adresár</translation>
+ </message>
+ <message>
+ <source>Select an address from the address book.</source>
+ <translation>Výber adresy z adresára.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>&amp;Blind transfer</source>
+ <translation>&amp;Slepé presmerovanie</translation>
+ </message>
+ <message>
+ <source>Alt+B</source>
+ <translation>Alt+B</translation>
+ </message>
+ <message>
+ <source>Transfer the call to a third party without contacting that third party yourself.</source>
+ <translation>Hovor priamo presmerovať na nového účastníka, bez toho, aby bol najprv kontaktovaný.</translation>
+ </message>
+ <message>
+ <source>T&amp;ransfer with consultation</source>
+ <translation>Asistované p&amp;repojenie</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+R</translation>
+ </message>
+ <message>
+ <source>Before transferring the call to a third party, first consult the party yourself.</source>
+ <translation>Pred presmerovaním hovoru najprv kontaktovať nového účastníka a volajúceho ohlásiť.</translation>
+ </message>
+ <message>
+ <source>Transfer to other &amp;line</source>
+ <translation>Presmerovať na inú &amp;linku</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+L</translation>
+ </message>
+ <message>
+ <source>Connect the remote party on the active line with the remote party on the other line.</source>
+ <translation>Prepojiť hovor na aktívnej linke s hovorom na druhej linke.</translation>
+ </message>
+ <message>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+</context>
+<context>
+ <name>TwinkleCore</name>
+ <message>
+ <source>Failed to create log file %1 .</source>
+ <translation>Chyba pri vytváraní súboru s protokolom %1.</translation>
+ </message>
+ <message>
+ <source>Cannot open file for reading: %1</source>
+ <translation>Chyba pri otváraní súboru na čítanie: %1</translation>
+ </message>
+ <message>
+ <source>File system error while reading file %1 .</source>
+ <translation>Chyba súborového systému pri čítaní súboru %1.</translation>
+ </message>
+ <message>
+ <source>Cannot open file for writing: %1</source>
+ <translation>Nie je možné otvoriť súbor %1 pre zápis</translation>
+ </message>
+ <message>
+ <source>File system error while writing file %1 .</source>
+ <translation>Chyba súborového systému pri zápise do %1.</translation>
+ </message>
+ <message>
+ <source>Excessive number of socket errors.</source>
+ <translation>Príliš veľký počet chýb socketu.</translation>
+ </message>
+ <message>
+ <source>Built with support for:</source>
+ <translation>Vytvorené s podporou pre:</translation>
+ </message>
+ <message>
+ <source>Contributions:</source>
+ <translation>Prispievatelia:</translation>
+ </message>
+ <message>
+ <source>This software contains the following software from 3rd parties:</source>
+ <translation>Tento program obsahuje softvérové časti nasledovných tretích strán:</translation>
+ </message>
+ <message>
+ <source>* GSM codec from Jutta Degener and Carsten Bormann, University of Berlin</source>
+ <translation>* GSM kodek od Jutta Degener a Carsten Bormann, University of Berlin</translation>
+ </message>
+ <message>
+ <source>* G.711/G.726 codecs from Sun Microsystems (public domain)</source>
+ <translation>* G.711/G.726 kodeky od Sun Microsystems (public domain)</translation>
+ </message>
+ <message>
+ <source>* iLBC implementation from RFC 3951 (www.ilbcfreeware.org)</source>
+ <translation>* iLBC implementácia RFC 3951 (www.ilbcfreeware.org)</translation>
+ </message>
+ <message>
+ <source>* Parts of the STUN project at http://sourceforge.net/projects/stun</source>
+ <translation>* Časti zo STUN projektu na http://sourceforge.net/projects/stun</translation>
+ </message>
+ <message>
+ <source>* Parts of libsrv at http://libsrv.sourceforge.net/</source>
+ <translation>* Časti z libsrv na http://libsrv.sourceforge.net/</translation>
+ </message>
+ <message>
+ <source>For RTP the following dynamic libraries are linked:</source>
+ <translation>Pre RTP sú linkované nasledujúce dynamické knižnice:</translation>
+ </message>
+ <message>
+ <source>Translated to english by &lt;your name&gt;</source>
+ <translation>Do slovenčiny preložil Jose Riha</translation>
+ </message>
+ <message>
+ <source>Directory %1 does not exist.</source>
+ <translation>Adresár &quot;%1&quot; neexistuje.</translation>
+ </message>
+ <message>
+ <source>Cannot open file %1 .</source>
+ <translation>Súbor %1 nie je možné otvoriť.</translation>
+ </message>
+ <message>
+ <source>%1 is not set to your home directory.</source>
+ <translation>&quot;%1&quot; nie je vaším domovským adresárom.</translation>
+ </message>
+ <message>
+ <source>Directory %1 (%2) does not exist.</source>
+ <translation>Adresár %1 (%2) neexistuje.</translation>
+ </message>
+ <message>
+ <source>Cannot create directory %1 .</source>
+ <translation>Adresár %1 nie je možné vytvoriť.</translation>
+ </message>
+ <message>
+ <source>%1 is already running.
+Lock file %2 already exists.</source>
+ <translation>%1 už beží.
+Súbor so zámkom %2 už existuje.</translation>
+ </message>
+ <message>
+ <source>Cannot create %1 .</source>
+ <translation>Nie je možné vytvoriť %1.</translation>
+ </message>
+ <message>
+ <source>Syntax error in file %1 .</source>
+ <translation>Chyba syntaxe v súbore %1.</translation>
+ </message>
+ <message>
+ <source>Failed to backup %1 to %2</source>
+ <translation>Chyba pri zálohovaní %1 do %2</translation>
+ </message>
+ <message>
+ <source>unknown name (device is busy)</source>
+ <translation>neznámy názov (zariadenie sa používa)</translation>
+ </message>
+ <message>
+ <source>Default device</source>
+ <translation>Predvolené zariadenie</translation>
+ </message>
+ <message>
+ <source>Anonymous</source>
+ <translation>Anonymné</translation>
+ </message>
+ <message>
+ <source>Warning:</source>
+ <translation>Varovanie:</translation>
+ </message>
+ <message>
+ <source>Call transfer - %1</source>
+ <translation>Presmerovanie hovoru - %1</translation>
+ </message>
+ <message>
+ <source>Sound card cannot be set to full duplex.</source>
+ <translation>Zvuková karta nefunguje v režime full duplex.</translation>
+ </message>
+ <message>
+ <source>Cannot set buffer size on sound card.</source>
+ <translation>Nie je možné nastaviť veľkosť bufferu na zvukovej karte.</translation>
+ </message>
+ <message>
+ <source>Sound card cannot be set to %1 channels.</source>
+ <translation>Zvukové zariadenie nie je možné nastaviť na %1 kanálov.</translation>
+ </message>
+ <message>
+ <source>Cannot set sound card to 16 bits recording.</source>
+ <translation>Audio zariadenie nie je možné nastaviť na 16 bitové nahrávanie.</translation>
+ </message>
+ <message>
+ <source>Cannot set sound card to 16 bits playing.</source>
+ <translation>Audio zariadenie nie je možné nastaviť na 16 bitové prehrávanie.</translation>
+ </message>
+ <message>
+ <source>Cannot set sound card sample rate to %1</source>
+ <translation>Nie je možné nastaviť vzorkovaciu frekvenciu audio zariadenia na %1</translation>
+ </message>
+ <message>
+ <source>Opening ALSA driver failed</source>
+ <translation>Chyba pri otváraní ovládača ALSA</translation>
+ </message>
+ <message>
+ <source>Cannot open ALSA driver for PCM playback</source>
+ <translation>Nie je možné otvoriť ovládač ALSA pre prehrávanie PCM</translation>
+ </message>
+ <message>
+ <source>Cannot resolve STUN server: %1</source>
+ <translation>Nie je možné vyhľadať adresu STUN servera: %1</translation>
+ </message>
+ <message>
+ <source>You are behind a symmetric NAT.
+STUN will not work.
+Configure a public IP address in the user profile
+and create the following static bindings (UDP) in your NAT.</source>
+ <translation>Nachádzate sa za symetrickým NATom.
+STUN nebude fungovať.
+V profile používateľa nastavte verejnú IP adresu
+a na vašom NATe namapujte statické (UDP) porty.</translation>
+ </message>
+ <message>
+ <source>public IP: %1 --&gt; private IP: %2 (SIP signaling)</source>
+ <translation>verejná IP: %1 --&gt; privátna IP: %2 (SIP signalizácia)</translation>
+ </message>
+ <message>
+ <source>public IP: %1-%2 --&gt; private IP: %3-%4 (RTP/RTCP)</source>
+ <translation>verejná IP: %1 - %2 --&gt; privátna IP: %3 - %4 (RTP/RTCP)</translation>
+ </message>
+ <message>
+ <source>Cannot reach the STUN server: %1</source>
+ <translation>Nie je možné pripojiť sa na STUN server: %1</translation>
+ </message>
+ <message>
+ <source>Port %1 (SIP signaling)</source>
+ <translation>Port %1 (SIP signalizácia)</translation>
+ </message>
+ <message>
+ <source>NAT type discovery via STUN failed.</source>
+ <translation>Detekcia typu NATu pomocou STUN skončila s chybou.</translation>
+ </message>
+ <message>
+ <source>If you are behind a firewall then you need to open the following UDP ports.</source>
+ <translation>Ak sa nachádzate za firewallom, je potrebné otvoriť nasledujúce UDP porty.</translation>
+ </message>
+ <message>
+ <source>Ports %1-%2 (RTP/RTCP)</source>
+ <translation>Porty %1-%2 (RTP/RTCP)</translation>
+ </message>
+ <message>
+ <source>Cannot access the ring tone device (%1).</source>
+ <translation>Zvukové zariadenie %1 pre tón vyzváňania nie je dostupné.</translation>
+ </message>
+ <message>
+ <source>Cannot access the speaker (%1).</source>
+ <translation>Zvukové zariadenie %1 pre reproduktory/slúchadlá nie je dostupné.</translation>
+ </message>
+ <message>
+ <source>Cannot access the microphone (%1).</source>
+ <translation>Zvukové zariadenie %1 pre mikrofón nie je dostupné.</translation>
+ </message>
+ <message>
+ <source>Cannot open ALSA driver for PCM capture</source>
+ <translation>Nie je možné otvoriť ovládač ALSA pre nahrávanie PCM</translation>
+ </message>
+ <message>
+ <source>Cannot receive incoming TCP connections.</source>
+ <translation>Nie je možné prijímať prichádzajúce TCP spojenia.</translation>
+ </message>
+ <message>
+ <source>Failed to create file %1</source>
+ <translation>Zlyhalo vytvorenie súboru %1</translation>
+ </message>
+ <message>
+ <source>Failed to write data to file %1</source>
+ <translation>Zlyhal zápis dát do súboru %1</translation>
+ </message>
+ <message>
+ <source>Failed to send message.</source>
+ <translation>Zlyhalo odoslanie správy.</translation>
+ </message>
+ <message>
+ <source>Cannot lock %1 .</source>
+ <translation>Nemôžem zamknúť %1.</translation>
+ </message>
+</context>
+<context>
+ <name>UserProfileForm</name>
+ <message>
+ <source>Twinkle - User Profile</source>
+ <translation>Twinkle - Profil používateľa</translation>
+ </message>
+ <message>
+ <source>User profile:</source>
+ <translation>Profil používateľa:</translation>
+ </message>
+ <message>
+ <source>Select which profile you want to edit.</source>
+ <translation>Vyberte profil, ktorý chcete upraviť.</translation>
+ </message>
+ <message>
+ <source>User</source>
+ <translation>Používateľ</translation>
+ </message>
+ <message>
+ <source>SIP server</source>
+ <translation>SIP server</translation>
+ </message>
+ <message>
+ <source>RTP audio</source>
+ <translation>RTP audio</translation>
+ </message>
+ <message>
+ <source>SIP protocol</source>
+ <translation>Protokol SIP</translation>
+ </message>
+ <message>
+ <source>Address format</source>
+ <translation>Formát adresy</translation>
+ </message>
+ <message>
+ <source>Timers</source>
+ <translation>Časovače</translation>
+ </message>
+ <message>
+ <source>Ring tones</source>
+ <translation>Vyzváňacie tóny</translation>
+ </message>
+ <message>
+ <source>Scripts</source>
+ <translation>Skripty</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>Bezpečnosť</translation>
+ </message>
+ <message>
+ <source>Select a category for which you want to see or modify the settings.</source>
+ <translation>Vyberte skupinu vlastností, v ktorej chcete zmeniť nastavenia.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>Accept and save your changes.</source>
+ <translation>Akceptovať a uložiť zmeny v nastaveniach.</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>Undo all your changes and close the window.</source>
+ <translation>Vrátiť všetky zmeny a zavrieť okno.</translation>
+ </message>
+ <message>
+ <source>SIP account</source>
+ <translation>Účet SIP</translation>
+ </message>
+ <message>
+ <source>&amp;User name*:</source>
+ <translation>&amp;Meno používateľa*:</translation>
+ </message>
+ <message>
+ <source>&amp;Domain*:</source>
+ <translation type="vanished">&amp;Doména*:</translation>
+ </message>
+ <message>
+ <source>Or&amp;ganization:</source>
+ <translation type="vanished">Or&amp;ganizácia:</translation>
+ </message>
+ <message>
+ <source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
+&lt;br&gt;&lt;br&gt;
+This field is mandatory.</source>
+ <translation>Meno používateľa, ktoré vám pridelil váš poskytovateľ. Je to prvá časť vašej kompletnej SIP adresy, &lt;b&gt;menouzivatela&lt;/b&gt;@domena.com. Môže byť vo forme telefónneho čísla.
+&lt;br&gt;&lt;br&gt;
+Toto pole je povinné.</translation>
+ </message>
+ <message>
+ <source>The domain part of your SIP address, username@&lt;b&gt;domain.com&lt;/b&gt;. Instead of a real domain this could also be the hostname or IP address of your &lt;b&gt;SIP proxy&lt;/b&gt;. If you want direct IP phone to IP phone communications then you fill in the hostname or IP address of your computer.
+&lt;br&gt;&lt;br&gt;
+This field is mandatory.</source>
+ <translation>Doménová časť vašej adresy SIP, menopouzivatela@&lt;b&gt;domena.com&lt;/b&gt;. Miesto skutočnej domény tu môže byť tiež názov hostiteľa alebo IP adresa vašej &lt;b&gt;SIP proxy&lt;/b&gt;. Pre priame volanie medzi IP adresami tu uveďte názov hostiteľa alebo IP adresu vášho počítača.
+&lt;br&gt;&lt;br&gt;
+Toto pole je povinné.</translation>
+ </message>
+ <message>
+ <source>You may fill in the name of your organization. When you make a call, this might be shown to the called party.</source>
+ <translation>Tu je možné uviesť meno vašej organizácie. Ak niekomu voláte, môže byť tento údaj zobrazený protistrane.</translation>
+ </message>
+ <message>
+ <source>This is just your full name, e.g. John Doe. It is used as a display name. When you make a call, this display name might be shown to the called party.</source>
+ <translation>Toto je vaše celé meno, napríklad Jozef Mrkva. Tento údaj je zobrazený volanej protistrane ako meno volajúceho.</translation>
+ </message>
+ <message>
+ <source>&amp;Your name:</source>
+ <translation>Vaše &amp;meno:</translation>
+ </message>
+ <message>
+ <source>SIP authentication</source>
+ <translation>Prihlasovacie údaje SIP</translation>
+ </message>
+ <message>
+ <source>&amp;Realm:</source>
+ <translation>&amp;Realm (sféra):</translation>
+ </message>
+ <message>
+ <source>Authentication &amp;name:</source>
+ <translation>Prihlasovacie &amp;meno:</translation>
+ </message>
+ <message>
+ <source>&amp;Password:</source>
+ <translation>&amp;Heslo:</translation>
+ </message>
+ <message>
+ <source>The realm for authentication. This value must be provided by your SIP provider. If you leave this field empty, then Twinkle will try the user name and password for any realm that it will be challenged with.</source>
+ <translation>Hodnota &quot;realm&quot; (sféra) pre prihlásenie. Tento údaj vám musí poskytnúť váš poskytovateľ SIP. Ak toto pole necháte prázdne, Twinkle sa pokúsi o prihlásenie s vaším meno používateľa a heslom pri ľubovoľnom realme.</translation>
+ </message>
+ <message>
+ <source>Your SIP authentication name. Quite often this is the same as your SIP user name. It can be a different name though.</source>
+ <translation>Vaše prihlasovacie SIP meno. Je často identické s vaším SIP menom používateľa. Môžu však byť aj rozdielne.</translation>
+ </message>
+ <message>
+ <source>Your password for authentication.</source>
+ <translation>Vaše prihlasovacie heslo.</translation>
+ </message>
+ <message>
+ <source>Registrar</source>
+ <translation>Registrar (prihlasovací server)</translation>
+ </message>
+ <message>
+ <source>&amp;Registrar:</source>
+ <translation>&amp;Registrar:</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of your registrar. If you use an outbound proxy that is the same as your registrar, then you may leave this field empty and only fill in the address of the outbound proxy.</source>
+ <translation>Názov hostiteľa, doménové meno alebo IP adresa prihlasovacieho servera. Ak používate odchádzajúcu proxy, ktorá je rovnaká ako váš prihlasovací server, je možné toto pole nechať prázdne a vyplniť iba adresu odchádzajúcej proxy.</translation>
+ </message>
+ <message>
+ <source>&amp;Expiry:</source>
+ <translation type="vanished">&amp;Platnosť:</translation>
+ </message>
+ <message>
+ <source>The registration expiry time that Twinkle will request.</source>
+ <translation>Doba platnosti registrácie v sekundách, ktorú si Twinkle vyžiada.</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>sekúnd</translation>
+ </message>
+ <message>
+ <source>Re&amp;gister at startup</source>
+ <translation>Re&amp;gistrovať sa pri štarte</translation>
+ </message>
+ <message>
+ <source>Alt+G</source>
+ <translation>Alt+H</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should automatically register when you run this user profile. You should disable this when you want to do direct IP phone to IP phone communication without a SIP proxy.</source>
+ <translation>Indikuje, či sa má Twinkle automaticky registrovať pri spustení tohto profilu. Toto by ste mali zakázať, ak chcete volať priamo medzi IP adresami bez SIP proxy.</translation>
+ </message>
+ <message>
+ <source>Outbound Proxy</source>
+ <translation>Odchádzajúca proxy</translation>
+ </message>
+ <message>
+ <source>&amp;Use outbound proxy</source>
+ <translation>Po&amp;užiť odchádzajúcu-proxy</translation>
+ </message>
+ <message>
+ <source>Alt+U</source>
+ <translation>Alt+U</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should use an outbound proxy. If an outbound proxy is used then all SIP requests are sent to this proxy. Without an outbound proxy, Twinkle will try to resolve the SIP address that you type for a call invitation for example to an IP address and send the SIP request there.</source>
+ <translation>Indikuje, či má Twinkle používať odchádzajúcu proxy. Ak sa používa odchádzajúca proxy, všetky požiadavky SIP sú posielané na túto proxy.Bez odchádzajúcej proxy sa Twinkle pokúsi použiť názov hostiteľa z adresy SIP a smerovať hovor priamo tam.</translation>
+ </message>
+ <message>
+ <source>Outbound &amp;proxy:</source>
+ <translation>Odchádzajúca &amp;proxy:</translation>
+ </message>
+ <message>
+ <source>&amp;Send in-dialog requests to proxy</source>
+ <translation>Poslať in-&amp;dialog požiadavky na proxy</translation>
+ </message>
+ <message>
+ <source>Alt+S</source>
+ <translation>Alt+D</translation>
+ </message>
+ <message>
+ <source>SIP requests within a SIP dialog are normally sent to the address in the contact-headers exchanged during call setup. If you tick this box, that address is ignored and in-dialog request are also sent to the outbound proxy.</source>
+ <translation>Požiadavky SIP sa bežne posielajú na adresu v kontaktných hlavičkách vymenených pri zostavovaní hovoru. Ak je toto pole zaškrtnuté, potom je táto adresa ignorovaná a všetky žiadosti sa takisto zasielajú na odchádzajúcu proxy.</translation>
+ </message>
+ <message>
+ <source>&amp;Don&apos;t send a request to proxy if its destination can be resolved locally.</source>
+ <translation>N&amp;eposielať žiadosti SIP na proxy, ak je možné cieľ spojiť lokálne.</translation>
+ </message>
+ <message>
+ <source>Alt+D</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <source>When you tick this option Twinkle will first try to resolve a SIP address to an IP address itself. If it can, then the SIP request will be sent there. Only when it cannot resolve the address, it will send the SIP request to the proxy (note that an in-dialog request will only be sent to the proxy in this case when you also ticked the previous option.)</source>
+ <translation>Ak je táto voľba aktivovaná, najprv sa Twinkle pokúsi nájsť k cieľovej adrese zodpovedajúcu IP adresu a poslať požiadavku SIP priamo tam. Ak sa nepodarí IP adresu zistiť, je požiadavka poslaná na proxy. (Upozornenie: in-dialog žiadosti budú v tomto prípade posielané na proxy iba ak je aktivovaná aj predchádzajúca voľba.)</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of your outbound proxy.</source>
+ <translation>Doménové meno, IP adresa alebo meno vašej odchádzajúcej proxy.</translation>
+ </message>
+ <message>
+ <source>Co&amp;decs</source>
+ <translation>Ko&amp;deky</translation>
+ </message>
+ <message>
+ <source>Codecs</source>
+ <translation>Kodeky</translation>
+ </message>
+ <message>
+ <source>Available codecs:</source>
+ <translation>Dostupné kodeky:</translation>
+ </message>
+ <message>
+ <source>G.711 A-law</source>
+ <translation>G.711 A-law</translation>
+ </message>
+ <message>
+ <source>G.711 u-law</source>
+ <translation>G.711 u-law</translation>
+ </message>
+ <message>
+ <source>GSM</source>
+ <translation>GSM</translation>
+ </message>
+ <message>
+ <source>speex-nb (8 kHz)</source>
+ <translation>speex-nb (8 kHz)</translation>
+ </message>
+ <message>
+ <source>speex-wb (16 kHz)</source>
+ <translation>speex-wb (16 kHz)</translation>
+ </message>
+ <message>
+ <source>speex-uwb (32 kHz)</source>
+ <translation>speex-uwb (32 kHz)</translation>
+ </message>
+ <message>
+ <source>List of available codecs.</source>
+ <translation>Zoznam dostupných kodekov.</translation>
+ </message>
+ <message>
+ <source>Move a codec from the list of available codecs to the list of active codecs.</source>
+ <translation>Presunúť kodek zo zoznamu dostupných kodekov do zoznamu aktívnych kodekov.</translation>
+ </message>
+ <message>
+ <source>Move a codec from the list of active codecs to the list of available codecs.</source>
+ <translation>Deaktivovať kodek.</translation>
+ </message>
+ <message>
+ <source>Active codecs:</source>
+ <translation>Aktívne kodeky:</translation>
+ </message>
+ <message>
+ <source>List of active codecs. These are the codecs that will be used for media negotiation during call setup. The order of the codecs is the order of preference of use.</source>
+ <translation>Zoznam aktívnych kodekov. Tieto budú použité pri dohodnutí parametrov hovoru počas zostavovania hovoru. Poradie tu uvedených kodekov je zároveň poradím, v akom budú kodeky preferované.</translation>
+ </message>
+ <message>
+ <source>Move a codec upwards in the list of active codecs, i.e. increase its preference of use.</source>
+ <translation>Presunúť tento kodek smerom hore v zozname kodekov, t. j. zvýšiť jeho prioritu.</translation>
+ </message>
+ <message>
+ <source>Move a codec downwards in the list of active codecs, i.e. decrease its preference of use.</source>
+ <translation>Presunúť tento kodek smerom dole v zozname kodekov, t. j. znížiť jeho prioritu.</translation>
+ </message>
+ <message>
+ <source>&amp;G.711/G.726 payload size:</source>
+ <translation>&amp;G.711/G.726 veľkosť payloadu:</translation>
+ </message>
+ <message>
+ <source>The preferred payload size for the G.711 and G.726 codecs.</source>
+ <translation>Uprednostňovaná veľkosť payloadu pre kodeky G.711 a G.726.</translation>
+ </message>
+ <message>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <source>&amp;iLBC</source>
+ <translation>&amp;iLBC</translation>
+ </message>
+ <message>
+ <source>iLBC</source>
+ <translation>iLBC</translation>
+ </message>
+ <message>
+ <source>i&amp;LBC payload type:</source>
+ <translation>i&amp;LBC typ payloadu:</translation>
+ </message>
+ <message>
+ <source>iLBC &amp;payload size (ms):</source>
+ <translation>iLBC veľkosť &amp;payloadu (ms):</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for iLBC.</source>
+ <translation>Dynamická hodnota typu pre iLBC (96 alebo viac).</translation>
+ </message>
+ <message>
+ <source>20</source>
+ <translation>20</translation>
+ </message>
+ <message>
+ <source>30</source>
+ <translation>30</translation>
+ </message>
+ <message>
+ <source>The preferred payload size for iLBC.</source>
+ <translation>Uprednostňovaná veľkosť payloadu pre iLBC.</translation>
+ </message>
+ <message>
+ <source>&amp;Speex</source>
+ <translation>&amp;Speex</translation>
+ </message>
+ <message>
+ <source>Speex</source>
+ <translation>Speex</translation>
+ </message>
+ <message>
+ <source>Perceptual &amp;enhancement</source>
+ <translation>Vylepšenie &amp;kvality zvuku</translation>
+ </message>
+ <message>
+ <source>Alt+E</source>
+ <translation>Alt+K</translation>
+ </message>
+ <message>
+ <source>Perceptual enhancement is a part of the decoder which, when turned on, tries to reduce (the perception of) the noise produced by the coding/decoding process. In most cases, perceptual enhancement make the sound further from the original objectively (if you use SNR), but in the end it still sounds better (subjective improvement).</source>
+ <translation>Vylepšenie vnímanej kvality zvuku je súčasťou dekodéru, ktorá sa snaží znížiť (vnímaný) šum vzniknutý pri procese kódovania/dekódovania. Vo väčšine prípadov vedie táto funkcia k väčšiemu objektívnemu odchýleniu zvuku od originálu (z hľadiska SNR), ale i napriek tomu znie lepšie (subjektívne vylepšenie).</translation>
+ </message>
+ <message>
+ <source>&amp;Ultra wide band payload type:</source>
+ <translation>Typ payload&amp;u pre ultra široké pásmo:</translation>
+ </message>
+ <message>
+ <source>Alt+V</source>
+ <translation>Alt+U</translation>
+ </message>
+ <message>
+ <source>&amp;Wide band payload type:</source>
+ <translation>Typ payloadu pre široké pásm&amp;o:</translation>
+ </message>
+ <message>
+ <source>Alt+B</source>
+ <translation>Alt+B</translation>
+ </message>
+ <message>
+ <source>Variable bit-rate (VBR) allows a codec to change its bit-rate dynamically to adapt to the &quot;difficulty&quot; of the audio being encoded. In the example of Speex, sounds like vowels and high-energy transients require a higher bit-rate to achieve good quality, while fricatives (e.g. s,f sounds) can be coded adequately with less bits. For this reason, VBR can achieve a lower bit-rate for the same quality, or a better quality for a certain bit-rate. Despite its advantages, VBR has two main drawbacks: first, by only specifying quality, there&apos;s no guarantee about the final average bit-rate. Second, for some real-time applications like voice over IP (VoIP), what counts is the maximum bit-rate, which must be low enough for the communication channel.</source>
+ <translation>Variabilná šírka pásma (VBR) umožní danému kodeku prispôsobiť množstvo dát potrebných na prenos hovoru charakteru audio signálu. Kým napr. niektoré ostré samohlásky alebo veľmi premenlivé pasáže vyžadujú veľkú vzorkovaciu frekvenciu a tým aj veľký dátový tok, mäkké spoluhlásky si vystačia s malým dátovým tokom. Vďaka tomu VBC tak môže pri danej dátovej rýchlosti docieliť lepšej kvality zvuku alebo pri danej kvalite hovoru vystačiť s nižším dátovým tokom. Nevýhodou je, že pri zadanej kvalite nie je možné predpovedať aký veľký dátový tok v skutočnosti bude. A tiež, že v aplikáciách pracujúcich v reálnom čase (akým je práve VoIP) je rozhodujúca maximálna šírka pásma, ktorú musí zvládnuť komunikačný kanál.</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for speex wide band.</source>
+ <translation>Dynamická hodnota typu pre speex wide band (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>Co&amp;mplexity:</source>
+ <translation>Ko&amp;mplexita:</translation>
+ </message>
+ <message>
+ <source>Discontinuous transmission is an addition to VAD/VBR operation, that allows one to stop transmitting completely when the background noise is stationary.</source>
+ <translation>Nesúvislé vysielanie je rozšírením funkčnosti VAD/VBR, kedy je možné úplne prestať odosielať dáta, keď je na linke ticho.</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for speex narrow band.</source>
+ <translation>Dynamická hodnota typu pre speex narrow band (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>With Speex, it is possible to vary the complexity allowed for the encoder. This is done by controlling how the search is performed with an integer ranging from 1 to 10 in a way that&apos;s similar to the -1 to -9 options to gzip and bzip2 compression utilities. For normal use, the noise level at complexity 1 is between 1 and 2 dB higher than at complexity 10, but the CPU requirements for complexity 10 is about 5 times higher than for complexity 1. In practice, the best trade-off is between complexity 2 and 4, though higher settings are often useful when encoding non-speech sounds like DTMF tones.</source>
+ <translation>V prípade Speexu je možné meniť komplexitu kodéru. To slúži na zadanie hĺbky hľadania v rozsahu od 1 do 10. Podobný princíp je zavedený v kompresných programoch gzip a bzip2 s voľbou -1 až -9. Za normálnych podmienok je odstup šumu pri komplexite 1 o 1 až 2 dB vyšší ako pri komplexite 10. Avšak vyťaženie procesoru je asi 5x vyššie ako pri komplexite 1. V praxi sa osvedčilo nastavenie medzi 2 až 4. Vyššie nastavenia sú vhodné pre prenos tónov DTMF alebo hudby.</translation>
+ </message>
+ <message>
+ <source>&amp;Narrow band payload type:</source>
+ <translation>Typ payloadu pre úz&amp;ke pásmo:</translation>
+ </message>
+ <message>
+ <source>G.726</source>
+ <translation>G.726</translation>
+ </message>
+ <message>
+ <source>G.726 &amp;40 kbps payload type:</source>
+ <translation>Typ payloadu pre G.726 &amp;40 kb/s:</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for G.726 40 kbps.</source>
+ <translation>Dynamická hodnota typu pre G.726 40 kb/s (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for G.726 32 kbps.</source>
+ <translation>Dynamická hodnota typu pre G.726 32 kb/s (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>G.726 &amp;24 kbps payload type:</source>
+ <translation>Typ payloadu pre G.726 &amp;24 kb/s:</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for G.726 24 kbps.</source>
+ <translation>Dynamická hodnota typu pre G.726 24 kb/s (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>G.726 &amp;32 kbps payload type:</source>
+ <translation>Typ payloadu pre G.726 &amp;32 kb/s:</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for G.726 16 kbps.</source>
+ <translation>Dynamická hodnota typu pre G.726 16 kb/s (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>G.726 &amp;16 kbps payload type:</source>
+ <translation>Typ payloadu pre G.726 &amp;16 kb/s:</translation>
+ </message>
+ <message>
+ <source>DT&amp;MF</source>
+ <translation>DT&amp;MF</translation>
+ </message>
+ <message>
+ <source>DTMF</source>
+ <translation>DTMF</translation>
+ </message>
+ <message>
+ <source>The dynamic type value (96 or higher) to be used for DTMF events (RFC 2833).</source>
+ <translation>Dynamická hodnota typu pre udalosti DTMF (RFC 2833) (96 alebo vyšší).</translation>
+ </message>
+ <message>
+ <source>DTMF vo&amp;lume:</source>
+ <translation>H&amp;lasitosť DTMF:</translation>
+ </message>
+ <message>
+ <source>The power level of the DTMF tone in dB.</source>
+ <translation>Hlasitosť vysielaných DTMF tónov v dB.</translation>
+ </message>
+ <message>
+ <source>The pause after a DTMF tone.</source>
+ <translation>Pauza medzi dvoma DTMF tónmi.</translation>
+ </message>
+ <message>
+ <source>DTMF &amp;duration:</source>
+ <translation>Trvanie &amp;DTMF:</translation>
+ </message>
+ <message>
+ <source>DTMF payload &amp;type:</source>
+ <translation>&amp;Typ payloadu DTMF:</translation>
+ </message>
+ <message>
+ <source>DTMF &amp;pause:</source>
+ <translation>&amp;Pauza DTMF:</translation>
+ </message>
+ <message>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <source>Duration of a DTMF tone.</source>
+ <translation>Doba trvania tónu DTMF.</translation>
+ </message>
+ <message>
+ <source>DTMF t&amp;ransport:</source>
+ <translation>P&amp;renos DTMF:</translation>
+ </message>
+ <message>
+ <source>Auto</source>
+ <translation>Automaticky</translation>
+ </message>
+ <message>
+ <source>RFC 2833</source>
+ <translation>RFC 2833</translation>
+ </message>
+ <message>
+ <source>Inband</source>
+ <translation>Zvukovo</translation>
+ </message>
+ <message>
+ <source>Out-of-band (SIP INFO)</source>
+ <translation>Out-of-band (SIP INFO)</translation>
+ </message>
+ <message>
+ <source>&lt;h2&gt;RFC 2833&lt;/h2&gt;
+&lt;p&gt;Send DTMF tones as RFC 2833 telephone events.&lt;/p&gt;
+&lt;h2&gt;Inband&lt;/h2&gt;
+&lt;p&gt;Send DTMF inband.&lt;/p&gt;
+&lt;h2&gt;Auto&lt;/h2&gt;
+&lt;p&gt;If the far end of your call supports RFC 2833, then a DTMF tone will be send as RFC 2833 telephone event, otherwise it will be sent inband.
+&lt;/p&gt;
+&lt;h2&gt;Out-of-band (SIP INFO)&lt;/h2&gt;
+&lt;p&gt;
+Send DTMF out-of-band via a SIP INFO request.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;&lt;h3&gt;RFC 2833&lt;/h3&gt;
+Vysielať DTMF tóny ako telefónne udalosti podľa RFC 2833.&lt;/p&gt;
+&lt;p&gt;&lt;h3&gt;Zvukovo&lt;/h3&gt;
+Vysielať DTMF inband (skutočné tóny, ktoré Twinkle primieša do audio signálu).&lt;/p&gt;
+&lt;p&gt;&lt;h3&gt;Auto&lt;/h3&gt;
+Ak protistrana podporuje RFC 2833, sú použité DTMF tóny podľa štandardu RFC 2833, inak ako inband.&lt;/p&gt;
+&lt;p&gt;&lt;h3&gt;Out-of-band (SIP INFO)&lt;/h3&gt;
+Vysielať DTMF out-of-band prostredníctvom požiadavky SIP INFO.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>Všeobecné</translation>
+ </message>
+ <message>
+ <source>Redirection</source>
+ <translation>Presmerovanie</translation>
+ </message>
+ <message>
+ <source>&amp;Allow redirection</source>
+ <translation>Povoliť presmerov&amp;anie</translation>
+ </message>
+ <message>
+ <source>Alt+A</source>
+ <translation>Alt+A</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should redirect a request if a 3XX response is received.</source>
+ <translation>Indikuje, či má Twinkle presmerovať požiadavku pri odpovedi 3XX.</translation>
+ </message>
+ <message>
+ <source>Ask user &amp;permission to redirect</source>
+ <translation>Vypýtať si povolenie od používateľa pred &amp;presmerovaním</translation>
+ </message>
+ <message>
+ <source>Alt+P</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should ask the user before redirecting a request when a 3XX response is received.</source>
+ <translation>Ak je táto voľba aktivovaná, Twinkle sa pri prijatí požiadavky 3XX spýta používateľa, či má byť hovor presmerovaný na nový cieľ.</translation>
+ </message>
+ <message>
+ <source>Max re&amp;directions:</source>
+ <translation type="vanished">Max. počet &amp;presmerovaní:</translation>
+ </message>
+ <message>
+ <source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
+ <translation>Počet presmerovaní odchádzajúcich volaní, po ktorom Twinkle ukončí pokusy o nadviazanie spojení. Zabraňuje zacykleniu pri presmerovaní.</translation>
+ </message>
+ <message>
+ <source>Protocol options</source>
+ <translation>Nastavenie protokolu SIP</translation>
+ </message>
+ <message>
+ <source>Call &amp;Hold variant:</source>
+ <translation type="vanished">Spôsob pridržania &amp;hovoru:</translation>
+ </message>
+ <message>
+ <source>RFC 2543</source>
+ <translation>RFC 2543</translation>
+ </message>
+ <message>
+ <source>RFC 3264</source>
+ <translation>RFC 3264</translation>
+ </message>
+ <message>
+ <source>Indicates if RFC 2543 (set media IP address in SDP to 0.0.0.0) or RFC 3264 (use direction attributes in SDP) is used to put a call on-hold.</source>
+ <translation>Indikuje, či bude pre podržanie hovoru použité RFC 2543 (nastavenie IP adresy SDP na 0.0.0.0) alebo RFC 3264 (použité smerové atribúty v SDP).</translation>
+ </message>
+ <message>
+ <source>Allow m&amp;issing Contact header in 200 OK on REGISTER</source>
+ <translation>P&amp;ovoliť chýbajúcu kontaktnú hlavičku v 200 OK pri REGISTER</translation>
+ </message>
+ <message>
+ <source>Alt+I</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>A 200 OK response on a REGISTER request must contain a Contact header. Some registrars however, do not include a Contact header or include a wrong Contact header. This option allows for such a deviation from the specs.</source>
+ <translation>Odpoveď 200 OK na požiadavku REGISTER musí obsahovať hlavičku Contact. Niektorí poskytovatelia buď hlavičku Contact neposielajú alebo ju posielajú chybnú. Táto voľba povolí toto odchýlenie od špecifikácie.</translation>
+ </message>
+ <message>
+ <source>&amp;Max-Forwards header is mandatory</source>
+ <translation>Hlavička &amp;Max-Forwards je povinná</translation>
+ </message>
+ <message>
+ <source>Alt+M</source>
+ <translation>Alt+M</translation>
+ </message>
+ <message>
+ <source>According to RFC 3261 the Max-Forwards header is mandatory. But many implementations do not send this header. If you tick this box, Twinkle will reject a SIP request if Max-Forwards is missing.</source>
+ <translation>Podľa RFC3261 je hlavička Max-Forwards povinná. Často však nie je posielaná. Ak je táto voľba aktivovaná, Twinkle odmietne požiadavky SIP, ktoré hlavičku Max-Forwards neobsahujú.</translation>
+ </message>
+ <message>
+ <source>Put &amp;registration expiry time in contact header</source>
+ <translation>Vložiť do kontaktnej hlavičky dobu platnosti &amp;registrácie</translation>
+ </message>
+ <message>
+ <source>Alt+R</source>
+ <translation>Alt+R</translation>
+ </message>
+ <message>
+ <source>In a REGISTER message the expiry time for registration can be put in the Contact header or in the Expires header. If you tick this box it will be put in the Contact header, otherwise it goes in the Expires header.</source>
+ <translation>Doba vypršania platnosti prihlásenia v požiadavke REGISTER môže byť prenášaná tak v hlavičke Contact ako aj v hlavičke Expires. Ak je táto voľba zapnutá, posiela ju Twinkle v hlavičke Contact, inak v hlavičke Expires.</translation>
+ </message>
+ <message>
+ <source>&amp;Use compact header names</source>
+ <translation>Použiť &amp;kompaktné názvy hlavičiek</translation>
+ </message>
+ <message>
+ <source>Indicates if compact header names should be used for headers that have a compact form.</source>
+ <translation>Indikuje, či má byť pre názvy hlavičiek použitá krátka forma, ak existuje.</translation>
+ </message>
+ <message>
+ <source>Allow SDP change during call setup</source>
+ <translation>Povoliť zmeny v SDP pri zostavovaní hovoru</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;A SIP UAS may send SDP in a 1XX response for early media, e.g. ringing tone. When the call is answered the SIP UAS should send the same SDP in the 200 OK response according to RFC 3261. Once SDP has been received, SDP in subsequent responses should be discarded.&lt;/p&gt;
+&lt;p&gt;By allowing SDP to change during call setup, Twinkle will not discard SDP in subsequent responses and modify the media stream if the SDP is changed. When the SDP in a response is changed, it must have a new version number in the o= line.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;SIP UAS môže odosielať SDP v 1XX odpovedi na zvuk na začiatku hovoru, napr. tón vyzváňania. Ak bude hovor prijatý, mal by SIP UAS podľa RFC 3261 poslať to isté SDP v odpovedi 200 OK. Po prijatí SDP by mali byť všetky nasledujúce odpovede SDP zahodené.&lt;/p&gt;
+&lt;p&gt;Povolením toho, že sa môže SDP počas zostavovania hovoru zmeniť, nebude v nasledujúcich odpovediach ignorovať SDP, ale zmení požadovaným spôsobom vlastnosti prúdu RTP. Zmenené SDP musí mat v riadku &quot;o=&quot; nové číslo verzie.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Twinkle creates a unique contact header value by combining the SIP user name and domain:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;tt&gt;&amp;nbsp;user_domain@local_ip&lt;/tt&gt;
+&lt;/p&gt;
+&lt;p&gt;
+This way 2 user profiles, having the same user name but different domain names, have unique contact addresses and hence can be activated simultaneously.
+&lt;/p&gt;
+&lt;p&gt;
+Some proxies do not handle a contact header value like this. You can disable this option to get a contact header value like this:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;tt&gt;&amp;nbsp;user@local_ip&lt;/tt&gt;
+&lt;/p&gt;
+&lt;p&gt;
+This format is what most SIP phones use.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Ak je táto voľba zapnutá, Twinkle vytvorí jednoznačnú hodnotu kontaktnej hlavičky kombináciou SIP mena používateľa a doménového mena:
+&lt;br&gt;
+&lt;tt&gt;&amp;nbsp;pouzivatel_domena@lokalna_ip&lt;/tt&gt;
+&lt;/p&gt;
+&lt;p&gt;
+To umožňuje vytvorenie viacerých používateľských profilov s rovnakým menom používateľa, ale rozdielnou doménou, ktoré potom majú odlišné kontaktné adresy a preto sa dajú tieto profily používať súčasne.
+&lt;/p&gt;
+&lt;p&gt;
+Niektoré proxy nemusia s takýmito kontaktnými hlavičkami vedieť pracovať. Ak je táto voľba deaktivovaná, Twinkle zasiela kontaktnú hlavičku v nasledovnom formáte:
+&lt;br&gt;
+&lt;tt&gt;&amp;nbsp;pouzivatel@lokalna_ip&lt;/tt&gt;
+&lt;/p&gt;
+&lt;p&gt;
+Tento formát je používaný na väčšine SIP telefónov.
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&amp;Encode Via, Route, Record-Route as list</source>
+ <translation>Via, Route a Record-Route poslať ako &amp;zoznam</translation>
+ </message>
+ <message>
+ <source>The Via, Route and Record-Route headers can be encoded as a list of comma separated values or as multiple occurrences of the same header.</source>
+ <translation>Via-, Route- a Record-Route-Header môžu byť posielané zakódované ako zoznam čiarkou oddelených hodnôt alebo ako jednotlivé hodnoty, každá vo svojej hlavičke.</translation>
+ </message>
+ <message>
+ <source>SIP extensions</source>
+ <translation>Rozšírenia SIP</translation>
+ </message>
+ <message>
+ <source>&amp;100 rel (PRACK):</source>
+ <translation>&amp;100 rel (PRACK):</translation>
+ </message>
+ <message>
+ <source>disabled</source>
+ <translation>deaktivované</translation>
+ </message>
+ <message>
+ <source>supported</source>
+ <translation>podporované</translation>
+ </message>
+ <message>
+ <source>required</source>
+ <translation>vyžadované</translation>
+ </message>
+ <message>
+ <source>preferred</source>
+ <translation>uprednostňované</translation>
+ </message>
+ <message>
+ <source>Indicates if the 100rel extension (PRACK) is supported:&lt;br&gt;&lt;br&gt;
+&lt;b&gt;disabled&lt;/b&gt;: 100rel extension is disabled
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;supported&lt;/b&gt;: 100rel is supported (it is added in the supported header of an outgoing INVITE). A far-end can now require a PRACK on a 1xx response.
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;required&lt;/b&gt;: 100rel is required (it is put in the require header of an outgoing INVITE). If an incoming INVITE indicates that it supports 100rel, then Twinkle will require a PRACK when sending a 1xx response. A call will fail when the far-end does not support 100rel.
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;preferred&lt;/b&gt;: Similar to required, but if a call fails because the far-end indicates it does not support 100rel (420 response) then the call will be re-attempted without the 100rel requirement.</source>
+ <translation>Definuje spôsob podpory rozšírenia 100rel(PRACK):&lt;br&gt;&lt;br&gt;
+&lt;b&gt;deaktivované&lt;/b&gt;: rozšírenie 100rel nie je podporované
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;povolené&lt;/b&gt;: 100rel je podporované (je pridané do odchádzajúceho INVITE ako podporovaná hlavička). Protistrana si potom môže vyžiadať PRACK na 1xx odpoveď.
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;vyžadované&lt;/b&gt;: 100rel je vyžadované. Požiadavka je vložená do hlavičky require v odchádzajúcom INVITE. Ak je v prichádzajúcom INVITE označené, že je 100rel podporované, potom Twinkle bude vyžadovať PRACK v odpovedi 1xx. Ak protistrana 100rel nepodporuje, nedôjde k nadviazaniu spojenia.
+&lt;br&gt;&lt;br&gt;
+&lt;b&gt;uprednostňované&lt;/b&gt;: Podobné ako &quot;vyžadované&quot;, ale v prípade, že hovor zlyhá kvôli tomu, že protistrana nepodporuje 100rel (odpoveď 420), Twinkle sa pokúsi hovor znovu nadviazať bez vyžadovania 100rel.</translation>
+ </message>
+ <message>
+ <source>REFER</source>
+ <translation>REFER</translation>
+ </message>
+ <message>
+ <source>Call transfer (REFER)</source>
+ <translation>Presmerovanie volania (REFER)</translation>
+ </message>
+ <message>
+ <source>Alt+T</source>
+ <translation>Alt+T</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should transfer a call if a REFER request is received.</source>
+ <translation>Indikuje, či má Twinkle pri obdržaní požiadavky protistrany (REFER) presmerovať hovor na inú adresu.</translation>
+ </message>
+ <message>
+ <source>As&amp;k user permission to transfer</source>
+ <translation>Vypýtať si povolenie od používateľa pred &amp;presmerovaním</translation>
+ </message>
+ <message>
+ <source>Alt+K</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should ask the user before transferring a call when a REFER request is received.</source>
+ <translation>Indikuje, či sa má Twinkle spýtať používateľa na povolenie pri prichádzajúcej požiadavke na presmerovanie (REFER).</translation>
+ </message>
+ <message>
+ <source>Hold call &amp;with referrer while setting up call to transfer target</source>
+ <translation>Podržať ho&amp;vor, kým sa zostavuje hovor s cieľom prepojenia</translation>
+ </message>
+ <message>
+ <source>Alt+W</source>
+ <translation>Alt+V</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should put the current call on hold when a REFER request to transfer a call is received.</source>
+ <translation>Indikuje, či Twinkle pri prichádzajúcej požiadavke na presmerovanie (REFER) podrží aktuálny hovor.</translation>
+ </message>
+ <message>
+ <source>Ho&amp;ld call with referee before sending REFER</source>
+ <translation>Podržať hovor pred odos&amp;laním REFER</translation>
+ </message>
+ <message>
+ <source>Alt+L</source>
+ <translation>Alt+L</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should put the current call on hold when you transfer a call.</source>
+ <translation>Indikuje, či má Twinkle podržať hovor pri jeho presmerovaní.</translation>
+ </message>
+ <message>
+ <source>Auto re&amp;fresh subscription to refer event while call transfer is not finished</source>
+ <translation>Automaticky obnovovať registráciu &amp;pre REFER signál, kým nie je presmerovanie dokončené</translation>
+ </message>
+ <message>
+ <source>Alt+F</source>
+ <translation>Alt+P</translation>
+ </message>
+ <message>
+ <source>While a call is being transferred, the referee sends NOTIFY messages to the referrer about the progress of the transfer. These messages are only sent for a short interval which length is determined by the referee. If you tick this box, the referrer will automatically send a SUBSCRIBE to lengthen this interval if it is about to expire and the transfer has not yet been completed.</source>
+ <translation>Počas presmerovania hovoru posiela sprostredkovateľ presmerovania správ NOTIFY o postupe presmerovania tomu, koho hovor je presmerovávaný. Avšak iba na krátky čas. Tento čas určuje ten, kto je presmerovávaný. Ak je aktivovaná táto voľba, posiela sprostredkovateľ (Twinkle) automaticky SUBSCRIBE tak, aby sa tento čas predĺžil až do momentu, kedy je proces presmerovania ukončený.</translation>
+ </message>
+ <message>
+ <source>NAT traversal</source>
+ <translation>Prekonanie NATu (traversal)</translation>
+ </message>
+ <message>
+ <source>&amp;NAT traversal not needed</source>
+ <translation>Prekonanie &amp;NATu (traversal) nie je potrebné</translation>
+ </message>
+ <message>
+ <source>Alt+N</source>
+ <translation>Alt+N</translation>
+ </message>
+ <message>
+ <source>Choose this option when there is no NAT device between you and your SIP proxy or when your SIP provider offers hosted NAT traversal.</source>
+ <translation>Vyberte túto voľbu, ak sa medzi Twinkle a vašou SIP proxy nenachádza žiaden NAT alebo pokiaľ váš poskytovateľ dokáže sám NAT prekonať.</translation>
+ </message>
+ <message>
+ <source>&amp;Use statically configured public IP address inside SIP messages</source>
+ <translation>V správach SIP po&amp;užiť statickú verejnú IP adresu</translation>
+ </message>
+ <message>
+ <source>Indicates if Twinkle should use the public IP address specified in the next field inside SIP message, i.e. in SIP headers and SDP body instead of the IP address of your network interface.&lt;br&gt;&lt;br&gt;
+When you choose this option you have to create static address mappings in your NAT device as well. You have to map the RTP ports on the public IP address to the same ports on the private IP address of your PC.</source>
+ <translation>Indikuje, či má Twinkle použiť vo vnútri správ SIP (v hlavičke SIP a tele SDP) verejnú IP adresu, miesto IP adresy vášho sieťového rozhrania.&lt;br&gt;&lt;br&gt;
+Ak si vyberiete túto voľbu, musíte tiež na vašom zariadení NAT nasmerovať zodpovedajúce RTP porty na váš počítač.</translation>
+ </message>
+ <message>
+ <source>Choose this option when your SIP provider offers a STUN server for NAT traversal.</source>
+ <translation>Vyberte túto voľbu, ak váš poskytovateľ SIP ponúka STUN server na premostenie vášho NATu.</translation>
+ </message>
+ <message>
+ <source>S&amp;TUN server:</source>
+ <translation type="vanished">Adresa S&amp;TUN servera:</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of the STUN server.</source>
+ <translation>Doménové meno, IP adresa alebo meno STUN servera.</translation>
+ </message>
+ <message>
+ <source>&amp;Public IP address:</source>
+ <translation>Verejná IP &amp;adresa:</translation>
+ </message>
+ <message>
+ <source>The public IP address of your NAT.</source>
+ <translation>Verejná adresa vášho NATu.</translation>
+ </message>
+ <message>
+ <source>Telephone numbers</source>
+ <translation>Telefónne čísla</translation>
+ </message>
+ <message>
+ <source>Only &amp;display user part of URI for telephone number</source>
+ <translation>Pri telefónnych číslach zobraziť iba používateľskú časť &amp;URI</translation>
+ </message>
+ <message>
+ <source>If a URI indicates a telephone number, then only display the user part. E.g. if a call comes in from sip:123456@twinklephone.com then display only &quot;123456&quot; to the user. A URI indicates a telephone number if it contains the &quot;user=phone&quot; parameter or when it has a numerical user part and you ticked the next option.</source>
+ <translation>Ak URI označuje telefónne číslo, bude zobrazená iba používateľská časť adresy. Napr. ak príde volanie od sip:12345@voipposkytovatel.com, Twinkle zobrazí ako adresu len &quot;12345&quot;. URI je považované za telefónne číslo, ak obsahuje parameter &quot;user=phone&quot; alebo ak je aktívna nasledujúca voľba a používateľská časť adresy je numerická.</translation>
+ </message>
+ <message>
+ <source>&amp;URI with numerical user part is a telephone number</source>
+ <translation>&amp;URI s numerickou používateľskou časťou je telefónne číslo</translation>
+ </message>
+ <message>
+ <source>If you tick this option, then Twinkle considers a SIP address that has a user part that consists of digits, *, #, + and special symbols only as a telephone number. In an outgoing message, Twinkle will add the &quot;user=phone&quot; parameter to such a URI.</source>
+ <translation>Ak povolíte túto voľbu, Twinkle bude považovať každú SIP adresu za telefónne číslo, ak má v používateľskej časti iba číslice, *, #, + a špeciálne znaky. V odchádzajúcich SIP správach označí Twinkle takéto adresy parametrom &quot;user=phone&quot;.</translation>
+ </message>
+ <message>
+ <source>&amp;Remove special symbols from numerical dial strings</source>
+ <translation>&amp;Odstrániť z telefónneho čísla špeciálne znaky</translation>
+ </message>
+ <message>
+ <source>Telephone numbers are often written with special symbols like dashes and brackets to make them readable to humans. When you dial such a number the special symbols must not be dialed. To allow you to simply copy/paste such a number into Twinkle, Twinkle can remove these symbols when you hit the dial button.</source>
+ <translation>Aby boli telefónne čísla ľahšie čitateľné, často sa píšu s použitím špeciálnych znakov ako napr. &quot;(&quot;, &quot;)&quot;, &quot; &quot; (prázdny znak), &quot;-&quot;. Pri vytáčaní nesmú byť tieto znaky vysielané. Ab bolo možné zjednodušiť vytáčanie pomocou copy/paste, Twinkle môže tieto znaky automaticky odstrániť.</translation>
+ </message>
+ <message>
+ <source>&amp;Special symbols:</source>
+ <translation>Špeciálne &amp;znaky:</translation>
+ </message>
+ <message>
+ <source>The special symbols that may be part of a telephone number for nice formatting, but must be removed when dialing.</source>
+ <translation>Zoznam všetkých špeciálnych znakov, ktoré má Twinkle z vytáčaných čísiel odstrániť.</translation>
+ </message>
+ <message>
+ <source>Number conversion</source>
+ <translation>Prevod čísiel</translation>
+ </message>
+ <message>
+ <source>Match expression</source>
+ <translation>Vyhľadávaný výraz</translation>
+ </message>
+ <message>
+ <source>Replace</source>
+ <translation>Nahradiť</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation type="vanished">&lt;p&gt;
+Často sa formát telefónnych čísiel, ktoré očakáva poskytovateľ VoIP nezhoduje s formátom čísiel uložených v adresári. Napr. pri číslach začínajúcich na &quot;+&quot; a národným kódom krajiny očakáva váš poskytovateľ miesto &quot;00&quot; znak &quot;+&quot;. Alebo ste pripojený na miestnu sieť SIP a je potrebné najprv zadať predvoľbu pre volania smerom von.
+Tu je možné pomocou vyhľadávacích a nahradzovaných vzorov (podľa štýlu regulárnych výrazov so syntaxom jazyku Perl) nastaviť všeobecne platné pravidlá pre konverziu telefónnych čísiel.
+&lt;/p&gt;
+&lt;p&gt;
+Pri každom vytáčaní sa Twinkle pokúsi nájsť pre čísla z používateľskej časti adresy SIP zodpovedajúci výraz v zozname hľadaných vzorov. S prvým nájdeným vyhovujúcim výrazom je vykonaná úprava pôvodného čísla, pričom pozícia v &quot;(&quot; &quot;)&quot; v hľadanom výraze (napr. &quot;([0-9]*)&quot; pre &quot;ľubovoľný počet čísiel&quot;) je nahradená znakmi v zodpovedajúcich premenných. Napr. &quot;$1&quot; pre prvú pozíciu. Viď tiež `man 7 regex` alebo konqueror:&quot;#regex&quot;. Ak nie je nájdený žiaden zodpovedajúci hľadaný vzor, zostane číslo nezmenené.
+&lt;/p&gt;
+&lt;p&gt;
+Pravidlá budú tiež použité na čísla v prichádzajúcich hovoroch. Podľa nastavených pravidiel budú pretransformované do želaného formátu.
+&lt;/p&gt;
+&lt;h3&gt;1. príklad&lt;/h3&gt;
+&lt;p&gt;
+Napr. váš národní kód je &quot;421&quot; pre Slovenskú republiku a vo vašom adresári máte tiež veľa vnútroštátnych čísiel uložených v medzinárodnom formáte. Napr.. +421 2 123 456. Avšak poskytovateľ VoIP očakáva pre vnútroštátny hovor číslo 02 123456. Chcete teda nahradiť &apos;+421&apos; číslom &apos;0&apos; a zároveň pre zahraničné hovory nahradiť &apos;+&apos; predvoľbou &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+Na to sú potrebné nasledujúce pravidlá uvedené v tejto postupnosti:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hľadaný výraz = \+421([0-9]*) , Náhrada = 0$1&lt;br&gt;
+Hľadaný výraz = \+([0-9]*) , Náhrada = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;2. príklad&lt;/h3&gt;
+&lt;p&gt;
+Nachádzate sa na telefónnej ústredni a všetkým číslam začínajúcim nulou má byť predradené číslo 9.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hľadaný výraz = 0[0-9]* , Náhrada = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+( $&amp; je špeciálna premenná, v ktorej je uložené celé pôvodné číslo)&lt;br&gt;
+Poznámka: Toto pravidlo nie je možné nastaviť jednoducho ako tretie pravidlo k dvom pravidlám z príkladu č. 1. Bude totiž použité vždy len prvé pravidlo, ktoré vyhľadávaniu vyhovie. Miesto toho by muselo byť zmenené nahrádzanie v pravidlách 1 a 2</translation>
+ </message>
+ <message>
+ <source>Move the selected number conversion rule upwards in the list.</source>
+ <translation>Posunúť vybrané pravidlo konverzie na vyššiu pozíciu.</translation>
+ </message>
+ <message>
+ <source>Move the selected number conversion rule downwards in the list.</source>
+ <translation>Posunúť vybrané pravidlo konverzie na nižšiu pozíciu.</translation>
+ </message>
+ <message>
+ <source>&amp;Add</source>
+ <translation>&amp;Pridať</translation>
+ </message>
+ <message>
+ <source>Add a number conversion rule.</source>
+ <translation>Pridať nové konverzné pravidlo.</translation>
+ </message>
+ <message>
+ <source>Re&amp;move</source>
+ <translation>&amp;Odstrániť</translation>
+ </message>
+ <message>
+ <source>Remove the selected number conversion rule.</source>
+ <translation>Odstrániť vybrané konverzné pravidlo.</translation>
+ </message>
+ <message>
+ <source>&amp;Edit</source>
+ <translation>U&amp;praviť</translation>
+ </message>
+ <message>
+ <source>Edit the selected number conversion rule.</source>
+ <translation>Upraviť vybrané konverzné pravidlo.</translation>
+ </message>
+ <message>
+ <source>Type a telephone number here an press the Test button to see how it is converted by the list of number conversion rules.</source>
+ <translation>Pre overenie funkčnosti vytvoreného konverzného pravidla sem napíšte skúšobné telefónne číslo a kliknite na Test.</translation>
+ </message>
+ <message>
+ <source>&amp;Test</source>
+ <translation>&amp;Test</translation>
+ </message>
+ <message>
+ <source>Test how a number is converted by the number conversion rules.</source>
+ <translation>Otestovať, ako bude číslo prevedené konverznými pravidlami.</translation>
+ </message>
+ <message>
+ <source>When an incoming call is received, this timer is started. If the user answers the call, the timer is stopped. If the timer expires before the user answers the call, then Twinkle will reject the call with a &quot;480 User Not Responding&quot;.</source>
+ <translation>Tento časovač sa spustí pri prichádzajúcom hovore. Ak nebude na hovor do vypršania časového limitu odpovedané, Twinkle hovor odmietne so správou &quot;480 User Not Responding&quot;.</translation>
+ </message>
+ <message>
+ <source>NAT &amp;keep alive:</source>
+ <translation>&amp;Keep alive NATu:</translation>
+ </message>
+ <message>
+ <source>&amp;No answer:</source>
+ <translation>&amp;Nedostupný po:</translation>
+ </message>
+ <message>
+ <source>Ring &amp;back tone:</source>
+ <translation>&amp;Tón vyzváňania na strane volaného:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Specify the file name of a .wav file that you want to be played as ring back tone for this user.
+&lt;/p&gt;
+&lt;p&gt;
+This ring back tone overrides the ring back tone settings in the system settings.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Zadajte meno súboru .wav pre indikáciu zvonenia na strane tohto používateľa.&lt;/p&gt;
+
+&lt;p&gt;Tento tón nahradí tón vyzváňania nastavený v systéme.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Specify the file name of a .wav file that you want to be played as ring tone for this user.
+&lt;/p&gt;
+&lt;p&gt;
+This ring tone overrides the ring tone settings in the system settings.
+&lt;/p&gt;</source>
+ <translation>&lt;p&gt;Zadajte meno súboru .wav pre tón vyzváňania v tomto profile používateľa.&lt;/p&gt;
+
+&lt;p&gt;Toto nastavenie nahradí tón vyzváňania tón nastavený v systéme.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&amp;Ring tone:</source>
+ <translation>&amp;Tón vyzváňania:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when you release a call.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the outgoing SIP BYE request are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=local_release&lt;/b&gt;. &lt;b&gt;SIPREQUEST_METHOD=BYE&lt;/b&gt;. &lt;b&gt;SIPREQUEST_URI&lt;/b&gt; contains the request-URI of the BYE. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak je nejaký hovor ukončený z vašej strany.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odosielaných SIP BYE požiadaviek budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=local_release&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_METHOD=BYE&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_URI&lt;/b&gt; obsahuje request-URI metódy BYE.
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when an incoming call fails.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the outgoing SIP failure response are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=in_call_failed&lt;/b&gt;. &lt;b&gt;SIPSTATUS_CODE&lt;/b&gt; contains the status code of the failure response. &lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; contains the reason phrase. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak nebude prichádzajúci hovor prijatý. Tzn. ukončí sa vyzváňanie bez toho aby bolo &quot;zdvihnuté&quot;.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odosielaných SIP failure požiadaviek budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=in_call_failed&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_CODE&lt;/b&gt; obsahuje stavový kód odosielanej SIP failure odpovede.
+&lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; obsahuje &quot;reason phrase&quot;, tedy príčinu chyby.
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when the remote party releases a call.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the incoming SIP BYE request are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=remote_release&lt;/b&gt;. &lt;b&gt;SIPREQUEST_METHOD=BYE&lt;/b&gt;. &lt;b&gt;SIPREQUEST_URI&lt;/b&gt; contains the request-URI of the BYE. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak je hovor ukončený protistranou.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odosielaných SIP BYE požiadaviek budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=remote_release&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_METHOD=BYE&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_URI&lt;/b&gt; obsahuje request-URI signálu BYE.
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when the remote party answers your call.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the incoming 200 OK are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call_answered&lt;/b&gt;. &lt;b&gt;SIPSTATUS_CODE=200&lt;/b&gt;. &lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; contains the reason phrase. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak bude hovor prijatý protistranou.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek prichádzajúcich hlásení &quot;200 OK&quot; budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:&lt;/p&gt;
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call_answered&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_CODE=200&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; obsahuje &quot;reason phrase&quot;
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when you answer an incoming call.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the outgoing 200 OK are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=in_call_answered&lt;/b&gt;. &lt;b&gt;SIPSTATUS_CODE=200&lt;/b&gt;. &lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; contains the reason phrase. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak bude prichádzajúci hovor prijatý.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odchádzajúcich hlásení &quot;200 OK&quot; budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:&lt;/p&gt;
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=in_call_answered&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_CODE=200&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; obsahuje &quot;reason phrase&quot;
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>Call released locall&amp;y:</source>
+ <translation>Lokálne &amp;ukončenie hovoru:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when an outgoing call fails.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the incoming SIP failure response are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call_failed&lt;/b&gt;. &lt;b&gt;SIPSTATUS_CODE&lt;/b&gt; contains the status code of the failure response. &lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; contains the reason phrase. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí, ak nie je možné realizovať odchádzajúce volanie, napr. kvôli timeoutu, DND atď.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odosielaných SIP failure požiadaviek budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call_failed&lt;/b&gt;.
+&lt;b&gt;SIPSTATUS_CODE&lt;/b&gt; obsahuje stavový kód odoslanej SIP failure odpovede.
+&lt;b&gt;SIPSTATUS_REASON&lt;/b&gt; obsahuje &quot;reason phrase&quot;, tedy chybovou hlásenie vo forme jednoduchého textu.
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+This script is called when you make a call.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers of the outgoing INVITE are passed in environment variables to your script.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call&lt;/b&gt;. &lt;b&gt;SIPREQUEST_METHOD=INVITE&lt;/b&gt;. &lt;b&gt;SIPREQUEST_URI&lt;/b&gt; contains the request-URI of the INVITE. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tento skript sa spustí pri zahájení hovoru z vašej strany.
+&lt;/p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Obsahy všetkých SIP hlavičiek odosielaných SIP INVITE požiadaviek budú odovzdané tomuto skriptu prostredníctvom nasledujúcich systémových premenných:
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;TWINKLE_TRIGGER=out_call&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_METHOD=INVITE&lt;/b&gt;.
+&lt;b&gt;SIPREQUEST_URI&lt;/b&gt; obsahuje request-URI signálu INVITE.
+&lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt; obsahuje meno aktívneho používateľského profilu.</translation>
+ </message>
+ <message>
+ <source>Outgoing call a&amp;nswered:</source>
+ <translation>Hovor &amp;prijatý protistranou:</translation>
+ </message>
+ <message>
+ <source>Incoming call &amp;failed:</source>
+ <translation>Prichádzajúce volanie bolo &amp;neúspešné:</translation>
+ </message>
+ <message>
+ <source>&amp;Incoming call:</source>
+ <translation>&amp;Prichádzajúce volanie:</translation>
+ </message>
+ <message>
+ <source>Call released &amp;remotely:</source>
+ <translation>Ukončenie &amp;hovoru protistranou:</translation>
+ </message>
+ <message>
+ <source>Incoming call &amp;answered:</source>
+ <translation>Prichádzajúce volanie &amp;prijaté:</translation>
+ </message>
+ <message>
+ <source>O&amp;utgoing call:</source>
+ <translation>Odchádzajúce &amp;volanie:</translation>
+ </message>
+ <message>
+ <source>Out&amp;going call failed:</source>
+ <translation>Od&amp;chádzajúce volanie nebolo úspešné:</translation>
+ </message>
+ <message>
+ <source>&amp;Enable ZRTP/SRTP encryption</source>
+ <translation>Povoliť &amp;šifrovanie ZRTP/SRTP</translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
+ <translation type="vanished">Ak je aktivované, Twinkle sa pokúsi pri všetkých odchádzajúcich a prichádzajúcich hovoroch šifrovať zvukové dáta. Aby bol hovor naozaj zašifrovaný musí aj protistrana podporovať šifrovanie ZRTP/SRTP. Inak ostane hovor nešifrovaný.</translation>
+ </message>
+ <message>
+ <source>ZRTP settings</source>
+ <translation>Nastavenia ZRTP</translation>
+ </message>
+ <message>
+ <source>O&amp;nly encrypt audio if remote party indicated ZRTP support in SDP</source>
+ <translation>Šifro&amp;vať iba ak protistrana potvrdí podporu ZRTP v SDP</translation>
+ </message>
+ <message>
+ <source>A SIP endpoint supporting ZRTP may indicate ZRTP support during call setup in its signalling. Enabling this option will cause Twinkle only to encrypt calls when the remote party indicates ZRTP support.</source>
+ <translation>Protistrana podporujúca ZRTP môže túto informáciu oznámiť už počas zostavovania hovoru. Ak je aktivovaná táto voľba, Twinkle sa v takýchto prípadoch pokúsi použiť šifrovaný prenos hovoru.</translation>
+ </message>
+ <message>
+ <source>&amp;Indicate ZRTP support in SDP</source>
+ <translation>ZRTP podporu ohlasovať &amp;v SDP</translation>
+ </message>
+ <message>
+ <source>Twinkle will indicate ZRTP support during call setup in its signalling.</source>
+ <translation>Ak je táto voľba zapnutá, Twinkle pri zostavovaní hovoru ohlási protistrane pomocí SDP, že podporuje ZRTP.</translation>
+ </message>
+ <message>
+ <source>&amp;Popup warning when remote party disables encryption during call</source>
+ <translation>&amp;Upozorniť, ak protistrana prepne na nešifrovaný prenos hovoru</translation>
+ </message>
+ <message>
+ <source>A remote party of an encrypted call may send a ZRTP go-clear command to stop encryption. When Twinkle receives this command it will popup a warning if this option is enabled.</source>
+ <translation>Protistrana môže počas šifrovaného hovoru vyslať príkaz ZRTP-go-clear a tým šifrovanie vypnúť. Ak je táto voľba aktívna, Twinkle na tento bezpečnostný problém okamžite upozorní.</translation>
+ </message>
+ <message>
+ <source>Dynamic payload type %1 is used more than once.</source>
+ <translation>Dynamický typ payloadu %1 je použitý viac ako raz.</translation>
+ </message>
+ <message>
+ <source>You must fill in a user name for your SIP account.</source>
+ <translation>Je potrebné zadať meno používateľa pre váš SIP účet.</translation>
+ </message>
+ <message>
+ <source>You must fill in a domain name for your SIP account.
+This could be the hostname or IP address of your PC if you want direct PC to PC dialing.</source>
+ <translation>Pre váš SIP účet musíte zadať doménové meno.
+Pre priame volania medzi IP adresami je to doménové meno alebo verejná IP adresa vášho počítača.</translation>
+ </message>
+ <message>
+ <source>Invalid user name.</source>
+ <translation>Neplatné meno používateľa.</translation>
+ </message>
+ <message>
+ <source>Invalid domain.</source>
+ <translation>Neplatná doména.</translation>
+ </message>
+ <message>
+ <source>Invalid value for registrar.</source>
+ <translation>Neplatné meno registrátora.</translation>
+ </message>
+ <message>
+ <source>Invalid value for outbound proxy.</source>
+ <translation>Neplatné meno odchádzajúcej proxy.</translation>
+ </message>
+ <message>
+ <source>Value for public IP address missing.</source>
+ <translation>Chýba verejná IP adresa.</translation>
+ </message>
+ <message>
+ <source>Invalid value for STUN server.</source>
+ <translation>Neplatná hodnota pre STUN server.</translation>
+ </message>
+ <message>
+ <source>Ring tones</source>
+ <comment>Description of .wav files in file dialog</comment>
+ <translation>Tóny vyzváňania</translation>
+ </message>
+ <message>
+ <source>Choose ring tone</source>
+ <translation>Vyberte tón vyzváňania</translation>
+ </message>
+ <message>
+ <source>Ring back tones</source>
+ <comment>Description of .wav files in file dialog</comment>
+ <translation>Tón pre signalizáciu vyzváňania na strane volaného</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>Všetky súbory</translation>
+ </message>
+ <message>
+ <source>Choose incoming call script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri prichádzajúcom hovore</translation>
+ </message>
+ <message>
+ <source>Choose incoming call answered script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť po &quot;prijatí prichádzajúceho volania&quot;</translation>
+ </message>
+ <message>
+ <source>Choose incoming call failed script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri chybe počas prichádzajúceho hovoru</translation>
+ </message>
+ <message>
+ <source>Choose outgoing call script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri odchádzajúcom hovore</translation>
+ </message>
+ <message>
+ <source>Choose outgoing call answered script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri prijatí hovoru protistranou</translation>
+ </message>
+ <message>
+ <source>Choose outgoing call failed script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri chybe počas odchádzajúceho hovoru</translation>
+ </message>
+ <message>
+ <source>Choose local release script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri vlastnom ukončení hovoru</translation>
+ </message>
+ <message>
+ <source>Choose remote release script</source>
+ <translation>Vyberte skript, ktorý sa má spustiť pri ukončení hovoru protistranou</translation>
+ </message>
+ <message>
+ <source>Voice mail</source>
+ <translation>Hlasová schránka</translation>
+ </message>
+ <message>
+ <source>&amp;Follow codec preference from far end on incoming calls</source>
+ <translation>Pri prichádzajúcich hovoroch dávať prednosť kodekom &amp;protistrany</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+For incoming calls, follow the preference from the far-end (SDP offer). Pick the first codec from the SDP offer that is also in the list of active codecs.
+&lt;p&gt;
+If you disable this option, then the first codec from the active codecs that is also in the SDP offer is picked.</source>
+ <translation>Ak je táto voľba aktívna, Twinkle uprednostní pri prichádzajúcom hovore kodeky protistrany (SDP offer). Konkrétne bude použitý prvý kodek, ktorý je protistranou ponúkaný a tiež sa nachádza v zozname lokálnych kodekov.
+Ak je voľba vypnutá, použije Twinkle prvý kodek vo vlastnom zozname, ktorý je tiež podporovaný protistranou.</translation>
+ </message>
+ <message>
+ <source>Follow codec &amp;preference from far end on outgoing calls</source>
+ <translation>Pri odchádzajúcich hovoroch dávať prednosť kodekom podľa &amp;preferencií protistrany</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+For outgoing calls, follow the preference from the far-end (SDP answer). Pick the first codec from the SDP answer that is also in the list of active codecs.
+&lt;p&gt;
+If you disable this option, then the first codec from the active codecs that is also in the SDP answer is picked.</source>
+ <translation>Ak je táto voľba aktívna, Twinkle uprednostní pri odchádzajúcom hovore kodeky protistrany (SDP answer). Konkrétne bude použitý prvý kodek, ktorý je protistranou ponúkaný a tiež sa nachádza v zozname lokálnych kodekov.
+Ak je voľba vypnutá, použije Twinkle prvý kodek vo vlastnom zozname, ktorý je tiež podporovaný protistranou, to znamená, že je uvedený v zozname SDP Answer.</translation>
+ </message>
+ <message>
+ <source>Codeword &amp;packing order:</source>
+ <translation>Dátové poradie (codeword &amp;packing order):</translation>
+ </message>
+ <message>
+ <source>RFC 3551</source>
+ <translation>RFC 3551</translation>
+ </message>
+ <message>
+ <source>ATM AAL2</source>
+ <translation>ATM AAL2</translation>
+ </message>
+ <message>
+ <source>There are 2 standards to pack the G.726 codewords into an RTP packet. RFC 3551 is the default packing method. Some SIP devices use ATM AAL2 however. If you experience bad quality using G.726 with RFC 3551 packing, then try ATM AAL2 packing.</source>
+ <translation>Existujú dve metódy balenia dátových paketov G.726 do RTP paketov. Štandardne je to RFC 3351. Niektorí poskytovatelia SIP však používajú ATM AAL2. Ak je prenos zvuku pri použití kodeku G.726 zarušený, môžte vyskúšať balenie ATM AAL2.</translation>
+ </message>
+ <message>
+ <source>Replaces</source>
+ <translation>Rozšírenie Replaces</translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extenstion is supported.</source>
+ <translation type="vanished">Indikuje, či je podporované rozšírenie Replaces.</translation>
+ </message>
+ <message>
+ <source>Attended refer to AoR (Address of Record)</source>
+ <translation>Asistovane prepájať na AoR (Address of Record)</translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
+ <translation type="vanished">Asistované prepojenie by malo používať Contact URI ako cieľovú adresu pre informovanie presmerovávanej strany o novom spojení. Táto adresa nemusí byť však globálne platiť. Ako alternatívu je možné použiť AoR (Address of Record). Nevýhodou je, že pri viacerých koncových zariadeniach nie je AoR jednoznačné, zatiaľčo URI kontaktu vždy ukazuje na jediné zariadenie.</translation>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>Súkromie</translation>
+ </message>
+ <message>
+ <source>Privacy options</source>
+ <translation>Nastavenia ochrany súkromia</translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Preferred-Identity header when hiding user identity</source>
+ <translation>&amp;Posielať hlavičku P-Preferred-Identity pri skrývaní identity používateľa</translation>
+ </message>
+ <message>
+ <source>Include a P-Preferred-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation>Ak je vybrané a zároveň je aktívna voľba &quot;skryť odosielateľa&quot;, bude spolu s údajom odosielateľa odoslaná pri požiadavke INVITE hlavička P-Preferred-Identity.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+You can customize the way Twinkle handles incoming calls. Twinkle can call a script when a call comes in. Based on the output of the script Twinkle accepts, rejects or redirects the call. When accepting the call, the ring tone can be customized by the script as well. The script can be any executable program.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;Note:&lt;/b&gt; Twinkle pauses while your script runs. It is recommended that your script does not take more than 200 ms. When you need more time, you can send the parameters followed by &lt;b&gt;end&lt;/b&gt; and keep on running. Twinkle will continue when it receives the &lt;b&gt;end&lt;/b&gt; parameter.
+&lt;/p&gt;
+&lt;p&gt;
+With your script you can customize call handling by outputting one or more of the following parameters to stdout. Each parameter should be on a separate line.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+action=[ continue | reject | dnd | redirect | autoanswer ]&lt;br&gt;
+reason=&amp;lt;string&amp;gt;&lt;br&gt;
+contact=&amp;lt;address to redirect to&amp;gt;&lt;br&gt;
+caller_name=&amp;lt;name of caller to display&amp;gt;&lt;br&gt;
+ringtone=&amp;lt;file name of .wav file&amp;gt;&lt;br&gt;
+display_msg=&amp;lt;message to show on display&amp;gt;&lt;br&gt;
+end&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;/p&gt;
+&lt;h2&gt;Parameters&lt;/h2&gt;
+&lt;h3&gt;action&lt;/h3&gt;
+&lt;p&gt;
+&lt;b&gt;continue&lt;/b&gt; - continue call handling as usual&lt;br&gt;
+&lt;b&gt;reject&lt;/b&gt; - reject call&lt;br&gt;
+&lt;b&gt;dnd&lt;/b&gt; - deny call with do not disturb indication&lt;br&gt;
+&lt;b&gt;redirect&lt;/b&gt; - redirect call to address specified by &lt;b&gt;contact&lt;/b&gt;&lt;br&gt;
+&lt;b&gt;autoanswer&lt;/b&gt; - automatically answer a call&lt;br&gt;
+&lt;/p&gt;
+&lt;p&gt;
+When the script does not write an action to stdout, then the default action is continue.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;reason: &lt;/b&gt;
+With the reason parameter you can set the reason string for reject or dnd. This might be shown to the far-end user.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;caller_name: &lt;/b&gt;
+This parameter will override the display name of the caller.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;b&gt;ringtone: &lt;/b&gt;
+The ringtone parameter specifies the .wav file that will be played as ring tone when action is continue.
+&lt;/p&gt;
+&lt;h2&gt;Environment variables&lt;/h2&gt;
+&lt;p&gt;
+The values of all SIP headers in the incoming INVITE message are passed in environment variables to your script. The variable names are formatted as &lt;b&gt;SIP_&amp;lt;HEADER_NAME&amp;gt;&lt;/b&gt; E.g. SIP_FROM contains the value of the from header.
+&lt;/p&gt;
+&lt;p&gt;
+TWINKLE_TRIGGER=in_call. SIPREQUEST_METHOD=INVITE. The request-URI of the INVITE will be passed in &lt;b&gt;SIPREQUEST_URI&lt;/b&gt;. The name of the user profile will be passed in &lt;b&gt;TWINKLE_USER_PROFILE&lt;/b&gt;.</source>
+ <translation>&lt;p&gt;
+Tu môžete upraviť ako Twinkle obslúži prichádzajúce hovory. Twinkle môže pri prichádzajúcich hovoroch spustiť skript. V závislosti od výstupu skriptu Twinkle prijme, odmietne alebo presmeruje hovor. Skript môže ovplyvniť aj tón vyzváňania. Môže se jednať o ľubovoľný spustiteľný program.
+&lt;/p&gt;
+&lt;p&gt;&lt;b&gt;Poznámka:&lt;/b&gt; Twinkle prestane po dobu spustenia skriptu pracovať. Odporúčame, aby skript nebežal dlhšie ako 200 ms. Ak potrebujete viac času, môžete po odoslaní parametrov poslať &lt;b&gt;end&lt;/b&gt; a pokračovať v spúšťaní. Twinkle bude sám po prijatí parametra &lt;b&gt;end&lt;/b&gt; pokračovať.
+&lt;h3&gt;Vrátené hodnoty&lt;/h3&gt; - print po STDOUT (napr. `echo &quot;action=dnd&quot;`), jedna hodnota na riadok: &lt;br&gt;
+&lt;tt&gt;action=[ continue | reject | dnd | redirect | autoanswer ]&lt;br&gt;&lt;/tt&gt;
+&lt;blockquote&gt;
+&lt;i&gt;continue&lt;/i&gt; - pokračovať v normálnom spracovaní hovoru (predvolené)&lt;br&gt;
+&lt;i&gt;reject&lt;/i&gt; - odmietnuť hovor&lt;br&gt;
+&lt;i&gt;dnd&lt;/i&gt; - odmietnuť hovor s poznámkou &quot;nerušiť&quot;&lt;br&gt;
+&lt;i&gt;redirect&lt;/i&gt; - presmerovať hovor na &lt;tt&gt;contact&lt;/tt&gt;&lt;br&gt;
+&lt;i&gt;autoanswer&lt;/i&gt; - hovor automaticky prijať&lt;br&gt;
+&lt;/blockquote&gt;
+&lt;br&gt;
+&lt;tt&gt;reason=&amp;lt;string&amp;gt; &lt;/tt&gt;pre dnd a reject (zobrazenie na strane volaného/volajúceho)&lt;br&gt;
+&lt;tt&gt;contact=&amp;lt;presmerovacia adresa&amp;gt; &lt;/tt&gt;pre presmerovanie&lt;br&gt;
+&lt;tt&gt;caller_name=&amp;lt;nové zobrazované meno volajúceho&amp;gt; &lt;/tt&gt;nahradí meno volajúceho&lt;br&gt;
+&lt;tt&gt;ringtone=&amp;lt;meno .wav súboru&amp;gt; &lt;/tt&gt;tón vyzváňania zvlášť pre tento hovor (iba pri &lt;i&gt;continue&lt;/i&gt; ;-)&lt;br&gt;
+&lt;tt&gt;display_msg=&amp;lt;ľubovoľná poznámka pre zobrazenie detailov v hlavnom okne&amp;gt;&lt;/tt&gt;&lt;br&gt;
+&lt;tt&gt;end &lt;/tt&gt;Twinkle vyhodnotí všetky vrátené hodnoty, uzatvorí STDOUT skriptu(!) a pokračuje ďalej&lt;br&gt;
+&lt;/tt&gt;
+&lt;/p&gt;
+&lt;p&gt;
+&lt;h3&gt;Systémové premenné&lt;/h3&gt;
+&lt;p&gt;
+Hodnoty všetkých SIP hlavičiek prichádzajúceho INVITE budu odovzdané tomuto skriptu. Štruktúra premenných: &lt;b&gt;SIP_&amp;lt;HEADER_NAME&amp;gt;&lt;/b&gt; - napr. SIP_FROM obsahuje hodnotu &quot;from header&quot;.
+&lt;/p&gt;
+&lt;p&gt;
+TWINKLE_TRIGGER=in_call. &lt;br&gt;
+SIPREQUEST_METHOD=INVITE. &lt;br&gt;
+SIPREQUEST_URI obsahuje request-URI signálu INVITE.&lt;br&gt;
+TWINKLE_USER_PROFILE obsahuje meno používateľského profilu, pre ktorý je prichádzajúce volanie určené.</translation>
+ </message>
+ <message>
+ <source>&amp;Voice mail address:</source>
+ <translation>&amp;Adresa hlasovej schránky:</translation>
+ </message>
+ <message>
+ <source>The SIP address or telephone number to access your voice mail.</source>
+ <translation>SIP adresa alebo telefónne číslo pre prístup k vašej hlasovej schránke.</translation>
+ </message>
+ <message>
+ <source>Unsollicited</source>
+ <translation type="vanished">Nevyžiadané</translation>
+ </message>
+ <message>
+ <source>Sollicited</source>
+ <translation type="vanished">Vyžiadané</translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsollicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsollicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Sollicited&lt;/H3&gt;
+&lt;p&gt;
+Sollicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation type="vanished">&lt;H2&gt;Typ indikácie čakajúcich správ&lt;/H2&gt;
+&lt;p&gt;
+Ak váš poskytovateľ SIP ponúka upozornenie na uložené správy v hlasovej schránke, môže vás Twinkle informovať o nových aj už vypočutých správach vo vašej hlasovej schránke. Spýtajte sa vášho poskytovateľa, aký typ indikácie čakajúcich správ je používaný
+
+&lt;/p&gt;
+&lt;H3&gt;Nevyžiadané&lt;/H3&gt;
+&lt;p&gt;
+Asterisk podporuje nevyžiadané indikovanie čakajúcich správ.
+&lt;/p&gt;
+&lt;H3&gt;Vyžiadané&lt;/H3&gt;
+&lt;p&gt;
+Vyžiadaná indikácia čakajúcich správ podľa RFC 3842.
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&amp;MWI type:</source>
+ <translation>Typ &amp;MWI:</translation>
+ </message>
+ <message>
+ <source>Sollicited MWI</source>
+ <translation type="vanished">Vyžiadané MWI</translation>
+ </message>
+ <message>
+ <source>Subscription &amp;duration:</source>
+ <translation>Doba &amp;platnosti odberu:</translation>
+ </message>
+ <message>
+ <source>Mailbox &amp;user name:</source>
+ <translation>Meno používateľa &amp;hlasovej schránky:</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of your voice mailbox server.</source>
+ <translation>Meno hostiteľa, doménové meno alebo IP adresa servera vašej hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation type="vanished">Podľa špecifikácie MWI sa koncové zariadenie prihlási na serveri k príjmu správ na určitú dobu. Pred vypršaním tejto doby by sa prihlásenie malo znovu obnoviť.</translation>
+ </message>
+ <message>
+ <source>Your user name for accessing your voice mailbox.</source>
+ <translation>Meno používateľa pre prístup k vašej hlasovej schránke.</translation>
+ </message>
+ <message>
+ <source>Mailbox &amp;server:</source>
+ <translation>&amp;Server hlasovej schránky:</translation>
+ </message>
+ <message>
+ <source>Via outbound &amp;proxy</source>
+ <translation>Cez odchádzajúcu &amp;proxy</translation>
+ </message>
+ <message>
+ <source>Check this option if Twinkle should send SIP messages to the mailbox server via the outbound proxy.</source>
+ <translation>Ak je táto voľba aktivovaná, Twinkle zasiela správy SIP na server hlasovej schránky cez odchádzajúcu proxy.</translation>
+ </message>
+ <message>
+ <source>You must fill in a mailbox user name.</source>
+ <translation>Musíte vyplniť meno používateľa hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>You must fill in a mailbox server</source>
+ <translation>Musíte vyplniť server hlasovej schránky</translation>
+ </message>
+ <message>
+ <source>Invalid mailbox server.</source>
+ <translation>Neplatný server hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>Invalid mailbox user name.</source>
+ <translation>Neplatné meno používateľa hlasovej schránky.</translation>
+ </message>
+ <message>
+ <source>Use domain &amp;name to create a unique contact header value</source>
+ <translation>Použiť doménové &amp;meno pre vytvorenie jednoznačnej hlavičky Contact</translation>
+ </message>
+ <message>
+ <source>Select ring back tone file.</source>
+ <translation>Vyberte súbor pre tón vyzváňania na druhej strane.</translation>
+ </message>
+ <message>
+ <source>Select ring tone file.</source>
+ <translation>Vyberte súbor s tónom vyzváňania.</translation>
+ </message>
+ <message>
+ <source>Select script file.</source>
+ <translation>Vyberte súbor so skriptom.</translation>
+ </message>
+ <message>
+ <source>%1 converts to %2</source>
+ <translation>%1 konvertuje na %2</translation>
+ </message>
+ <message>
+ <source>Instant message</source>
+ <translation>Textová správa</translation>
+ </message>
+ <message>
+ <source>Presence</source>
+ <translation>Prítomnosť</translation>
+ </message>
+ <message>
+ <source>&amp;Maximum number of sessions:</source>
+ <translation>&amp;Maximálny počet sedení:</translation>
+ </message>
+ <message>
+ <source>When you have this number of instant message sessions open, new incoming message sessions will be rejected.</source>
+ <translation>Ak je už otvorený tento počet sedení s textovými správami, nové prichádzajúce sedenia budú odmietnuté.</translation>
+ </message>
+ <message>
+ <source>Your presence</source>
+ <translation>Vaše dostupnosti</translation>
+ </message>
+ <message>
+ <source>&amp;Publish availability at startup</source>
+ <translation>&amp;Zverejniť dostupnosť pri štarte</translation>
+ </message>
+ <message>
+ <source>Publish your availability at startup.</source>
+ <translation>Zverejniť vašu dostupnosť pri spustení.</translation>
+ </message>
+ <message>
+ <source>Buddy presence</source>
+ <translation>Prítomnosť kontaktov</translation>
+ </message>
+ <message>
+ <source>Publication &amp;refresh interval (sec):</source>
+ <translation>Interval &amp;odosielania stavu (s):</translation>
+ </message>
+ <message>
+ <source>Refresh rate of presence publications.</source>
+ <translation>Frekvencia odosielania vlastnej dostupnosti.</translation>
+ </message>
+ <message>
+ <source>&amp;Subscription refresh interval (sec):</source>
+ <translation>&amp;Interval obnovenia príjmu dostupnosti (s):</translation>
+ </message>
+ <message>
+ <source>Refresh rate of presence subscriptions.</source>
+ <translation>Frekvencia príjmu dostupnosti kontaktov.</translation>
+ </message>
+ <message>
+ <source>Transport/NAT</source>
+ <translation>Prenos/NAT</translation>
+ </message>
+ <message>
+ <source>Add q-value to registration</source>
+ <translation>Pridať q-hodnotu k registrácii</translation>
+ </message>
+ <message>
+ <source>The q-value indicates the priority of your registered device. If besides Twinkle you register other SIP devices for this account, then the network may use these values to determine which device to try first when delivering a call.</source>
+ <translation>Hodnota &apos;q&apos; určuje prioritu vášho registrovaného zariadenia. Ak je okrem Twinkle k VoIP účtu registrované aj iné SIP zariadenie, môže sieť využiť tieto hodnoty na určenie zariadenia, ktoré má byť prednostne oslovené pre obslúženie hovoru.</translation>
+ </message>
+ <message>
+ <source>The q-value is a value between 0.000 and 1.000. A higher value means a higher priority.</source>
+ <translation>Hodnota &apos;q&apos; je medzi 0.000 and 1.000. Vyššia hodnota znamená vyššiu prioritu.</translation>
+ </message>
+ <message>
+ <source>SIP transport</source>
+ <translation>Prenos SIP</translation>
+ </message>
+ <message>
+ <source>UDP</source>
+ <translation>UDP</translation>
+ </message>
+ <message>
+ <source>TCP</source>
+ <translation>TCP</translation>
+ </message>
+ <message>
+ <source>Transport mode for SIP. In auto mode, the size of a message determines which transport protocol is used. Messages larger than the UDP threshold are sent via TCP. Smaller messages are sent via UDP.</source>
+ <translation>Režim prenosu SIP. V automatickom režime je prenosový protokol určený veľkosťou správy. Správy väčšie ako prah pre UDP sú posielané protokolom TCP. Menšie správy sú posielané pomocou UDP.</translation>
+ </message>
+ <message>
+ <source>T&amp;ransport protocol:</source>
+ <translation>P&amp;renosový protokol:</translation>
+ </message>
+ <message>
+ <source>UDP t&amp;hreshold:</source>
+ <translation>&amp;Prah použitia UDP:</translation>
+ </message>
+ <message>
+ <source>Messages larger than the threshold are sent via TCP. Smaller messages are sent via UDP.</source>
+ <translation>Správy väčšie ako špecifikovaný prah sú doručované protokolom TCP. Menšie správy sú doručované protokolom UDP.</translation>
+ </message>
+ <message>
+ <source>Use &amp;STUN (does not work for incoming TCP)</source>
+ <translation type="vanished">Použiť &amp;STUN (nefunguje pre prichádzajúce TCP)</translation>
+ </message>
+ <message>
+ <source>P&amp;ersistent TCP connection</source>
+ <translation>Tr&amp;valé TCP spojenie</translation>
+ </message>
+ <message>
+ <source>Keep the TCP connection established during registration open such that the SIP proxy can reuse this connection to send incoming requests. Application ping packets are sent to test if the connection is still alive.</source>
+ <translation>Podržať otvorené TCP spojenie vytvorené počas registrácie tak, aby SIP proxy mohla využiť toto spojenie na vysielanie prichádzajúcich požiadaviek. Aplikácia odosiela pakety ping tak, aby sa zistilo, či je spojenie stále aktívne.</translation>
+ </message>
+ <message>
+ <source>&amp;Send composing indications when typing a message.</source>
+ <translation>Pri písaní správ &amp;odosielať o tomto indikáciu.</translation>
+ </message>
+ <message>
+ <source>Twinkle sends a composing indication when you type a message. This way the recipient can see that you are typing.</source>
+ <translation>Ak píšete správu, Twinkle o tomto informuje protistranu. Takto se príjemca môže dozvedieť, že niečo píšete.</translation>
+ </message>
+ <message>
+ <source>AKA AM&amp;F:</source>
+ <translation>AKA AM&amp;F:</translation>
+ </message>
+ <message>
+ <source>A&amp;KA OP:</source>
+ <translation>A&amp;KA OP:</translation>
+ </message>
+ <message>
+ <source>Authentication management field for AKAv1-MD5 authentication.</source>
+ <translation>Parametre autentizačného managementu pre AKAv1-MD5 autentizáciu.</translation>
+ </message>
+ <message>
+ <source>Operator variant key for AKAv1-MD5 authentication.</source>
+ <translation>Operátorova varianta kľúča pre autentizáciu AKAv1-MD5.</translation>
+ </message>
+ <message>
+ <source>Prepr&amp;ocessing</source>
+ <translation>Pred&amp;spracovanie</translation>
+ </message>
+ <message>
+ <source>Preprocessing (improves quality at remote end)</source>
+ <translation>Predspracovanie (vylepšuje kvalitu u príjemcu)</translation>
+ </message>
+ <message>
+ <source>&amp;Automatic gain control</source>
+ <translation>&amp;Automatické riadenie hlasitosti</translation>
+ </message>
+ <message>
+ <source>Automatic gain control (AGC) is a feature that deals with the fact that the recording volume may vary by a large amount between different setups. The AGC provides a way to adjust a signal to a reference volume. This is useful because it removes the need for manual adjustment of the microphone gain. A secondary advantage is that by setting the microphone gain to a conservative (low) level, it is easier to avoid clipping.</source>
+ <translation>Z dôvodu veľkého rozdielu hlasitostí nahrávania v rôznych konfiguráciách bola zavedená funkcia automatického riadenia hlasitosti (AGC - Automatic gain control). AGC umožňuje nastaviť úroveň signálu na prednastavenú hodnotu. Vďaka tomu nie je potrebné neustále nastavovať hlasitosť mikrofónu. Ďalšou výhodou je, že nastavenie hlasitosti mikrofónu je väčšinou na nižšej (konzervatívnej) úrovni, čím sa predchádza orezávaniu príliš hlasného zvuku.</translation>
+ </message>
+ <message>
+ <source>Automatic gain control &amp;level:</source>
+ <translation>&amp;Úroveň automatického riadenia hlasitosti:</translation>
+ </message>
+ <message>
+ <source>Automatic gain control level represents percentual value of automatic gain setting of a microphone. Recommended value is about 25%.</source>
+ <translation>Úroveň automatického riadenia hlasitosti predstavuje percentuálnu hodnotu maximálnej hlasitosti mikrofónu. Odporúčaná hodnota je kolem 25%.</translation>
+ </message>
+ <message>
+ <source>&amp;Voice activity detection</source>
+ <translation>Detekcia &amp;hlasu</translation>
+ </message>
+ <message>
+ <source>When enabled, voice activity detection detects whether the input signal represents a speech or a silence/background noise.</source>
+ <translation>Ak je táto voľba aktívna, detekcia hlasu zisťuje, či je na zvukovom vstupe hlas alebo ticho/šum na pozadí.</translation>
+ </message>
+ <message>
+ <source>&amp;Noise reduction</source>
+ <translation>&amp;Potlačenie šumu</translation>
+ </message>
+ <message>
+ <source>The noise reduction can be used to reduce the amount of background noise present in the input signal. This provides higher quality speech.</source>
+ <translation>Potlačenie šumu môže byť použité na zníženie okolitých rušivých zvukov vo vstupnom signále. Toto vedie k lepšej kvalite hovoreného slova.</translation>
+ </message>
+ <message>
+ <source>Acoustic &amp;Echo Cancellation</source>
+ <translation>Potlačenie &amp;akustickej ozveny</translation>
+ </message>
+ <message>
+ <source>In any VoIP communication, if a speech from the remote end is played in the local loudspeaker, then it propagates in the room and is captured by the microphone. If the audio captured from the microphone is sent directly to the remote end, then the remote user hears an echo of his voice. An acoustic echo cancellation is designed to remove the acoustic echo before it is sent to the remote end. It is important to understand that the echo canceller is meant to improve the quality on the remote end.</source>
+ <translation>Ak je pri VoIP komunikácii prichádzajúci zvuk prepnutý na hlasný odposluch v reproduktoroch, môže sa šíriť miestnosťou a byť snímaný mikrofónom. Ak je tento signál posielaný späť volajúcemu, stáva sa, že počuje ozvenu vlastného hlasu. Funkcia potlačenia akustickej ozveny je navrhnutá na potlačenie týchto zvukov pred tým, ako sú odoslané volajúcemu. Je dôležité si uvedomiť, že táto funkcia je určená pre zlepšenie kvality prenosu hlasu na druhej strane hovoru.</translation>
+ </message>
+ <message>
+ <source>Variable &amp;bit-rate</source>
+ <translation>Premenlivý &amp;dátový tok</translation>
+ </message>
+ <message>
+ <source>Discontinuous &amp;Transmission</source>
+ <translation>Diskontinuitný &amp;prenos</translation>
+ </message>
+ <message>
+ <source>&amp;Quality:</source>
+ <translation>&amp;Kvalita:</translation>
+ </message>
+ <message>
+ <source>Speex is a lossy codec, which means that it achieves compression at the expense of fidelity of the input speech signal. Unlike some other speech codecs, it is possible to control the tradeoff made between quality and bit-rate. The Speex encoding process is controlled most of the time by a quality parameter that ranges from 0 to 10.</source>
+ <translation>Speex je stratový kodek, čo znamená, že je na úkor kvality možné docieliť redukciu dátového toku. Na rozdiel od iných hlasových kodekov je možné nastaviť kompromis medzi kvalitou a dátovým tokom. Kódovací proces pri tomto kodeku je spravidla riadený nastavením parametru kvality v rozsahu od 0 do 10.</translation>
+ </message>
+ <message>
+ <source>bytes</source>
+ <translation>bajtov</translation>
+ </message>
+ <message>
+ <source>Use tel-URI for telephone &amp;number</source>
+ <translation>Použiť tel-URI pre &amp;telefónne číslo</translation>
+ </message>
+ <message>
+ <source>Expand a dialed telephone number to a tel-URI instead of a sip-URI.</source>
+ <translation>Rozšíriť vytáčané telefónne číslo na tel-URI miesto sip-URI.</translation>
+ </message>
+ <message>
+ <source>Accept call &amp;transfer request (incoming REFER)</source>
+ <translation>Prijímať žiadosti o &amp;prepojenie hovoru (prichádzajúci REFER)</translation>
+ </message>
+ <message>
+ <source>Allow call transfer while consultation in progress</source>
+ <translation>Povoliť prepojenie hovoru počas asistovaného prepojenia</translation>
+ </message>
+ <message>
+ <source>When you perform an attended call transfer, you normally transfer the call after you established a consultation call. If you enable this option you can transfer the call while the consultation call is still in progress. This is a non-standard implementation and may not work with all SIP devices.</source>
+ <translation>Ak robíte asistované prepojenie, tak obvykle prepojíte hovor po tom, čo prebehne konzultácia s protistranou. Akonáhle povolíte túto voľbu, potom môžete prepojiť hovor, kým konzultácia stále prebieha. Toto je neštandardná implementácia, ktorá nemusí správne pracovať so všetkými zariadeniami SIP.</translation>
+ </message>
+ <message>
+ <source>Enable NAT &amp;keep alive</source>
+ <translation>Povoliť NAT &amp;keep alive</translation>
+ </message>
+ <message>
+ <source>Send UDP NAT keep alive packets.</source>
+ <translation>Posielať UDP pakety pre udržanie spojenia cez NAT.</translation>
+ </message>
+ <message>
+ <source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
+ <translation>Ak máte povolený STUN alebo NAT keep alive, bude Twinkle zasielať udržovacie pakety v tomto intervale tak, aby boli udržané mapovania na vašom NATe.</translation>
+ </message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation>&amp;Doména*:</translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation>Or&amp;ganizácia:</translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation>&amp;Platnosť:</translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation>Spôsob pridržania &amp;hovoru:</translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation>Max. počet &amp;presmerovaní:</translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation>Indikuje, či je podporované rozšírenie Replaces.</translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation>Asistované prepojenie by malo používať Contact URI ako cieľovú adresu pre informovanie presmerovávanej strany o novom spojení. Táto adresa nemusí však globálne platiť. Ako alternatívu je možné použiť AoR (Address of Record). Nevýhodou je, že pri viacerých koncových zariadeniach nie je AoR jednoznačné, no URI kontaktu vždy ukazuje na jediné zariadenie.</translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation>Ak je vybrané a zároveň je aktívna voľba &quot;skryť odosielateľa&quot;, bude spolu s údajom odosielateľa odoslaná pri požiadavke INVITE hlavička P-Preferred-Identity.</translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation>&amp;Posielať hlavičku P-Preferred-Identity pri skrývaní identity používateľa</translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation>Použiť &amp;STUN (nefunguje pre prichádzajúce TCP)</translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation>Adresa S&amp;TUN servera:</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation>&lt;p&gt;
+Často sa formát telefónnych čísiel, ktoré očakáva poskytovateľ VoIP nezhoduje s formátom čísiel uložených v adresári. Napr. pri číslach začínajúcich na &quot;+&quot; a národným kódom krajiny očakáva váš poskytovateľ miesto &quot;00&quot; znak &quot;+&quot;. Alebo ste pripojený na miestnu sieť SIP a je potrebné najprv zadať predvoľbu pre volania smerom von.
+Tu je možné pomocou vyhľadávacích a nahradzovaných vzorov (podľa štýlu regulárnych výrazov so syntaxom jazyku Perl) nastaviť všeobecne platné pravidlá pre konverziu telefónnych čísiel.
+&lt;/p&gt;
+&lt;p&gt;
+Pri každom vytáčaní sa Twinkle pokúsi nájsť pre čísla z používateľskej časti adresy SIP zodpovedajúci výraz v zozname hľadaných vzorov. S prvým nájdeným vyhovujúcim výrazom je vykonaná úprava pôvodného čísla, pričom pozícia v &quot;(&quot; &quot;)&quot; v hľadanom výraze (napr. &quot;([0-9]*)&quot; pre &quot;ľubovoľný počet čísiel&quot;) je nahradená znakmi v zodpovedajúcich premenných. Napr. &quot;$1&quot; pre prvú pozíciu. Viď tiež `man 7 regex` alebo konqueror:&quot;#regex&quot;. Ak nie je nájdený žiaden zodpovedajúci hľadaný vzor, zostane číslo nezmenené.
+&lt;/p&gt;
+&lt;p&gt;
+Pravidlá budú tiež použité na čísla v prichádzajúcich hovoroch. Podľa nastavených pravidiel budú pretransformované do žiadaného formátu.
+&lt;/p&gt;
+&lt;h3&gt;1. príklad&lt;/h3&gt;
+&lt;p&gt;
+Napr. váš národní kód je &quot;421&quot; pre Slovenskú republiku a vo vašom adresári máte tiež veľa vnútroštátnych čísiel uložených v medzinárodnom formáte. Napr.. +421 2 123 456. Avšak poskytovateľ VoIP očakáva pre vnútroštátny hovor číslo 02 123456. Chcete teda nahradiť &apos;+421&apos; číslom &apos;0&apos; a zároveň pre zahraničné hovory nahradiť &apos;+&apos; predvoľbou &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+Na to sú potrebné nasledujúce pravidlá uvedené v tomto poradí:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hľadaný výraz = \+421([0-9]*) , Náhrada = 0$1&lt;br&gt;
+Hľadaný výraz = \+([0-9]*) , Náhrada = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;2. príklad&lt;/h3&gt;
+&lt;p&gt;
+Nachádzate sa na telefónnej ústredni a všetkým číslam začínajúcim nulou má byť predradené číslo 9.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Hľadaný výraz = 0[0-9]* , Náhrada = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+( $&amp; je špeciálna premenná, v ktorej je uložené celé pôvodné číslo)&lt;br&gt;
+Poznámka: Toto pravidlo nie je možné nastaviť jednoducho ako tretie pravidlo k dvom pravidlám z príkladu č. 1. Bude totiž použité vždy len prvé pravidlo, ktoré vyhľadávaniu vyhovie. Miesto toho by muselo byť zmenené nahrádzanie v pravidlách 1 a 2</translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation>Ak je aktivované, Twinkle sa pokúsi pri všetkých odchádzajúcich a prichádzajúcich hovoroch šifrovať zvukové dáta. Aby bol hovor naozaj zašifrovaný musí aj protistrana podporovať šifrovanie ZRTP/SRTP. Inak ostane hovor nešifrovaný.</translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation>&lt;H2&gt;Typ indikácie čakajúcich správ&lt;/H2&gt;
+&lt;p&gt;
+Ak váš poskytovateľ SIP ponúka upozornenie na uložené správy v hlasovej schránke, môže vás Twinkle informovať o nových aj už vypočutých správach vo vašej hlasovej schránke. Spýtajte sa vášho poskytovateľa, aký typ indikácie čakajúcich správ je používaný
+
+&lt;/p&gt;
+&lt;H3&gt;Nevyžiadané&lt;/H3&gt;
+&lt;p&gt;
+Asterisk podporuje nevyžiadané indikovanie čakajúcich správ.
+&lt;/p&gt;
+&lt;H3&gt;Vyžiadané&lt;/H3&gt;
+&lt;p&gt;
+Vyžiadaná indikácia čakajúcich správ podľa RFC 3842.
+&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation>Nevyžiadané</translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation>Vyžiadané</translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation>Vyžiadané MWI</translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation>Podľa špecifikácie MWI sa koncové zariadenie prihlási na serveri k príjmu správ na určitú dobu. Pred vypršaním tejto doby by sa prihlásenie malo znovu obnoviť.</translation>
+ </message>
+</context>
+<context>
+ <name>WizardForm</name>
+ <message>
+ <source>Twinkle - Wizard</source>
+ <translation>Twinkle - Sprievodca</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of the STUN server.</source>
+ <translation>Doménové meno, IP adresa alebo meno hostiteľa STUN servera.</translation>
+ </message>
+ <message>
+ <source>S&amp;TUN server:</source>
+ <translation>S&amp;TUN server:</translation>
+ </message>
+ <message>
+ <source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
+&lt;br&gt;&lt;br&gt;
+This field is mandatory.</source>
+ <translation>Meno používateľa, ktoré vám bolo pridelené vaším poskytovateľom SIP. Je tiež prvou časťou vašej úplnej SIP adresy &lt;b&gt;pouzivatel&lt;/b&gt;@domena.com. Môže sa tiež jednať o telefónne číslo.
+&lt;br&gt;&lt;br&gt;
+Tento údaj je povinný.</translation>
+ </message>
+ <message>
+ <source>&amp;Domain*:</source>
+ <translation>&amp;Doména*:</translation>
+ </message>
+ <message>
+ <source>Choose your SIP service provider. If your SIP service provider is not in the list, then select &lt;b&gt;Other&lt;/b&gt; and fill in the settings you received from your provider.&lt;br&gt;&lt;br&gt;
+If you select one of the predefined SIP service providers then you only have to fill in your name, user name, authentication name and password.</source>
+ <translation>Vyberte vášho poskytovateľa SIP a uveďte tu vaše celé meno, vaše používateľské meno SIP, prípadne prihlasovacie meno a heslo.&lt;br&gt;
+Ak váš poskytovateľ nie je v zozname, vyberte &lt;b&gt;Iný&lt;/b&gt; a uveďte požadované údaje.</translation>
+ </message>
+ <message>
+ <source>&amp;Authentication name:</source>
+ <translation>&amp;Prihlasovacie meno:</translation>
+ </message>
+ <message>
+ <source>&amp;Your name:</source>
+ <translation>Vaše &amp;meno:</translation>
+ </message>
+ <message>
+ <source>Your SIP authentication name. Quite often this is the same as your SIP user name. It can be a different name though.</source>
+ <translation>Vaše prihlasovacie meno SIP. Často sa zhoduje s vaším SIP menom používateľa. Môže však byť aj iné.</translation>
+ </message>
+ <message>
+ <source>The domain part of your SIP address, username@&lt;b&gt;domain.com&lt;/b&gt;. Instead of a real domain this could also be the hostname or IP address of your &lt;b&gt;SIP proxy&lt;/b&gt;. If you want direct IP phone to IP phone communications then you fill in the hostname or IP address of your computer.
+&lt;br&gt;&lt;br&gt;
+This field is mandatory.</source>
+ <translation>Doménová časť vašej úplnej SIP adresy pouzivatel@&lt;b&gt;domena.com&lt;/b&gt;. Okrem skutočnej domény sa môže tiež jednať o meno hostiteľa alebo IP adresu vašej &lt;b&gt;SIP proxy&lt;/b&gt;. Pre priame volania medzi IP adresami tu môžete zadať meno hostiteľa alebo IP adresu vášho počítača.
+&lt;br&gt;&lt;br&gt;
+Tento údaj je povinný.</translation>
+ </message>
+ <message>
+ <source>This is just your full name, e.g. John Doe. It is used as a display name. When you make a call, this display name might be shown to the called party.</source>
+ <translation>Vaše celé meno, napr. Jozef Mrkva. Používa sa len pre účely zobrazenia. Akonáhle uskutočníte hovor, toto meno môže byť zobrazené volanému.</translation>
+ </message>
+ <message>
+ <source>SIP pre&amp;xy:</source>
+ <translation type="vanished">SIP pro&amp;xy:</translation>
+ </message>
+ <message>
+ <source>The hostname, domain name or IP address of your SIP proxy. If this is the same value as your domain, you may leave this field empty.</source>
+ <translation>Doménové meno, IP adresa alebo meno vašej proxy. Ak sa zhoduje s doménou, je možné toto pole nechať prázdne.</translation>
+ </message>
+ <message>
+ <source>&amp;SIP service provider:</source>
+ <translation>Poskytovateľ &amp;SIP VoIP služby:</translation>
+ </message>
+ <message>
+ <source>&amp;Password:</source>
+ <translation>&amp;Heslo:</translation>
+ </message>
+ <message>
+ <source>&amp;User name*:</source>
+ <translation>&amp;Meno používateľa*:</translation>
+ </message>
+ <message>
+ <source>Your password for authentication.</source>
+ <translation>Vaše prihlasovacie heslo.</translation>
+ </message>
+ <message>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation>Alt+O</translation>
+ </message>
+ <message>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation>Alt+Z</translation>
+ </message>
+ <message>
+ <source>None (direct IP to IP calls)</source>
+ <translation>Žiadne (priame volanie medzi IP adresami)</translation>
+ </message>
+ <message>
+ <source>Other</source>
+ <translation>Iný</translation>
+ </message>
+ <message>
+ <source>User profile wizard:</source>
+ <translation>Sprievodca profilu používateľa:</translation>
+ </message>
+ <message>
+ <source>You must fill in a user name for your SIP account.</source>
+ <translation>Musíte zadať meno používateľa pre váš SIP účet.</translation>
+ </message>
+ <message>
+ <source>You must fill in a domain name for your SIP account.
+This could be the hostname or IP address of your PC if you want direct PC to PC dialing.</source>
+ <translation>Je potrebné zadať doménové meno vášho SIP účtu (časť vpravo od symbolu &quot;@&quot;).
+V prípade priameho volania medzi IP adresami se môže jednať o meno hostiteľa alebo IP adresu vášho PC.</translation>
+ </message>
+ <message>
+ <source>Invalid value for SIP proxy.</source>
+ <translation>Neplatná hodnota pre SIP proxy.</translation>
+ </message>
+ <message>
+ <source>Invalid value for STUN server.</source>
+ <translation>Neplatná hodnota pre STUN server.</translation>
+ </message>
+ <message>
+ <source>SIP pro&amp;xy:</source>
+ <translation>SIP pro&amp;xy:</translation>
+ </message>
+</context>
+<context>
+ <name>YesNoDialog</name>
+ <message>
+ <source>&amp;Yes</source>
+ <translation>&amp;Áno</translation>
+ </message>
+ <message>
+ <source>&amp;No</source>
+ <translation>&amp;Nie</translation>
+ </message>
+</context>
+<context>
+ <name>incoming_call</name>
+ <message>
+ <source>Answer</source>
+ <translation>Prijať</translation>
+ </message>
+ <message>
+ <source>Reject</source>
+ <translation>Odmietnuť</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/gui/lang/twinkle_sv.ts b/src/gui/lang/twinkle_sv.ts
index d8b0df6..9d7fd83 100644
--- a/src/gui/lang/twinkle_sv.ts
+++ b/src/gui/lang/twinkle_sv.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1" language="sv" sourcelanguage="en">
<context>
<name>AddressCardForm</name>
<message>
@@ -962,6 +962,14 @@
<source>&lt;p&gt;You seem not to have any contacts with a phone number in &lt;b&gt;KAddressBook&lt;/b&gt;, KDE&apos;s address book application. Twinkle retrieves all contacts with a phone number from KAddressBook. To manage your contacts you have to use KAddressBook.&lt;p&gt;As an alternative you may use Twinkle&apos;s local address book.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>GetProfileNameForm</name>
@@ -4080,11 +4088,11 @@ och skapa följande statiska bindningar (UDP) i din NAT.</translation>
</message>
<message>
<source>&amp;Domain*:</source>
- <translation>&amp;Domän*:</translation>
+ <translation type="vanished">&amp;Domän*:</translation>
</message>
<message>
<source>Or&amp;ganization:</source>
- <translation>Or&amp;ganisation:</translation>
+ <translation type="vanished">Or&amp;ganisation:</translation>
</message>
<message>
<source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
@@ -4155,10 +4163,6 @@ Detta fält är obligatoriskt.</translation>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Expiry:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The registration expiry time that Twinkle will request.</source>
<translation type="unfinished"></translation>
</message>
@@ -4583,10 +4587,6 @@ Send DTMF out-of-band via a SIP INFO request.
<translation>Protokollalternativ</translation>
</message>
<message>
- <source>Call &amp;Hold variant:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>RFC 2543</source>
<translation>RFC 2543</translation>
</message>
@@ -4713,10 +4713,6 @@ This format is what most SIP phones use.
<translation type="unfinished"></translation>
</message>
<message>
- <source>Max re&amp;directions:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
<translation type="unfinished"></translation>
</message>
@@ -4760,10 +4756,6 @@ This format is what most SIP phones use.
<translation>Ersätter</translation>
</message>
<message>
- <source>Indicates if the Replaces-extenstion is supported.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>REFER</source>
<translation>REFER</translation>
</message>
@@ -4828,10 +4820,6 @@ This format is what most SIP phones use.
<translation type="unfinished"></translation>
</message>
<message>
- <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Privacy</source>
<translation>Integritet</translation>
</message>
@@ -4874,7 +4862,7 @@ When you choose this option you have to create static address mappings in your N
</message>
<message>
<source>S&amp;TUN server:</source>
- <translation>S&amp;TUN-server:</translation>
+ <translation type="vanished">S&amp;TUN-server:</translation>
</message>
<message>
<source>The hostname, domain name or IP address of the STUN server.</source>
@@ -4937,40 +4925,6 @@ When you choose this option you have to create static address mappings in your N
<translation>Ersätt</translation>
</message>
<message>
- <source>&lt;p&gt;
-Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
-&lt;/p&gt;
-&lt;p&gt;
-For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
-&lt;/p&gt;
-&lt;p&gt;
-The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
-&lt;/p&gt;
-&lt;h3&gt;Example 1&lt;/h3&gt;
-&lt;p&gt;
-Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
-&lt;/p&gt;
-&lt;p&gt;
-The following rules will do the trick:
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
-Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;
-&lt;h3&gt;Example 2&lt;/h3&gt;
-&lt;p&gt;
-You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Move the selected number conversion rule upwards in the list.</source>
<translation type="unfinished"></translation>
</message>
@@ -5232,10 +5186,6 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation>&amp;Aktivera ZRTP/SRTP-kryptering</translation>
</message>
<message>
- <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>ZRTP settings</source>
<translation>Inställningar för ZRTP</translation>
</message>
@@ -5272,37 +5222,10 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unsollicited</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Sollicited</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
-&lt;p&gt;
-If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
-&lt;/p&gt;
-&lt;H3&gt;Unsollicited&lt;/H3&gt;
-&lt;p&gt;
-Asterisk provides unsollicited message waiting indication.
-&lt;/p&gt;
-&lt;H3&gt;Sollicited&lt;/H3&gt;
-&lt;p&gt;
-Sollicited message waiting indication as specified by RFC 3842.
-&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>&amp;MWI type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sollicited MWI</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Subscription &amp;duration:</source>
<translation type="unfinished"></translation>
</message>
@@ -5315,10 +5238,6 @@ Sollicited message waiting indication as specified by RFC 3842.
<translation type="unfinished"></translation>
</message>
<message>
- <source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Your user name for accessing your voice mailbox.</source>
<translation type="unfinished"></translation>
</message>
@@ -5511,10 +5430,6 @@ Detta kan vara värdnamnet eller IP-adressen för din dator, om du vill ha direk
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use &amp;STUN (does not work for incoming TCP)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>P&amp;ersistent TCP connection</source>
<translation type="unfinished"></translation>
</message>
@@ -5690,6 +5605,119 @@ Detta kan vara värdnamnet eller IP-adressen för din dator, om du vill ha direk
<source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WizardForm</name>
diff --git a/src/gui/lang/twinkle_xx.ts b/src/gui/lang/twinkle_xx.ts
index 067913e..1b92c88 100644
--- a/src/gui/lang/twinkle_xx.ts
+++ b/src/gui/lang/twinkle_xx.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0">
+<TS version="2.1">
<context>
<name>AddressCardForm</name>
<message>
@@ -919,6 +919,14 @@
<source>&lt;p&gt;You seem not to have any contacts with a phone number in &lt;b&gt;KAddressBook&lt;/b&gt;, KDE&apos;s address book application. Twinkle retrieves all contacts with a phone number from KAddressBook. To manage your contacts you have to use KAddressBook.&lt;p&gt;As an alternative you may use Twinkle&apos;s local address book.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Are you sure you want to delete contact &apos;%1&apos; from the local address book?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Delete contact</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>GetProfileNameForm</name>
@@ -3855,14 +3863,6 @@ and create the following static bindings (UDP) in your NAT.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Domain*:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Or&amp;ganization:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The SIP user name given to you by your provider. It is the user part in your SIP address, &lt;b&gt;username&lt;/b&gt;@domain.com This could be a telephone number.
&lt;br&gt;&lt;br&gt;
This field is mandatory.</source>
@@ -3927,10 +3927,6 @@ This field is mandatory.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>&amp;Expiry:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The registration expiry time that Twinkle will request.</source>
<translation type="unfinished"></translation>
</message>
@@ -4351,10 +4347,6 @@ Send DTMF out-of-band via a SIP INFO request.
<translation type="unfinished"></translation>
</message>
<message>
- <source>Call &amp;Hold variant:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>RFC 2543</source>
<translation type="unfinished"></translation>
</message>
@@ -4481,10 +4473,6 @@ This format is what most SIP phones use.
<translation type="unfinished"></translation>
</message>
<message>
- <source>Max re&amp;directions:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The number of redirect addresses that Twinkle tries at a maximum before it gives up redirecting a request. This prevents a request from getting redirected forever.</source>
<translation type="unfinished"></translation>
</message>
@@ -4528,10 +4516,6 @@ This format is what most SIP phones use.
<translation type="unfinished"></translation>
</message>
<message>
- <source>Indicates if the Replaces-extenstion is supported.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>REFER</source>
<translation type="unfinished"></translation>
</message>
@@ -4596,10 +4580,6 @@ This format is what most SIP phones use.
<translation type="unfinished"></translation>
</message>
<message>
- <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Privacy</source>
<translation type="unfinished"></translation>
</message>
@@ -4665,18 +4645,10 @@ When you choose this option you have to create static address mappings in your N
<translation type="unfinished"></translation>
</message>
<message>
- <source>Use &amp;STUN (does not work for incoming TCP)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Choose this option when your SIP provider offers a STUN server for NAT traversal.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>S&amp;TUN server:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>The hostname, domain name or IP address of the STUN server.</source>
<translation type="unfinished"></translation>
</message>
@@ -4737,40 +4709,6 @@ When you choose this option you have to create static address mappings in your N
<translation type="unfinished"></translation>
</message>
<message>
- <source>&lt;p&gt;
-Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
-&lt;/p&gt;
-&lt;p&gt;
-For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
-&lt;/p&gt;
-&lt;p&gt;
-The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
-&lt;/p&gt;
-&lt;h3&gt;Example 1&lt;/h3&gt;
-&lt;p&gt;
-Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
-&lt;/p&gt;
-&lt;p&gt;
-The following rules will do the trick:
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
-Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;
-&lt;h3&gt;Example 2&lt;/h3&gt;
-&lt;p&gt;
-You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
-&lt;/p&gt;
-&lt;blockquote&gt;
-&lt;tt&gt;
-Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
-&lt;/tt&gt;
-&lt;/blockquote&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Move the selected number conversion rule upwards in the list.</source>
<translation type="unfinished"></translation>
</message>
@@ -5040,10 +4978,6 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation type="unfinished"></translation>
</message>
<message>
- <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>ZRTP settings</source>
<translation type="unfinished"></translation>
</message>
@@ -5080,37 +5014,10 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<translation type="unfinished"></translation>
</message>
<message>
- <source>Unsollicited</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Sollicited</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
-&lt;p&gt;
-If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
-&lt;/p&gt;
-&lt;H3&gt;Unsollicited&lt;/H3&gt;
-&lt;p&gt;
-Asterisk provides unsollicited message waiting indication.
-&lt;/p&gt;
-&lt;H3&gt;Sollicited&lt;/H3&gt;
-&lt;p&gt;
-Sollicited message waiting indication as specified by RFC 3842.
-&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>&amp;MWI type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Sollicited MWI</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Subscription &amp;duration:</source>
<translation type="unfinished"></translation>
</message>
@@ -5123,10 +5030,6 @@ Sollicited message waiting indication as specified by RFC 3842.
<translation type="unfinished"></translation>
</message>
<message>
- <source>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Your user name for accessing your voice mailbox.</source>
<translation type="unfinished"></translation>
</message>
@@ -5421,6 +5324,119 @@ This could be the hostname or IP address of your PC if you want direct PC to PC
<source>If you have enabled STUN or NAT keep alive, then Twinkle will send keep alive packets at this interval rate to keep the address bindings in your NAT device alive.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Do&amp;main*:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Organi&amp;zation:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>E&amp;xpiry:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Call Hold &amp;variant:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Max redirections:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Indicates if the Replaces-extension is supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Include a P-Asserted-Identity header with your identity in an INVITE request for a call with identity hiding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&amp;Send P-Asserted-Identity header when hiding user identity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Use STUN (does not wor&amp;k for incoming TCP)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>STUN ser&amp;ver:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects &apos;00&apos; instead of the &apos;+&apos;, or you are at the office and all your numbers need to be prefixed with a &apos;9&apos; to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+&lt;/p&gt;
+&lt;p&gt;
+For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
+&lt;/p&gt;
+&lt;p&gt;
+The number conversion rules are also applied to incoming calls, so the numbers are displayed in the format you want.
+&lt;/p&gt;
+&lt;h3&gt;Example 1&lt;/h3&gt;
+&lt;p&gt;
+Assume your country code is 31 and you have stored all numbers in your address book in full international number format, e.g. +318712345678. For dialling numbers in your own country you want to strip of the &apos;+31&apos; and replace it by a &apos;0&apos;. For dialling numbers abroad you just want to replace the &apos;+&apos; by &apos;00&apos;.
+&lt;/p&gt;
+&lt;p&gt;
+The following rules will do the trick:
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = \+31([0-9]*) , Replace = 0$1&lt;br&gt;
+Match expression = \+([0-9]*) , Replace = 00$1&lt;/br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;
+&lt;h3&gt;Example 2&lt;/h3&gt;
+&lt;p&gt;
+You are at work and all telephone numbers starting with a 0 should be prefixed with a 9 for an outside line.
+&lt;/p&gt;
+&lt;blockquote&gt;
+&lt;tt&gt;
+Match expression = 0[0-9]* , Replace = 9$&amp;&lt;br&gt;
+&lt;/tt&gt;
+&lt;/blockquote&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>&lt;H2&gt;Message waiting indication type&lt;/H2&gt;
+&lt;p&gt;
+If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
+&lt;/p&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
+&lt;p&gt;
+Asterisk provides unsolicited message waiting indication.
+&lt;/p&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
+&lt;p&gt;
+Solicited message waiting indication as specified by RFC 3842.
+&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Unsolicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Solicited MWI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WizardForm</name>
diff --git a/src/gui/mphoneform.cpp b/src/gui/mphoneform.cpp
index 6c447a8..144bbea 100644
--- a/src/gui/mphoneform.cpp
+++ b/src/gui/mphoneform.cpp
@@ -200,6 +200,12 @@ void MphoneForm::init()
connect(sysTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(sysTrayIconClicked(QSystemTrayIcon::ActivationReason)));
+ connect(menu, &QMenu::aboutToShow, this, &MphoneForm::updateTrayIconMenu);
+
+ // Toggle window visibility
+ menu->addAction(toggleWindowAction);
+
+ menu->addSeparator();
// Call menu
menu->addAction(callInvite);
@@ -810,7 +816,8 @@ void MphoneForm::updateState()
name = cr.from_uri.encode_no_params_hdrs(false);
incomingCallPopup->setCallerName(QString::fromStdString(name));
- showIncomingCallPopup = true;
+ if (sys_config->get_gui_show_incoming_popup())
+ showIncomingCallPopup = true;
break;
}
@@ -1115,7 +1122,7 @@ void MphoneForm::updateMwi()
toolTip.append(tr("Unknown"));
}
} else {
- if ((*i)->get_mwi_sollicited()) {
+ if ((*i)->get_mwi_solicited()) {
if (mwi.get_status() == t_mwi::MWI_FAILED) {
toolTip.append(tr("Failure"));
mwi_failure = true;
@@ -1123,7 +1130,7 @@ void MphoneForm::updateMwi()
toolTip.append(tr("Unknown"));
}
} else {
- // Unsollicited MWI
+ // Unsolicited MWI
if (mwi.get_status() == t_mwi::MWI_KNOWN) {
bool new_msgs;
QString status = getMWIStatus(mwi, new_msgs);
@@ -2290,7 +2297,7 @@ void MphoneForm::aboutQt()
void MphoneForm::manual()
{
- ((t_gui *)ui)->open_url_in_browser("http://web.archive.org/web/20180217123024/http://www.twinklephone.com/");
+ ((t_gui *)ui)->open_url_in_browser("https://web.archive.org/web/20180217123024/http://www.twinklephone.com/");
}
void MphoneForm::editUserProfile()
@@ -2333,6 +2340,8 @@ void MphoneForm::editSysSettings()
sysSettingsForm = new SysSettingsForm(this);
sysSettingsForm->setModal(true);
MEMMAN_NEW(sysSettingsForm);
+ connect(sysSettingsForm, SIGNAL(inhibitIdleSessionChanged()),
+ (t_gui *)ui, SLOT(updateInhibitIdleSession()));
connect(sysSettingsForm, SIGNAL(sipUdpPortChanged()),
this, SLOT(updateSipUdpPort()));
connect(sysSettingsForm, SIGNAL(rtpPortChanged()),
@@ -3239,12 +3248,20 @@ void MphoneForm::whatsThis()
void MphoneForm::sysTrayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
if (reason == QSystemTrayIcon::Trigger || reason == QSystemTrayIcon::DoubleClick)
- {
- if (sys_config->get_gui_hide_on_close())
- setVisible(!isVisible());
- else
- activateWindow();
- }
+ toggleWindow();
+}
+
+void MphoneForm::toggleWindow()
+{
+ setVisible(!isVisible());
+}
+
+void MphoneForm::updateTrayIconMenu()
+{
+ if (isVisible())
+ toggleWindowAction->setText(tr("Hide window"));
+ else
+ toggleWindowAction->setText(tr("Show window"));
}
bool MphoneForm::event(QEvent * event)
diff --git a/src/gui/mphoneform.h b/src/gui/mphoneform.h
index 1527e8d..508072d 100644
--- a/src/gui/mphoneform.h
+++ b/src/gui/mphoneform.h
@@ -172,6 +172,8 @@ public slots:
void DiamondcardAdminCenter();
void whatsThis();
void sysTrayIconClicked(QSystemTrayIcon::ActivationReason);
+ void toggleWindow();
+ void updateTrayIconMenu();
void osdMuteClicked();
diff --git a/src/gui/mphoneform.ui b/src/gui/mphoneform.ui
index 196b098..6a1f6f0 100644
--- a/src/gui/mphoneform.ui
+++ b/src/gui/mphoneform.ui
@@ -1015,6 +1015,9 @@
</layout>
</widget>
<widget class="QToolBar" name="callToolbar">
+ <property name="windowTitle">
+ <string>Main Toolbar</string>
+ </property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
@@ -1822,6 +1825,11 @@
<cstring>actgrActivateLine</cstring>
</property>
</actiongroup>
+ <action name="toggleWindowAction">
+ <property name="text">
+ <string>Toggle window visibility</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<tabstops>
@@ -2503,6 +2511,12 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>toggleWindowAction</sender>
+ <signal>triggered()</signal>
+ <receiver>MphoneForm</receiver>
+ <slot>toggleWindow()</slot>
+ </connection>
</connections>
<slots>
<slot>doMessageBuddy(QTreeWidgetItem*)</slot>
diff --git a/src/gui/qml/TextImageButton.qml b/src/gui/qml/TextImageButton.qml
index 83f61d7..c183630 100644
--- a/src/gui/qml/TextImageButton.qml
+++ b/src/gui/qml/TextImageButton.qml
@@ -12,6 +12,12 @@ Rectangle {
signal clicked
color: "red"
+ // Pre-compute this to avoid binding color to itself
+ property color darkerColor
+ Component.onCompleted: {
+ darkerColor = Qt.darker(color)
+ }
+
z: 2
Image {
@@ -53,7 +59,7 @@ Rectangle {
states: State {
name: "pressed"; when: mouseArea.pressed
- PropertyChanges { target: backgroundRect; color: Qt.darker(color) }
+ PropertyChanges { target: backgroundRect; color: darkerColor }
}
}
diff --git a/src/gui/syssettingsform.cpp b/src/gui/syssettingsform.cpp
index 355df59..09f85cd 100644
--- a/src/gui/syssettingsform.cpp
+++ b/src/gui/syssettingsform.cpp
@@ -15,6 +15,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+#include "twinkle_config.h"
+
#include <QPixmap>
#include <QComboBox>
#include "gui.h"
@@ -264,10 +266,21 @@ void SysSettingsForm::populate()
guiUseSystrayCheckBox->setChecked(sys_config->get_gui_use_systray());
guiHideCheckBox->setChecked(sys_config->get_gui_hide_on_close());
guiHideCheckBox->setEnabled(sys_config->get_gui_use_systray());
+
+ // Inhibit idle session
+ inhibitIdleSessionCheckBox->setChecked(sys_config->get_inhibit_idle_session());
+#ifdef HAVE_DBUS
+ inhibitIdleSessionCheckBox->setEnabled(true);
+#else
+ inhibitIdleSessionCheckBox->setEnabled(false);
+#endif
// Call history
histSizeSpinBox->setValue(sys_config->get_ch_max_size());
+ // Show popup on incoming call
+ incomingPopupCheckBox->setChecked(sys_config->get_gui_show_incoming_popup());
+
// Auto show on incoming call
autoShowCheckBox->setChecked(sys_config->get_gui_auto_show_incoming());
autoShowTimeoutSpinBox->setValue(sys_config->get_gui_auto_show_timeout());
@@ -376,7 +389,17 @@ void SysSettingsForm::validate()
sys_config->set_gui_use_systray(guiUseSystrayCheckBox->isChecked());
sys_config->set_gui_hide_on_close(guiHideCheckBox->isChecked());
sys_config->set_gui_show_call_osd(osdCheckBox->isChecked());
+
+ // Inhibit idle session
+ if (sys_config->get_inhibit_idle_session() != inhibitIdleSessionCheckBox->isChecked()) {
+ sys_config->set_inhibit_idle_session(inhibitIdleSessionCheckBox->isChecked());
+ // Changing this setting while busy requires special handling
+ emit inhibitIdleSessionChanged();
+ }
+ // Show popup on incoming call
+ sys_config->set_gui_show_incoming_popup(incomingPopupCheckBox->isChecked());
+
// Auto show on incoming call
sys_config->set_gui_auto_show_incoming(autoShowCheckBox->isChecked());
sys_config->set_gui_auto_show_timeout(autoShowTimeoutSpinBox->value());
diff --git a/src/gui/syssettingsform.h b/src/gui/syssettingsform.h
index 3a5e6ac..fec5f7a 100644
--- a/src/gui/syssettingsform.h
+++ b/src/gui/syssettingsform.h
@@ -31,6 +31,7 @@ public slots:
virtual void playRingBackToneCheckBoxToggles( bool on );
signals:
+ void inhibitIdleSessionChanged();
void sipUdpPortChanged();
void rtpPortChanged();
diff --git a/src/gui/syssettingsform.ui b/src/gui/syssettingsform.ui
index a792f81..a0ae501 100644
--- a/src/gui/syssettingsform.ui
+++ b/src/gui/syssettingsform.ui
@@ -890,6 +890,19 @@ If before answering a call, the microphone or speaker appears to be invalid, a w
</layout>
</item>
<item row="6" column="0">
+ <widget class="QCheckBox" name="incomingPopupCheckBox">
+ <property name="whatsThis">
+ <string>Display a popup window with "Answer" and "Reject" buttons on an incoming call.</string>
+ </property>
+ <property name="text">
+ <string>Show &amp;popup window on incoming call</string>
+ </property>
+ <property name="shortcut">
+ <string>Alt+P</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
<layout class="QHBoxLayout">
<item>
<widget class="QCheckBox" name="autoShowCheckBox">
@@ -942,7 +955,7 @@ If before answering a call, the microphone or speaker appears to be invalid, a w
</item>
</layout>
</item>
- <item row="7" column="0">
+ <item row="9" column="0">
<layout class="QHBoxLayout">
<item>
<widget class="QLabel" name="browserTextLabel">
@@ -966,6 +979,19 @@ If before answering a call, the microphone or speaker appears to be invalid, a w
</item>
</layout>
</item>
+ <item row="8" column="0">
+ <widget class="QCheckBox" name="inhibitIdleSessionCheckBox">
+ <property name="whatsThis">
+ <string>If the session is marked as idle, it may trigger certain actions (such as locking the screen, logging out automatically, or suspending the system) depending on your configuration. Enabling this option will prevent this from happening while a call is in progress.</string>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Prevent &amp;idle session while a call is in progress</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="pageNetwork">
diff --git a/src/gui/userprofileform.cpp b/src/gui/userprofileform.cpp
index 9ed9209..d0a94f3 100644
--- a/src/gui/userprofileform.cpp
+++ b/src/gui/userprofileform.cpp
@@ -102,8 +102,8 @@
#define colReplace 1
// MWI type indices
-#define idxMWIUnsollicited 0
-#define idxMWISollicited 1
+#define idxMWIUnsolicited 0
+#define idxMWISolicited 1
// SIP transport protocol indices
#define idxSipTransportAuto 0
@@ -383,12 +383,12 @@ void UserProfileForm::populate()
// VOICE MAIL
vmAddressLineEdit->setText(current_profile->get_mwi_vm_address().c_str());
- if (current_profile->get_mwi_sollicited()) {
- mwiTypeComboBox->setCurrentIndex(idxMWISollicited);
- mwiSollicitedGroupBox->setEnabled(true);
+ if (current_profile->get_mwi_solicited()) {
+ mwiTypeComboBox->setCurrentIndex(idxMWISolicited);
+ mwiSolicitedGroupBox->setEnabled(true);
} else {
- mwiTypeComboBox->setCurrentIndex(idxMWIUnsollicited);
- mwiSollicitedGroupBox->setEnabled(false);
+ mwiTypeComboBox->setCurrentIndex(idxMWIUnsolicited);
+ mwiSolicitedGroupBox->setEnabled(false);
}
mwiUserLineEdit->setText(current_profile->get_mwi_user().c_str());
mwiServerLineEdit->setText(current_profile->
@@ -809,7 +809,7 @@ bool UserProfileForm::validateValues()
// Validity check voice mail page
- if (mwiTypeComboBox->currentIndex() == idxMWISollicited) {
+ if (mwiTypeComboBox->currentIndex() == idxMWISolicited) {
// Mailbox user name is mandatory
if (mwiUserLineEdit->text().isEmpty()) {
categoryListBox->setCurrentRow(idxCatVoiceMail);
@@ -921,8 +921,8 @@ bool UserProfileForm::validateValues()
proxyLineEdit->clear();
}
- // Clear sollicited MWI settings if unsollicited MWI is used
- if (mwiTypeComboBox->currentIndex() == idxMWIUnsollicited) {
+ // Clear solicited MWI settings if unsolicited MWI is used
+ if (mwiTypeComboBox->currentIndex() == idxMWIUnsolicited) {
t_user user_default;
mwiUserLineEdit->clear();
mwiServerLineEdit->clear();
@@ -1002,10 +1002,10 @@ bool UserProfileForm::validateValues()
current_profile->set_mwi_vm_address(vmAddressLineEdit->text().toStdString());
bool mustTriggerMWISubscribe = false;
- bool mwiSollicited = (mwiTypeComboBox->currentIndex() == idxMWISollicited);
- if (mwiSollicited) {
- if (!current_profile->get_mwi_sollicited()) {
- // Sollicited MWI now enabled. Subscribe after all MWI
+ bool mwiSolicited = (mwiTypeComboBox->currentIndex() == idxMWISolicited);
+ if (mwiSolicited) {
+ if (!current_profile->get_mwi_solicited()) {
+ // Solicited MWI now enabled. Subscribe after all MWI
// settings have been changed.
mustTriggerMWISubscribe = true;
} else {
@@ -1015,7 +1015,7 @@ bool UserProfileForm::validateValues()
t_url(s.toStdString()) != current_profile->get_mwi_server() ||
mwiViaProxyCheckBox->isChecked() != current_profile->get_mwi_via_proxy())
{
- // Sollicited MWI settings changed. Trigger unsubscribe
+ // Solicited MWI settings changed. Trigger unsubscribe
// of current MWI subscription.
emit mwiChangeUnsubscribe(current_profile);
@@ -1024,14 +1024,14 @@ bool UserProfileForm::validateValues()
}
}
} else {
- if (current_profile->get_mwi_sollicited()) {
- // MWI type changes to unsollicited. Trigger unsubscribe of
+ if (current_profile->get_mwi_solicited()) {
+ // MWI type changes to unsolicited. Trigger unsubscribe of
// current MWI subscription.
emit mwiChangeUnsubscribe(current_profile);
}
}
- current_profile->set_mwi_sollicited(mwiSollicited);
+ current_profile->set_mwi_solicited(mwiSolicited);
current_profile->set_mwi_user(mwiUserLineEdit->text().toStdString());
s = USER_SCHEME;
s.append(':').append(mwiServerLineEdit->text());
@@ -1521,8 +1521,8 @@ void UserProfileForm::testConversion() {
}
void UserProfileForm::changeMWIType(int idxMWIType) {
- if (idxMWIType == idxMWISollicited) {
- mwiSollicitedGroupBox->setEnabled(true);
+ if (idxMWIType == idxMWISolicited) {
+ mwiSolicitedGroupBox->setEnabled(true);
// Set defaults
if (mwiUserLineEdit->text().isEmpty()) {
@@ -1533,7 +1533,7 @@ void UserProfileForm::changeMWIType(int idxMWIType) {
mwiViaProxyCheckBox->setChecked(useProxyCheckBox->isChecked());
}
} else {
- mwiSollicitedGroupBox->setEnabled(false);
+ mwiSolicitedGroupBox->setEnabled(false);
}
}
diff --git a/src/gui/userprofileform.ui b/src/gui/userprofileform.ui
index 4a11efa..ee0558e 100644
--- a/src/gui/userprofileform.ui
+++ b/src/gui/userprofileform.ui
@@ -823,7 +823,7 @@ This field is mandatory.</string>
<number>10</number>
</property>
<property name="maximum">
- <number>50</number>
+ <number>80</number>
</property>
<property name="singleStep">
<number>10</number>
@@ -2494,7 +2494,7 @@ This format is what most SIP phones use.
<item row="1" column="0">
<widget class="QCheckBox" name="extReplacesCheckBox">
<property name="whatsThis">
- <string>Indicates if the Replaces-extenstion is supported.</string>
+ <string>Indicates if the Replaces-extension is supported.</string>
</property>
<property name="text">
<string>Replaces</string>
@@ -2585,7 +2585,7 @@ This format is what most SIP phones use.
<item>
<widget class="QCheckBox" name="referAorCheckBox">
<property name="whatsThis">
- <string>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endoint.</string>
+ <string>An attended call transfer should use the contact URI as a refer target. A contact URI may not be globally routable however. Alternatively the AoR (Address of Record) may be used. A disadvantage is that the AoR may route to multiple endpoints in case of forking whereas the contact URI routes to a single endpoint.</string>
</property>
<property name="text">
<string>Attended refer to AoR (Address of Record)</string>
@@ -3079,7 +3079,7 @@ When you choose this option you have to create static address mappings in your N
<widget class="QTableWidget" name="conversionListView">
<property name="whatsThis">
<string>&lt;p&gt;
-Often the format of the telphone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects '00' instead of the '+', or you are at the office and all your numbers need to be prefixed with a '9' to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
+Often the format of the telephone numbers you need to dial is different from the format of the telephone numbers stored in your address book, e.g. your numbers start with a +-symbol followed by a country code, but your provider expects '00' instead of the '+', or you are at the office and all your numbers need to be prefixed with a '9' to access an outside line. Here you can specify number format conversion using Perl style regular expressions and format strings.
&lt;/p&gt;
&lt;p&gt;
For each number you dial, Twinkle will try to find a match in the list of match expressions. For the first match it finds, the number will be replaced with the format string. If no match is found, the number stays unchanged.
@@ -4076,7 +4076,7 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
<item>
<widget class="QCheckBox" name="zrtpEnabledCheckBox">
<property name="whatsThis">
- <string>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unecrypted.</string>
+ <string>When ZRTP/SRTP is enabled, then Twinkle will try to encrypt the audio of each call you originate or receive. Encryption will only succeed if the remote party has ZRTP/SRTP support enabled. If the remote party does not support ZRTP/SRTP, then the audio channel will stay unencrypted.</string>
</property>
<property name="text">
<string>&amp;Enable ZRTP/SRTP encryption</string>
@@ -4206,23 +4206,23 @@ The values of all SIP headers of the outgoing INVITE are passed in environment v
&lt;p&gt;
If your provider offers the message waiting indication service, then Twinkle can show you when new voice mail messages are waiting. Ask your provider which type of message waiting indication is offered.
&lt;/p&gt;
-&lt;H3&gt;Unsollicited&lt;/H3&gt;
+&lt;H3&gt;Unsolicited&lt;/H3&gt;
&lt;p&gt;
-Asterisk provides unsollicited message waiting indication.
+Asterisk provides unsolicited message waiting indication.
&lt;/p&gt;
-&lt;H3&gt;Sollicited&lt;/H3&gt;
+&lt;H3&gt;Solicited&lt;/H3&gt;
&lt;p&gt;
-Sollicited message waiting indication as specified by RFC 3842.
+Solicited message waiting indication as specified by RFC 3842.
&lt;/p&gt;</string>
</property>
<item>
<property name="text">
- <string>Unsollicited</string>
+ <string>Unsolicited</string>
</property>
</item>
<item>
<property name="text">
- <string>Sollicited</string>
+ <string>Solicited</string>
</property>
</item>
</widget>
@@ -4261,9 +4261,9 @@ Sollicited message waiting indication as specified by RFC 3842.
</layout>
</item>
<item>
- <widget class="QGroupBox" name="mwiSollicitedGroupBox">
+ <widget class="QGroupBox" name="mwiSolicitedGroupBox">
<property name="title">
- <string>Sollicited MWI</string>
+ <string>Solicited MWI</string>
</property>
<layout class="QVBoxLayout">
<item>
@@ -4328,7 +4328,7 @@ Sollicited message waiting indication as specified by RFC 3842.
</size>
</property>
<property name="whatsThis">
- <string>For sollicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</string>
+ <string>For solicited MWI, an endpoint subscribes to the message status for a limited duration. Just before the duration expires, the endpoint should refresh the subscription.</string>
</property>
<property name="maximum">
<number>999999</number>
diff --git a/src/main.cpp b/src/main.cpp
index 20ee366..d8d363f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -241,14 +241,33 @@ int main(int argc, char *argv[]) {
// Take default user profile if there are is no default is sys settings
if (config_files.empty()) config_files.push_back(USER_CONFIG_FILE);
- // Read user configurations.
if (argc >= 2) {
config_files.clear();
- for (int i = 1; i < argc; i++) {
+ for (int i = 1; i < argc && i < 2; i++) {
config_files.push_back(argv[i]);
}
}
+ for (int i = 1; i < argc; i++) {
+ if (strcmp(argv[i], "--sip-port") == 0) {
+ if (i < argc - 1) {
+ i++;
+ sys_config->set_override_sip_port(atoi(argv[i]));
+ } else {
+ cout << argv[0] << ": ";
+ cout << "Port missing for option '--sip-port'\n";
+ }
+ } else if (strcmp(argv[i], "--rtp-port") == 0) {
+ if (i < argc - 1) {
+ i++;
+ sys_config->set_override_rtp_port(atoi(argv[i]));
+ } else {
+ cout << argv[0] << ": ";
+ cout << "Port missing for option '--rtp-port'\n";
+ }
+ }
+ }
+
// Activate users
for (list<string>::iterator i = config_files.begin();
i != config_files.end(); i++)
diff --git a/src/parser/hdr_www_authenticate.cpp b/src/parser/hdr_www_authenticate.cpp
index ae87e99..2deb787 100644
--- a/src/parser/hdr_www_authenticate.cpp
+++ b/src/parser/hdr_www_authenticate.cpp
@@ -17,10 +17,23 @@
#include "hdr_www_authenticate.h"
#include "definitions.h"
+#include "util.h"
t_hdr_www_authenticate::t_hdr_www_authenticate() : t_header("WWW-Authenticate") {}
void t_hdr_www_authenticate::set_challenge(const t_challenge &c) {
+ // The server may send multiple WWW-Authenticate/Proxy-Authenticate
+ // headers, with different digest algorithms, in decreasing order of
+ // preference. We must therefore avoid overwriting any supported
+ // challenge once we've got a hold of one. (We don't simply ignore
+ // all unsupported challenges, however, just in case the server forgot
+ // to include a Digest challenge.)
+ if (populated) {
+ // Don't overwrite the previous challenge if it was supported
+ if (cmp_nocase(challenge.auth_scheme, AUTH_DIGEST) == 0) {
+ return;
+ }
+ }
populated = true;
challenge = c;
}
diff --git a/src/parser/request.cpp b/src/parser/request.cpp
index e20a8fb..a157a94 100644
--- a/src/parser/request.cpp
+++ b/src/parser/request.cpp
@@ -505,9 +505,9 @@ bool t_request::is_valid(bool &fatal, std::string &reason) const {
// RFC 3265 7.2
// Subscription-State header is mandatory
- // As an exception Twinkle allows an unsollicited NOTIFY for MWI
+ // As an exception Twinkle allows an unsolicited NOTIFY for MWI
// without a Subscription-State header. Asterisk sends
- // unsollicited NOTIFY requests.
+ // unsolicited NOTIFY requests.
if (!hdr_to.tag.empty() ||
hdr_event.event_type != SIP_EVENT_MSG_SUMMARY)
{
@@ -519,7 +519,7 @@ bool t_request::is_valid(bool &fatal, std::string &reason) const {
// The Subscription-State header is mandatory.
// However, Asterisk uses an expired draft for sending
- // unsollicitied NOTIFY messages without a Subscription-State
+ // unsolicitied NOTIFY messages without a Subscription-State
// header. As Asterisk is popular, Twinkle allows this.
break;
case REFER:
diff --git a/src/phone.cpp b/src/phone.cpp
index 16abc38..df4f24d 100644
--- a/src/phone.cpp
+++ b/src/phone.cpp
@@ -279,8 +279,6 @@ void t_phone::end_call(void) {
move_line_to_background(lineno1);
move_line_to_background(lineno2);
} else {
- t_rwmutex_reader x(lines_mtx);
-
// Hangup the active line, and make the next
// line active.
int l = active_line;
@@ -341,7 +339,7 @@ void t_phone::refer(const t_url &uri, const string &display) {
void t_phone::refer(unsigned short lineno_from, unsigned short lineno_to)
{
- t_rwmutex_reader x(lines_mtx);
+ t_rwmutex_future_writer x(lines_mtx);
// The nicest transfer is an attended transfer. An attended transfer
// is only possible of the transfer target supports the 'replaces'
@@ -907,7 +905,7 @@ void t_phone::post_process_response(t_response *r, t_tuid tuid, t_tid tid) {
}
void t_phone::recvd_invite(t_request *r, t_tid tid) {
- t_rwmutex_reader x(lines_mtx);
+ t_rwmutex_future_writer x(lines_mtx);
// Check if this INVITE is a retransmission.
// Once the TU sent a 2XX repsonse on an INVITE it has to deal
@@ -1706,7 +1704,7 @@ void t_phone::recvd_notify(t_request *r, t_tid tid) {
}
// REFER notification
- t_rwmutex_reader x(lines_mtx);
+ t_rwmutex_future_writer x(lines_mtx);
for (unsigned short i = 0; i < lines.size(); i++) {
if (lines[i]->match(r)) {
lines[i]->recvd_notify(r, tid);
@@ -1873,7 +1871,7 @@ void t_phone::recvd_refer_permission(bool permission) {
t_phone_user *pu = incoming_refer_data->get_phone_user();
t_user *user_config = pu->get_user_profile();
- t_rwmutex_reader x(lines_mtx);
+ t_rwmutex_future_writer x(lines_mtx);
lines[i]->recvd_refer_permission(permission, r);
if (!permission) {
@@ -3054,7 +3052,7 @@ bool t_phone::add_phone_user(const t_user &user_config, t_user **dup_user) {
// Check if there is already another profile having
// the same contact name.
if (user->get_contact_name() == user_config.get_contact_name() &&
- USER_HOST(user, AUTO_IP4_ADDRESS) == USER_HOST(&user_config, AUTO_IP4_ADDRESS) &&
+ phone->get_ip_sip_locked(user, AUTO_IP4_ADDRESS) == phone->get_ip_sip_locked(&user_config, AUTO_IP4_ADDRESS) &&
(*i)->is_active())
{
*dup_user = user;
@@ -3160,9 +3158,13 @@ t_presence_epa *t_phone::ref_presence_epa(t_user *user) {
}
string t_phone::get_ip_sip(const t_user *user, const string &auto_ip) const {
+ t_rwmutex_reader x(phone_users_mtx);
+ return get_ip_sip_locked(user, auto_ip);
+}
+
+string t_phone::get_ip_sip_locked(const t_user *user, const string &auto_ip) const {
string result;
- t_rwmutex_reader x(phone_users_mtx);
t_phone_user *pu = find_phone_user(user->get_profile_name());
if (pu) {
result = pu->get_ip_sip(auto_ip);
@@ -3322,7 +3324,7 @@ void t_phone::init(void) {
void t_phone::init_extensions(t_user *user_config) {
// Subscribe to MWI
- if (user_config->get_mwi_sollicited()) {
+ if (user_config->get_mwi_solicited()) {
pub_subscribe_mwi(user_config);
}
diff --git a/src/phone.h b/src/phone.h
index f9c18d8..52217eb 100644
--- a/src/phone.h
+++ b/src/phone.h
@@ -130,7 +130,7 @@ private:
bool is_3way; // indicates an acitive 3-way
t_line *line1_3way; // first line in 3-way conf
t_line *line2_3way; // second line in 3-way conf
- mutable t_mutex mutex_3way;
+ mutable t_recursive_mutex mutex_3way;
// Call transfer data. When a REFER comes in, the user has
// to give permission before the triggered INVITE can be sent.
@@ -256,6 +256,8 @@ protected:
*/
t_line *find_line_in_dialog_request(t_request *r, t_tid tid);
+ // Variation of get_ip_sip() for when phone_users_mtx is already locked
+ string get_ip_sip_locked(const t_user *user, const string &auto_ip) const;
// Events
void recvd_provisional(t_response *r, t_tuid tuid, t_tid tid);
void recvd_success(t_response *r, t_tuid tuid, t_tid tid);
diff --git a/src/phone_user.cpp b/src/phone_user.cpp
index c52f396..fded2b5 100644
--- a/src/phone_user.cpp
+++ b/src/phone_user.cpp
@@ -769,10 +769,10 @@ void t_phone_user::handle_response_register(t_response *r, bool &re_register) {
phone->start_timer(PTMR_TCP_PING, this);
}
- // Registration succeeded. If sollicited MWI is provisioned
+ // Registration succeeded. If solicited MWI is provisioned
// and no MWI subscription is established yet, then subscribe
// to MWI.
- if (user_config->get_mwi_sollicited() && !mwi_auto_resubscribe) {
+ if (user_config->get_mwi_solicited() && !mwi_auto_resubscribe) {
subscribe_mwi();
}
@@ -978,9 +978,9 @@ bool t_phone_user::is_mwi_terminated(void) const {
return mwi_dialog == NULL;
}
-void t_phone_user::handle_mwi_unsollicited(t_request *r, t_tid tid) {
- if (user_config->get_mwi_sollicited()) {
- // Unsollicited MWI is not supported
+void t_phone_user::handle_mwi_unsolicited(t_request *r, t_tid tid) {
+ if (user_config->get_mwi_solicited()) {
+ // Unsolicited MWI is not supported
t_response *resp = r->create_response(R_403_FORBIDDEN);
phone->send_response(resp, 0, tid);
MEMMAN_DELETE(resp);
@@ -1186,13 +1186,13 @@ void t_phone_user::recvd_notify(t_request *r, t_tid tid) {
bool partial_match = false;
if (r->hdr_to.tag.empty()) {
- // Unsollicited NOTIFY
- handle_mwi_unsollicited(r, tid);
+ // Unsolicited NOTIFY
+ handle_mwi_unsolicited(r, tid);
return;
}
if (mwi_dialog && mwi_dialog->match_request(r, partial_match)) {
- // Sollicited NOTIFY
+ // Solicited NOTIFY
mwi_dialog->recvd_request(r, 0, tid);
cleanup_mwi_dialog();
return;
@@ -1499,7 +1499,7 @@ bool t_phone_user::get_last_reg_failed(void) const {
string t_phone_user::get_ip_sip(const string &auto_ip) const {
if (stun_public_ip_sip) return h_ip2str(stun_public_ip_sip);
- if (user_config->get_use_nat_public_ip()) return user_config->get_nat_public_ip();
+ if (user_config->get_use_nat_public_ip()) return h_ip2str(gethostbyname(user_config->get_nat_public_ip()));
if (LOCAL_IP == AUTO_IP4_ADDRESS) return auto_ip;
return LOCAL_IP;
}
diff --git a/src/phone_user.h b/src/phone_user.h
index 6e76ec8..50f86d6 100644
--- a/src/phone_user.h
+++ b/src/phone_user.h
@@ -280,11 +280,11 @@ public:
bool is_mwi_terminated(void) const;
/**
- * Process an unsollicited NOTIFY for MWI.
+ * Process an unsolicited NOTIFY for MWI.
* @param r [in] The NOTIFY request.
* @param tid [in] Transaction identifier of the NOTIFY transaction.
*/
- void handle_mwi_unsollicited(t_request *r, t_tid tid);
+ void handle_mwi_unsolicited(t_request *r, t_tid tid);
//@}
/** @name Presence */
diff --git a/src/session.cpp b/src/session.cpp
index ae816fa..2007791 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -44,7 +44,10 @@ void t_session::set_recvd_codecs(t_sdp *sdp) {
t_audio_codec ac = sdp->get_codec(SDP_AUDIO, *i);
if (ac > CODEC_UNSUPPORTED) {
recvd_codecs.push_back(ac);
- send_ac2payload[ac] = *i;
+ // Don't overwrite any previous mapping for this codec
+ if (!send_ac2payload.count(ac)) {
+ send_ac2payload[ac] = *i;
+ }
send_payload2ac[*i] = ac;
}
}
diff --git a/src/sockets/dnssrv.cpp b/src/sockets/dnssrv.cpp
index 38cd61d..246bf02 100644
--- a/src/sockets/dnssrv.cpp
+++ b/src/sockets/dnssrv.cpp
@@ -11,6 +11,7 @@
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
+#include "twinkle_config.h"
#include <resolv.h>
#include <errno.h>
#include <stdlib.h>
diff --git a/src/sys_settings.cpp b/src/sys_settings.cpp
index 32d215d..b4d6bf1 100644
--- a/src/sys_settings.cpp
+++ b/src/sys_settings.cpp
@@ -72,11 +72,15 @@ using namespace utils;
// GUI settings
#define FLD_GUI_USE_SYSTRAY "gui_use_systray"
#define FLD_GUI_HIDE_ON_CLOSE "gui_hide_on_close"
+#define FLD_GUI_SHOW_INCOMING_POPUP "gui_show_incoming_popup"
#define FLD_GUI_AUTO_SHOW_INCOMING "gui_auto_show_incoming"
#define FLD_GUI_AUTO_SHOW_TIMEOUT "gui_auto_show_timeout"
#define FLD_GUI_BROWSER_CMD "gui_browser_cmd"
#define FLD_GUI_SHOW_CALL_OSD "gui_show_call_osd"
+// Inhibit idle session
+#define FLD_INHIBIT_IDLE_SESSION "inhibit_idle_session"
+
// Address book settings
#define FLD_AB_SHOW_SIP_ONLY "ab_show_sip_only"
#define FLD_AB_LOOKUP_NAME "ab_lookup_name"
@@ -261,9 +265,12 @@ t_sys_settings::t_sys_settings() {
gui_use_systray = true;
gui_hide_on_close = true;
+ gui_show_incoming_popup = true;
gui_auto_show_incoming = false;
gui_auto_show_timeout = 10;
gui_show_call_osd = true;
+
+ inhibit_idle_session = false;
ab_show_sip_only = false;
ab_lookup_name = true;
@@ -410,6 +417,11 @@ bool t_sys_settings::get_gui_use_systray(void) const {
return gui_use_systray;
}
+bool t_sys_settings::get_gui_show_incoming_popup(void) const {
+ t_mutex_guard guard(mtx_sys);
+ return gui_show_incoming_popup;
+}
+
bool t_sys_settings::get_gui_auto_show_incoming(void) const {
t_mutex_guard guard(mtx_sys);
return gui_auto_show_incoming;
@@ -430,6 +442,11 @@ string t_sys_settings::get_gui_browser_cmd(void) const {
return gui_browser_cmd;
}
+bool t_sys_settings::get_inhibit_idle_session(void) const {
+ t_mutex_guard guard(mtx_sys);
+ return inhibit_idle_session;
+}
+
bool t_sys_settings::get_ab_show_sip_only(void) const {
bool result;
mtx_sys.lock();
@@ -645,6 +662,7 @@ bool t_sys_settings::get_show_buddy_list(void) const {
}
bool t_sys_settings::get_gui_show_call_osd() const {
+ t_mutex_guard guard(mtx_sys);
return gui_show_call_osd;
}
@@ -764,6 +782,11 @@ void t_sys_settings::set_gui_hide_on_close(bool b) {
gui_hide_on_close = b;
}
+void t_sys_settings::set_gui_show_incoming_popup(bool b) {
+ t_mutex_guard guard(mtx_sys);
+ gui_show_incoming_popup = b;
+}
+
void t_sys_settings::set_gui_auto_show_incoming(bool b) {
t_mutex_guard guard(mtx_sys);
gui_auto_show_incoming = b;
@@ -779,6 +802,11 @@ void t_sys_settings::set_gui_browser_cmd(const string &s) {
gui_browser_cmd = s;
}
+void t_sys_settings::set_inhibit_idle_session(bool b) {
+ t_mutex_guard guard(mtx_sys);
+ inhibit_idle_session = b;
+}
+
void t_sys_settings::set_ab_show_sip_only(bool b) {
mtx_sys.lock();
ab_show_sip_only = b;
@@ -982,8 +1010,7 @@ void t_sys_settings::set_warn_hide_user(bool b) {
}
void t_sys_settings::set_gui_show_call_osd(bool b) {
- // Using mutexes in primitive type getters/setters doesn't make any sense.
- // TODO: remove t_mutex_guard from other getters/setters like this one.
+ t_mutex_guard guard(mtx_sys);
gui_show_call_osd = b;
}
@@ -1588,6 +1615,8 @@ bool t_sys_settings::read_config(string &error_msg) {
gui_use_systray = yesno2bool(value);
} else if (parameter == FLD_GUI_HIDE_ON_CLOSE) {
gui_hide_on_close = yesno2bool(value);
+ } else if (parameter == FLD_GUI_SHOW_INCOMING_POPUP) {
+ gui_show_incoming_popup = yesno2bool(value);
} else if (parameter == FLD_GUI_AUTO_SHOW_INCOMING) {
gui_auto_show_incoming = yesno2bool(value);
} else if (parameter == FLD_GUI_AUTO_SHOW_TIMEOUT) {
@@ -1596,6 +1625,8 @@ bool t_sys_settings::read_config(string &error_msg) {
gui_browser_cmd = value;
} else if (parameter == FLD_GUI_SHOW_CALL_OSD) {
gui_show_call_osd = yesno2bool(value);
+ } else if (parameter == FLD_INHIBIT_IDLE_SESSION) {
+ inhibit_idle_session = yesno2bool(value);
} else if (parameter == FLD_AB_SHOW_SIP_ONLY) {
ab_show_sip_only = yesno2bool(value);
} else if (parameter == FLD_AB_LOOKUP_NAME) {
@@ -1732,11 +1763,16 @@ bool t_sys_settings::write_config(string &error_msg) {
config << "# GUI\n";
config << FLD_GUI_USE_SYSTRAY << '=' << bool2yesno(gui_use_systray) << endl;
config << FLD_GUI_HIDE_ON_CLOSE << '=' << bool2yesno(gui_hide_on_close) << endl;
+ config << FLD_GUI_SHOW_INCOMING_POPUP << '=' << bool2yesno(gui_show_incoming_popup) << endl;
config << FLD_GUI_AUTO_SHOW_INCOMING << '=' << bool2yesno(gui_auto_show_incoming) << endl;
config << FLD_GUI_AUTO_SHOW_TIMEOUT << '=' << gui_auto_show_timeout << endl;
config << FLD_GUI_BROWSER_CMD << '=' << gui_browser_cmd << endl;
config << FLD_GUI_SHOW_CALL_OSD << '=' << bool2yesno(gui_show_call_osd) << endl;
config << endl;
+
+ // Write inhibit idle session settings
+ config << FLD_INHIBIT_IDLE_SESSION << '=' << bool2yesno(inhibit_idle_session) << endl;
+ config << endl;
// Write address book settings
config << "# Address book\n";
diff --git a/src/sys_settings.h b/src/sys_settings.h
index 232c4f9..c118181 100644
--- a/src/sys_settings.h
+++ b/src/sys_settings.h
@@ -147,6 +147,9 @@ private:
bool gui_use_systray;
bool gui_hide_on_close;
+ /** Show popup on incoming call */
+ bool gui_show_incoming_popup;
+
/** Show main window on incoming call after a few seconds */
bool gui_auto_show_incoming;
int gui_auto_show_timeout;
@@ -156,6 +159,9 @@ private:
string gui_browser_cmd;
//@}
+ // Inhibit idle session
+ bool inhibit_idle_session;
+
// Address book settings
bool ab_show_sip_only;
bool ab_lookup_name;
@@ -291,10 +297,12 @@ public:
bool get_log_show_debug(void) const;
bool get_gui_use_systray(void) const;
bool get_gui_hide_on_close(void) const;
+ bool get_gui_show_incoming_popup(void) const;
bool get_gui_auto_show_incoming(void) const;
int get_gui_auto_show_timeout(void) const;
string get_gui_browser_cmd(void) const;
bool get_gui_show_call_osd() const;
+ bool get_inhibit_idle_session() const;
bool get_ab_show_sip_only(void) const;
bool get_ab_lookup_name(void) const;
bool get_ab_override_display(void) const;
@@ -347,10 +355,12 @@ public:
void set_log_show_debug(bool b);
void set_gui_use_systray(bool b);
void set_gui_hide_on_close(bool b);
+ void set_gui_show_incoming_popup(bool b);
void set_gui_auto_show_incoming(bool b);
void set_gui_auto_show_timeout(int timeout);
void set_gui_browser_cmd(const string &s);
void set_gui_show_call_osd(bool b);
+ void set_inhibit_idle_session(bool b);
void set_ab_show_sip_only(bool b);
void set_ab_lookup_name(bool b);
void set_ab_override_display(bool b);
diff --git a/src/threads/mutex.cpp b/src/threads/mutex.cpp
index 744cd7b..4c8c078 100644
--- a/src/threads/mutex.cpp
+++ b/src/threads/mutex.cpp
@@ -94,7 +94,13 @@ t_mutex_guard::~t_mutex_guard() {
// t_rwmutex
///////////////////////////
-t_rwmutex::t_rwmutex()
+// Equivalent of an invalid thread ID, to be used when initializing t_rwmutex
+// or when releasing upgrade ownership; the use of pthread_self() is only to
+// provide a dummy value of the appropriate type.
+static const optional_pthread_t invalid_thread_id = { false, pthread_self() };
+
+t_rwmutex::t_rwmutex() :
+ _up_mutex_thread( invalid_thread_id )
{
int ret = pthread_rwlock_init(&_lock, nullptr);
if (ret != 0) throw string(
@@ -106,21 +112,167 @@ t_rwmutex::~t_rwmutex()
pthread_rwlock_destroy(&_lock);
}
-void t_rwmutex::lockRead()
+void t_rwmutex::getUpgradeOwnership()
+{
+ _up_mutex.lock();
+ _up_mutex_thread = { true, pthread_self() };
+}
+
+void t_rwmutex::releaseUpgradeOwnership()
+{
+ _up_mutex_thread = invalid_thread_id;
+ _up_mutex.unlock();
+}
+
+bool t_rwmutex::isUpgradeOwnershipOurs() const
+{
+ // Note that we don't need a mutex over _up_mutex_thread, being atomic
+ // is enough for our purposes. (We don't care about *who* owns
+ // _up_mutex, only about whether or not *we* own it, a fact which only
+ // our own thread can modify.)
+ optional_pthread_t lockOwner = _up_mutex_thread;
+ return lockOwner.has_value && pthread_equal(lockOwner.value, pthread_self());
+}
+
+void t_rwmutex::_lockRead()
{
int err = pthread_rwlock_rdlock(&_lock);
if (err != 0)
throw std::logic_error("Mutex lock failed");
}
-void t_rwmutex::lockWrite()
+void t_rwmutex::_lockWrite()
{
int err = pthread_rwlock_wrlock(&_lock);
if (err != 0)
throw std::logic_error("Mutex lock failed");
}
-void t_rwmutex::unlock()
+void t_rwmutex::_unlock()
{
pthread_rwlock_unlock(&_lock);
}
+
+void t_rwmutex::lockRead()
+{
+ if (isUpgradeOwnershipOurs()) {
+ throw std::logic_error("Acquiring read lock while holding update/write lock is not supported");
+ }
+
+ _lockRead();
+}
+
+void t_rwmutex::lockUpdate()
+{
+ if (isUpgradeOwnershipOurs()) {
+ throw std::logic_error("Acquiring update lock while holding update/write lock is not supported");
+ }
+
+ getUpgradeOwnership();
+ _lockRead();
+}
+
+void t_rwmutex::lockWrite()
+{
+ if (isUpgradeOwnershipOurs()) {
+ throw std::logic_error("Acquiring write lock while holding update/write lock is not supported");
+ }
+
+ getUpgradeOwnership();
+ _lockWrite();
+}
+
+void t_rwmutex::unlock()
+{
+ _unlock();
+
+ if (isUpgradeOwnershipOurs()) {
+ releaseUpgradeOwnership();
+ }
+}
+
+void t_rwmutex::upgradeLock()
+{
+ if (!isUpgradeOwnershipOurs()) {
+ throw std::logic_error("Attempting to upgrade a lock without upgrade ownership");
+ }
+
+ _unlock();
+ _lockWrite();
+}
+
+void t_rwmutex::downgradeLock()
+{
+ if (!isUpgradeOwnershipOurs()) {
+ throw std::logic_error("Attempting to downgrade a lock without upgrade ownership");
+ }
+
+ _unlock();
+ _lockRead();
+}
+
+///////////////////////////
+// t_rwmutex_guard
+///////////////////////////
+
+t_rwmutex_guard::t_rwmutex_guard(t_rwmutex& mutex) :
+ _mutex(mutex),
+ _previously_owned_upgrade(_mutex.isUpgradeOwnershipOurs())
+{
+}
+
+t_rwmutex_reader::t_rwmutex_reader(t_rwmutex& mutex) :
+ t_rwmutex_guard(mutex)
+{
+ // No-op if we are nested within a writer/future_writer guard
+ if (!_previously_owned_upgrade) {
+ _mutex.lockRead();
+ }
+}
+
+t_rwmutex_reader::~t_rwmutex_reader()
+{
+ // No-op if we are nested within a writer/future_writer guard
+ if (!_previously_owned_upgrade) {
+ _mutex.unlock();
+ }
+}
+
+t_rwmutex_future_writer::t_rwmutex_future_writer(t_rwmutex& mutex) :
+ t_rwmutex_guard(mutex)
+{
+ // No-op if we are nested within a future_writer guard
+ if (!_previously_owned_upgrade) {
+ _mutex.lockUpdate();
+ }
+}
+
+t_rwmutex_future_writer::~t_rwmutex_future_writer() {
+ // No-op if we are nested within a future_writer guard
+ if (!_previously_owned_upgrade) {
+ _mutex.unlock();
+ }
+}
+
+t_rwmutex_writer::t_rwmutex_writer(t_rwmutex& mutex) :
+ t_rwmutex_guard(mutex)
+{
+ if (_previously_owned_upgrade) {
+ // Writer nested inside a future_writer: upgrade lock
+ _mutex.upgradeLock();
+ } else {
+ // Stand-alone writer guard
+ _mutex.lockWrite();
+ }
+}
+
+t_rwmutex_writer::~t_rwmutex_writer()
+{
+ if (_previously_owned_upgrade) {
+ // We were nested within a future_writer guard, so return
+ // the mutex to its previous state
+ _mutex.downgradeLock();
+ } else {
+ _mutex.unlock();
+ }
+}
diff --git a/src/threads/mutex.h b/src/threads/mutex.h
index 1fc07d1..0d45a5f 100644
--- a/src/threads/mutex.h
+++ b/src/threads/mutex.h
@@ -21,6 +21,7 @@
#include <errno.h>
#include <pthread.h>
// #include <iostream>
+#include <atomic>
/**
* @file
@@ -83,44 +84,104 @@ public:
~t_mutex_guard();
};
+
+// Read-write-update lock
+//
+// Read-write lock with an additional "update" type of lock, which can later
+// be upgraded to "write" (and downgraded back to "update" again). An update
+// lock can co-exist with other read locks, but only one update lock can be
+// held at any time, representing ownership of upgrade rights.
+//
+// See https://stackoverflow.com/a/18785300 for details and further references.
+//
+// Note that our version is rather simplistic, and does not allow downgrading
+// from update/write to read.
+
+// A cheap substitute for std::optional<pthread_t>, only available in C++14.
+// Unfortunately, POSIX.1-2004 no longer requires pthread_t to be an arithmetic
+// type, so we can't simply use 0 as an (unofficial) invalid thread ID.
+struct optional_pthread_t {
+ bool has_value;
+ pthread_t value;
+};
+
class t_rwmutex {
protected:
+ // Standard read-write lock
pthread_rwlock_t _lock;
+ // Mutex for upgrade ownership
+ t_mutex _up_mutex;
+ // Thread ID that currently owns the _up_mutex lock, if any
+ std::atomic<optional_pthread_t> _up_mutex_thread;
+
+ // Get/release upgrade ownership
+ void getUpgradeOwnership();
+ void releaseUpgradeOwnership();
+
+ // Internal methods to manipulate _lock directly
+ void _lockRead();
+ void _lockWrite();
+ void _unlock();
public:
t_rwmutex();
~t_rwmutex();
+ // Returns true if the calling thread currently owns the _up_mutex lock
+ bool isUpgradeOwnershipOurs() const;
+
+ // The usual methods for obtaining/releasing locks
void lockRead();
+ void lockUpdate();
void lockWrite();
void unlock();
+
+ // Upgrade an update lock to a write lock, or downgrade in the
+ // opposite direction. Note that this does not count as an additional
+ // lock, so only one unlock() call will be needed at the end.
+ void upgradeLock();
+ void downgradeLock();
};
-class t_rwmutex_reader {
-private:
+
+// Equivalent of t_mutex_guard for t_rwmutex
+//
+// These can be nested as indicated below. Note that nesting a weaker guard
+// will not downgrade the lock; for example, a Reader guard within a Writer
+// guard will maintain the write lock.
+
+// Base (abstract) class
+class t_rwmutex_guard {
+protected:
+ // The lock itself
t_rwmutex& _mutex;
+
+ // Whether or not we had upgrade ownership beforehand, indicating that
+ // we are nested within the scope of a writer/future_writer guard
+ bool _previously_owned_upgrade;
+
+ // A protected constructor to keep this class abstract
+ t_rwmutex_guard(t_rwmutex& mutex);
+};
+
+// Reader: Can be nested within the scope of any guard
+class t_rwmutex_reader : public t_rwmutex_guard {
public:
- t_rwmutex_reader(t_rwmutex& mutex) : _mutex(mutex) {
- // std::cout << "mtx rd lock " << (void*)&_mutex << std::endl;
- _mutex.lockRead();
- }
- ~t_rwmutex_reader() {
- // std::cout << "mtx rd unlock " << (void*)&_mutex << std::endl;
- _mutex.unlock();
- }
+ t_rwmutex_reader(t_rwmutex& mutex);
+ ~t_rwmutex_reader();
};
-class t_rwmutex_writer {
-private:
- t_rwmutex& _mutex;
+// Future writer: Can be nested within the scope of a future_writer guard
+class t_rwmutex_future_writer : public t_rwmutex_guard {
+public:
+ t_rwmutex_future_writer(t_rwmutex& mutex);
+ ~t_rwmutex_future_writer();
+};
+
+// Writer: Can be nested within the scope of a future_writer guard
+class t_rwmutex_writer : public t_rwmutex_guard {
public:
- t_rwmutex_writer(t_rwmutex& mutex) : _mutex(mutex) {
- // std::cout << "mtx wr lock " << (void*)&_mutex << std::endl;
- _mutex.lockWrite();
- }
- ~t_rwmutex_writer() {
- // std::cout << "mtx wr unlock " << (void*)&_mutex << std::endl;
- _mutex.unlock();
- }
+ t_rwmutex_writer(t_rwmutex& mutex);
+ ~t_rwmutex_writer();
};
diff --git a/src/user.cpp b/src/user.cpp
index 588bb55..16a4c3b 100644
--- a/src/user.cpp
+++ b/src/user.cpp
@@ -163,7 +163,7 @@ extern t_phone *phone;
#define FLD_ZRTP_SEND_IF_SUPPORTED "zrtp_send_if_supported"
// MWI
-#define FLD_MWI_SOLLICITED "mwi_sollicited"
+#define FLD_MWI_SOLICITED "mwi_solicited"
#define FLD_MWI_USER "mwi_user"
#define FLD_MWI_SERVER "mwi_server"
#define FLD_MWI_VIA_PROXY "mwi_via_proxy"
@@ -459,7 +459,7 @@ t_user::t_user() {
zrtp_goclear_warning = true;
zrtp_sdp = true;
zrtp_send_if_supported = false;
- mwi_sollicited = false;
+ mwi_solicited = false;
mwi_user.clear();
mwi_via_proxy = false;
mwi_subscription_time = 3600;
@@ -578,7 +578,7 @@ t_user::t_user(const t_user &u) {
zrtp_goclear_warning = u.zrtp_goclear_warning;
zrtp_sdp = u.zrtp_sdp;
zrtp_send_if_supported = u.zrtp_send_if_supported;
- mwi_sollicited = u.mwi_sollicited;
+ mwi_solicited = u.mwi_solicited;
mwi_user = u.mwi_user;
mwi_server = u.mwi_server;
mwi_via_proxy = u.mwi_via_proxy;
@@ -1380,10 +1380,10 @@ bool t_user::get_zrtp_send_if_supported(void) const {
return result;
}
-bool t_user::get_mwi_sollicited(void) const {
+bool t_user::get_mwi_solicited(void) const {
bool result;
mtx_user.lock();
- result = mwi_sollicited;
+ result = mwi_solicited;
mtx_user.unlock();
return result;
}
@@ -2070,9 +2070,9 @@ void t_user::set_zrtp_send_if_supported(bool b) {
mtx_user.unlock();
}
-void t_user::set_mwi_sollicited(bool b) {
+void t_user::set_mwi_solicited(bool b) {
mtx_user.lock();
- mwi_sollicited = b;
+ mwi_solicited = b;
mtx_user.unlock();
}
@@ -2524,8 +2524,8 @@ bool t_user::read_config(const string &filename, string &error_msg) {
zrtp_sdp = yesno2bool(value);
} else if (parameter == FLD_ZRTP_SEND_IF_SUPPORTED) {
zrtp_send_if_supported = yesno2bool(value);
- } else if (parameter == FLD_MWI_SOLLICITED) {
- mwi_sollicited = yesno2bool(value);
+ } else if (parameter == FLD_MWI_SOLICITED) {
+ mwi_solicited = yesno2bool(value);
} else if (parameter == FLD_MWI_USER) {
mwi_user = value;
} else if (parameter == FLD_MWI_SERVER) {
@@ -2869,7 +2869,7 @@ bool t_user::write_config(const string &filename, string &error_msg) {
// Write MWI settings
config << "# MWI\n";
- config << FLD_MWI_SOLLICITED << '=' << bool2yesno(mwi_sollicited) << endl;
+ config << FLD_MWI_SOLICITED << '=' << bool2yesno(mwi_solicited) << endl;
config << FLD_MWI_USER << '=' << mwi_user << endl;
if (mwi_server.is_valid()) {
config << FLD_MWI_SERVER << '=' << mwi_server.encode_noscheme() << endl;
diff --git a/src/user.h b/src/user.h
index 93921c4..bbd33fa 100644
--- a/src/user.h
+++ b/src/user.h
@@ -487,10 +487,10 @@ private:
bool zrtp_send_if_supported;
// MWI
- // Indicate if MWI is sollicited or unsollicited.
- // RFC 3842 specifies that MWI must be sollicited (SUBSCRIBE).
- // Asterisk however only supported non-standard unsollicited MWI.
- bool mwi_sollicited;
+ // Indicate if MWI is solicited or unsolicited.
+ // RFC 3842 specifies that MWI must be solicited (SUBSCRIBE).
+ // Asterisk however only supported non-standard unsolicited MWI.
+ bool mwi_solicited;
// User name for subscribing to the mailbox
string mwi_user;
@@ -659,7 +659,7 @@ public:
bool get_zrtp_goclear_warning(void) const;
bool get_zrtp_sdp(void) const;
bool get_zrtp_send_if_supported(void) const;
- bool get_mwi_sollicited(void) const;
+ bool get_mwi_solicited(void) const;
string get_mwi_user(void) const;
t_url get_mwi_server(void) const;
bool get_mwi_via_proxy(void) const;
@@ -778,7 +778,7 @@ public:
void set_zrtp_goclear_warning(bool b);
void set_zrtp_sdp(bool b);
void set_zrtp_send_if_supported(bool b);
- void set_mwi_sollicited(bool b);
+ void set_mwi_solicited(bool b);
void set_mwi_user(const string &user);
void set_mwi_server(const t_url &url);
void set_mwi_via_proxy(bool b);
diff --git a/src/userintf.cpp b/src/userintf.cpp
index f75a140..5268a7c 100644
--- a/src/userintf.cpp
+++ b/src/userintf.cpp
@@ -17,8 +17,15 @@
#include <iostream>
#include <cstdlib>
+#include <errno.h>
+#include <fcntl.h>
#include <readline/readline.h>
#include <readline/history.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string>
+#include <sys/select.h>
+#include <unistd.h>
#include "address_book.h"
#include "events.h"
#include "line.h"
@@ -86,22 +93,37 @@ char * tw_command_generator (const char *text, int state)
return ((char *)NULL);
}
-char *tw_readline(const char *prompt)
+// Ugly hack to allow invoking methods on our object from within a C-style
+// callback function. This relies on the object being a singleton.
+static t_userintf *cb_user_intf;
+// Callback method (a.k.a. "line handler") that will be invoked by Readline
+// once a complete line has been read.
+static void tw_readline_cb(char *line)
{
- static char *line = NULL;
-
if (!line) {
+ // EOF
+ cout << endl;
+ // Calling this from the line handler prevents one extra
+ // prompt from being displayed. (The duplicate call later on
+ // will not be an issue.)
+ rl_callback_handler_remove();
+
+ cb_user_intf->cmd_quit();
+ } else {
+ if (*line) {
+ add_history(line);
+ cb_user_intf->exec_command(line);
+ }
free(line);
- line = NULL;
- }
-
- line = readline(prompt);
-
- if (line && *line) {
- add_history(line);
}
-
- return line;
+}
+
+// SIGWINCH handler to help us relay that information to Readline
+static int sigwinch_received;
+static void sigwinch_handler(int signum)
+{
+ sigwinch_received = 1;
+ signal(SIGWINCH, sigwinch_handler);
}
/////////////////////////////
@@ -1463,6 +1485,10 @@ bool t_userintf::exec_quit(const list<string> command_list) {
void t_userintf::do_quit(void) {
end_interface = true;
+ // Signal the main thread that it should interrupt Readline
+ if (break_readline_loop_pipe[1] != -1) {
+ write(break_readline_loop_pipe[1], "X", 1);
+ }
}
bool t_userintf::exec_help(const list<string> command_list) {
@@ -2200,22 +2226,71 @@ void t_userintf::run(void) {
// Initialize phone functions
phone->init();
+ // Set up the self-pipe used to interrupt Readline
+ if (pipe(break_readline_loop_pipe) == 0) {
+ // Mark both file descriptors as close-on-exec for good measure
+ for (int i = 0; i < 2; i++) {
+ int flags = fcntl(break_readline_loop_pipe[i], F_GETFD);
+ if (flags != -1) {
+ flags |= FD_CLOEXEC;
+ fcntl(break_readline_loop_pipe[i], F_SETFD, flags);
+ }
+ }
+ } else {
+ // Not fatal -- we just won't be able to interrupt Readline
+ string msg("pipe() failed: ");
+ msg += get_error_str(errno);
+ ui->cb_show_msg(msg, MSG_WARNING);
+
+ // Mark both file descriptors as invalid
+ break_readline_loop_pipe[0] = -1;
+ break_readline_loop_pipe[1] = -1;
+ }
+
//Initialize GNU readline functions
rl_attempted_completion_function = tw_completion;
using_history();
read_history(sys_config->get_history_file().c_str());
stifle_history(CLI_MAX_HISTORY_LENGTH);
+ // Additional stuff for using the Readline callback interface
+ cb_user_intf = this;
+ signal(SIGWINCH, sigwinch_handler);
+ rl_callback_handler_install(CLI_PROMPT, tw_readline_cb);
while (!end_interface) {
- char *command_line = tw_readline(CLI_PROMPT);
- if (!command_line){
- cout << endl;
+ // File descriptors we are watching (stdin + self-pipe)
+ fd_set fds;
+ FD_ZERO(&fds);
+ FD_SET(fileno(rl_instream), &fds);
+ if (break_readline_loop_pipe[0] != -1) {
+ FD_SET(break_readline_loop_pipe[0], &fds);
+ }
+
+ int ret = select(FD_SETSIZE, &fds, NULL, NULL, NULL);
+ if ((ret == -1) && (errno != EINTR)) {
+ string msg("select() failed: ");
+ msg += get_error_str(errno);
+ ui->cb_show_msg(msg, MSG_CRITICAL);
break;
}
-
- exec_command(command_line);
+ // Relay any SIGWINCH to Readline
+ if (sigwinch_received) {
+ rl_resize_terminal();
+ sigwinch_received = 0;
+ }
+ if (ret == -1) {
+ // errno == EINTR
+ continue;
+ }
+
+ if (FD_ISSET(fileno(rl_instream), &fds)) {
+ rl_callback_read_char();
+ }
}
+
+ rl_callback_handler_remove();
+ signal(SIGWINCH, SIG_DFL);
// Terminate phone functions
write_history(sys_config->get_history_file().c_str());
diff --git a/src/userintf.h b/src/userintf.h
index 48a4c50..2c6d96d 100644
--- a/src/userintf.h
+++ b/src/userintf.h
@@ -62,6 +62,7 @@ protected:
private:
bool end_interface; // indicates if interface loop should quit
+ int break_readline_loop_pipe[2]; // pipe used to interrupt Readline
list<string> all_commands; // list of all commands
t_tone_gen *tone_gen; // tone generator for ringing
diff --git a/src/util.cpp b/src/util.cpp
index 29aae39..60564a1 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -742,10 +742,10 @@ string to_printable(const string &s) {
}
string get_error_str(int errnum) {
-#if HAVE_STRERROR_R
+#ifdef HAVE_STRERROR_R
char buf[81];
memset(buf, 0, sizeof(buf));
-#if STRERROR_R_CHAR_P
+#ifdef STRERROR_R_CHAR_P
string errmsg(strerror_r(errnum, buf, sizeof(buf)-1));
#else
string errmsg;
diff --git a/twinkle_config.h.in b/twinkle_config.h.in
index 3928565..53a0426 100644
--- a/twinkle_config.h.in
+++ b/twinkle_config.h.in
@@ -1,14 +1,21 @@
#cmakedefine WITH_DIAMONDCARD
#cmakedefine HAVE_SPEEX
#cmakedefine HAVE_ILBC
+#cmakedefine HAVE_ILBC_CPP
#cmakedefine HAVE_ZRTP
#cmakedefine HAVE_BCG729
+#cmakedefine HAVE_BCG729_ANNEX_B
#cmakedefine HAVE_GSM
#cmakedefine HAVE_UNISTD_H
#cmakedefine HAVE_LINUX_TYPES_H
#cmakedefine HAVE_LINUX_ERRQUEUE_H
+#cmakedefine HAVE_STRERROR_R
+#cmakedefine STRERROR_R_CHAR_P
+#cmakedefine HAVE_RES_INIT
+#cmakedefine WORDS_BIGENDIAN
#cmakedefine HAVE_LIBASOUND
+#cmakedefine HAVE_DBUS
#define VERSION "${PRODUCT_VERSION}"
#define VERSION_DATE "${PRODUCT_DATE}"