]> sjero.net Git - linphone/commitdiff
Wizard merged
authorSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Wed, 1 Feb 2012 09:33:49 +0000 (10:33 +0100)
committerSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Wed, 1 Feb 2012 09:34:31 +0000 (10:34 +0100)
69 files changed:
.cproject
.gitignore
Makefile.am
NEWS
README.macos
README.mingw
build/android/Android.mk
configure.ac
console/commands.c
console/linphonec.c
coreapi/Makefile.am
coreapi/TunnelManager.cc [new file with mode: 0644]
coreapi/TunnelManager.hh [new file with mode: 0644]
coreapi/callbacks.c
coreapi/conference.c
coreapi/help/Makefile.am
coreapi/help/doxygen.dox
coreapi/linphone_tunnel.cc [new file with mode: 0644]
coreapi/linphone_tunnel.h [new file with mode: 0644]
coreapi/linphonecall.c
coreapi/linphonecore.c
coreapi/linphonecore.h
coreapi/linphonecore_jni.cc
coreapi/lpconfig.c
coreapi/misc.c
coreapi/offeranswer.c
coreapi/private.h
coreapi/proxy.c
coreapi/sal.h
coreapi/sal_eXosip2.c
coreapi/sal_eXosip2.h
coreapi/sal_eXosip2_sdp.c
gtk/Makefile.am
gtk/calllogs.c
gtk/conference.c
gtk/friendlist.c
gtk/incall_view.c
gtk/linphone.h
gtk/main.c
gtk/main.ui
gtk/parameters.ui
gtk/propertybox.c
gtk/singleinstance.c
gtk/sip_account.ui
gtk/tunnel_config.ui [new file with mode: 0644]
java/common/org/linphone/core/LinphoneCall.java
java/common/org/linphone/core/LinphoneCallParams.java
java/common/org/linphone/core/LinphoneCore.java
linphone.spec.in
m4/exosip.m4
mediastreamer2
oRTP
po/POTFILES.in
po/cs.po
po/de.po
po/es.po
po/fr.po
po/hu.po
po/it.po
po/ja.po
po/nb_NO.po
po/nl.po
po/pl.po
po/pt_BR.po
po/ru.po
po/sv.po
po/zh_CN.po
po/zh_TW.po
share/rings/toy-mono.wav

index 82c15ae499315c6af3ba4dc64486bed75d2acaf5..0b797781c283b64c0be17772b585dc098eb8a968 100644 (file)
--- a/.cproject
+++ b/.cproject
                        <storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
                        <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
                                <buildTargets>
-                                       <target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+                                       <target name="test" path="mediastreamer2/tests" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
                                                <buildCommand>make</buildCommand>
                                                <buildArguments/>
+                                               <buildTarget>all</buildTarget>
+                                               <stopOnError>true</stopOnError>
+                                               <useDefaultCommand>true</useDefaultCommand>
+                                               <runAllBuilders>true</runAllBuilders>
+                                       </target>
+                                       <target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+                                               <buildCommand>make</buildCommand>
                                                <buildTarget>install</buildTarget>
                                                <stopOnError>true</stopOnError>
                                                <useDefaultCommand>false</useDefaultCommand>
                                        </target>
                                        <target name="install" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
                                                <buildCommand>make</buildCommand>
-                                               <buildArguments/>
                                                <buildTarget>install</buildTarget>
                                                <stopOnError>true</stopOnError>
                                                <useDefaultCommand>true</useDefaultCommand>
                                                <runAllBuilders>true</runAllBuilders>
                                        </target>
+                                       <target name="doc" path="coreapi/help" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+                                               <buildCommand>make</buildCommand>
+                                               <buildArguments/>
+                                               <buildTarget>all</buildTarget>
+                                               <stopOnError>true</stopOnError>
+                                               <useDefaultCommand>true</useDefaultCommand>
+                                               <runAllBuilders>true</runAllBuilders>
+                                       </target>
+                                       <target name="doc" path="mediastreamer2/help" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+                                               <buildCommand>make</buildCommand>
+                                               <buildArguments/>
+                                               <buildTarget>all</buildTarget>
+                                               <stopOnError>true</stopOnError>
+                                               <useDefaultCommand>true</useDefaultCommand>
+                                               <runAllBuilders>true</runAllBuilders>
+                                       </target>
                                </buildTargets>
                        </storageModule>
                </cconfiguration>
index a8905782993d1acfa250f101ac9dab7504bf612e..df1c803163bb4f8fcaeb39bdf4f52c9b0a296121 100644 (file)
@@ -41,4 +41,15 @@ Specfile
 .anjuta_sym_db.db
 gtk-glade/version_date.h
 share/linphone.desktop
+Debug/
+build/macos/Info-linphone.plist
+coreapi/help/Doxyfile
+coreapi/help/buddy_status
+coreapi/help/chatroom
+coreapi/help/doc/
+coreapi/help/helloworld
+coreapi/help/registration
+coreapi/test_ecc
+coreapi/test_lsd
+gtk/version_date.h
 
index d2c61489c9672ea3ad7e2ab45bc76f16890a9f6b..400e064fbd7c651f77bb99ce741be94d20e05ab1 100644 (file)
@@ -53,6 +53,7 @@ EXTRA_DIST = config.rpath  BUGS linphone.kdevelop  \
                                README.mingw \
                                README.macos \
                                autogen.sh \
+                               linphone.spec \
                                linphone.spec.in \
                                $(GTK_FILELIST) \
                                gen-gtkfilelist.sh \
@@ -69,22 +70,34 @@ all-local: linphone.spec linphone.iss
 
 linphone.spec: linphone.spec.in
 
-.phony: rpm
-rpm:
+.phony: rpm rpm-novideo rpm-base
+rpm-base:
        $(MAKE) dist
-       cd oRTP && $(MAKE) dist && mv -f ortp*.tar.gz ../
-       cd mediastreamer2 && $(MAKE) dist && mv -f mediastreamer*.tar.gz ../
-# Create "Specfile" at the same level as the tarball content
        -rm -f $(PACKAGE)-$(VERSION).tar
        gunzip $(PACKAGE)-$(VERSION).tar.gz
-       cp $(PACKAGE).spec Specfile
-       tar --append --file=$(PACKAGE)-$(VERSION).tar Specfile
+#remove ms2 and ortp spec file to make sure linphone spec file is used bu rpmbuild
+       tar --delete --file=$(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION)/mediastreamer2/mediastreamer2.spec
+       tar --delete --file=$(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION)/oRTP/ortp.spec
        gzip $(PACKAGE)-$(VERSION).tar
+
+rpm: rpm-base
 # <https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2068410>
        TAR_OPTIONS=--wildcards rpmbuild -ta --clean --rmsource --rmspec $(PACKAGE)-$(VERSION).tar.gz
 
+rpm-novideo: rpm-base
+# <https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2068410>
+       TAR_OPTIONS=--wildcards rpmbuild -ta --clean --rmsource --rmspec $(PACKAGE)-$(VERSION).tar.gz --without video
+
 #a zip containing win32 binaries, suitable to generate an installer
 
+if BUILD_ZRTP
+WINBINDIST_FILES+=./bin/libzrtpcpp.dll ./bin/msys-1.0.dll ./bin/msys-crypto-1.0.0.dll
+endif
+
+if BUILD_TUNNEL
+WINBINDIST_FILES+=./bin/libtunnel-0.dll
+endif
+
 other-cherrypick:
        cd $(GTK_PREFIX) && \
        for file in $(WINBINDIST_FILES) ; do \
diff --git a/NEWS b/NEWS
index d7c8f5559285b84a83f448cd42f3183a5d4cccf4..a4b134ddfc544607bd471a5b3da9e5c0d43cdd97 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,12 @@
-linphone-3.5.0 -- future date
+linphone-3.5.1 -- ??
+       * gtk - implement friend search by typing into the friendlist, and friend sorting
+
+linphone-3.5.0 -- December 22, 2011
        * added VP-8 video codec
+       * added G722 audio codec
+       * added SIP/TCP and SIP/TLS
+       * added SRTP media encryption
+       * Audio conferencing
        * UI: call history tab, menu simplified
        * UI: cosmetics for incall views
        * UI: integration with libnotify
index 98b5b9fb60adf78a30ae815e577d859bf7b38878..92cbaed1fd1e79d380f9faf678662a96201fc5af 100644 (file)
@@ -15,37 +15,38 @@ You need:
  $ port install libosip2
  $ port install libeXosip2
  $ port install ffmpeg-devel
-
-- Install SDL (for video display)
-Unfortunately the current (august 2011) version of sdl in macports crashes all the time. Fortunately these bugs are fixed in the development branch of SDL.
-So we recommend to download SDL 1.3 with mercurial (hg) and compile it by yourself, like this:
-First, make sure you have mercurial:
- $ sudo port install mercurial
-Fetch SDL:
- $ hg clone http://hg.libsdl.org/SDL
-Compile:
- $ cd SDL 
- $ ./autogen.sh
- $ ./configure --prefix=/opt/local && make -j4
+- Install srtp (optional) for call encryption
+ $ port install srtp
+ If that fails, get from source:
+ $ git clone git://git.linphone.org/srtp.git
+ $ cd srtp && autoconf && ./configure --prefix=/opt/local && make libsrtp.a
  $ sudo make install
 
 When this version will be integrated into macports, only this will be necessary:
  $ port install libsdl-devel
 
 - Install gtk. It is recommended to use the quartz backend for better integration.
- $ port install cairo +quartz +no_x11
- $ port install pango +quartz +no_x11
  $ port install gtk2 +quartz +no_x11
  $ port install ige-mac-integration
  $ port install hicolor-icon-theme
 
+- Compile and install the tunnel
+
+If you got the source code from git, run ./autogen.sh first
+
+Then or otherwise, do:
+
+ $ ./configure --prefix=/opt/local && make && sudo make install
+
+
 - Compile linphone
 
 If you got the source code from git, run ./autogen.sh first.
 
 Then or otherwise, do:
        
- $ ./configure --prefix=/opt/local --with-readline=/opt/local --disable-strict --disable-x11 && make
+ $ ./configure --prefix=/opt/local --with-readline=/opt/local --disable-strict --disable-x11 --with-srtp=/opt/local && make
 
 Install to /opt/local
 
@@ -58,6 +59,8 @@ Use git:
  $ git clone https://github.com/jralls/gtk-mac-bundler.git 
  $ cd gtk-mac-bundler && make install
  $ export PATH=$PATH:~/.local/bin
+ #make this dummy charset.alias file for the bundler to be happy:
+ $ sudo touch touch /opt/local/lib/charset.alias
 
 Then run, inside linphone source tree:
  1. Run configure as told before but with "--enable-relativeprefix" appended.
index 0c84e250ecb3eeac687c7da454e4da1546c36400..c35236dcc03daa3f7e98763357f8cc236fe16c1d 100644 (file)
@@ -14,7 +14,6 @@ In mingw shell, run
 mingw-get install msys-zip
 mingw-get install msys-unzip
 mingw-get install msys-wget
-mingw-get install msys-libopenssl
 
 mkdir -p /opt/perl/bin
 cp /bin/perl /opt/perl/bin/.
@@ -41,18 +40,8 @@ cd /share/themes
 wget http://art.gnome.org/download/themes/gtk2/1122/GTK2-Outcrop.tar.gz
 tar -xvzf GTK2-Outcrop.tar.gz
 
-#Remove the special stdint.h and inttypes.h included in linphone-deps: it is for MSVC only.
-#Mingw will use the one in /mingw/include
-rm /include/stdint.h /include/inttypes.h
-
-#Remove libgcc specific libraries, only needed for MSVC:
-rm /lib/libgcc.a /lib/libmingw32.a /lib/libmingwex.a
-
-#Remove libintl from gtk, we don't need it and it conflicts with the one supplied by mingw.
-rm /lib/libintl.dll.a
-rm /lib/libintl.la
-rm /lib/libintl.a
-rm /include/libintl.h
+#To get the translations working, remove from C:/MinGW/lib :
+libintl.a libintl.la libintl.dll.a
 
 * Download and install Inno Setup Compiler (required only if you run 'make setup.exe'). Add it to your windows Path environment variable.
 
@@ -66,7 +55,7 @@ It is recommended that you create a directory somewhere with a path without any
 c:\sources\
 Within msys-git bash, do
 cd /c/sources
-git clone git://git.savannah.nongnu.org/linphone.git --recursive
+git clone git://git.linphone.org/linphone.git --recursive
 
 
 Building
@@ -76,6 +65,8 @@ WARNING: During the build, windows might slow down suddenly. Using ctl+alt+del t
  you might see a process 'LVpSRV.exe' or something like this that eats 90% of cpu.
 Kill it. Don't know what it is, but once killed, windows runs normally.
 
+#Compile and install tunnel
+cd tunnel && ./autogen.sh && ./configure --prefix=/opt/linphone && make && make install
 #run autogen.sh after a git checkout or update
 ./autogen.sh
 ./configure --prefix=/opt/linphone --enable-shared --disable-static
index 096f944641c211af8261355ea23ded7b38b1aacf..346b57350c628238bcece6e06d06afa06dd88f21 100755 (executable)
@@ -66,7 +66,6 @@ LOCAL_CFLAGS += \
 
 LOCAL_CFLAGS += -DIN_LINPHONE
 
-
 ifeq ($(LINPHONE_VIDEO),1)
 LOCAL_CFLAGS += -DVIDEO_ENABLED
 ifeq ($(BUILD_X264),1)
@@ -94,15 +93,40 @@ LOCAL_STATIC_LIBRARIES := \
        libosip2 \
        libgsm 
 
+ifeq ($(BUILD_TUNNEL),1)
+LOCAL_CFLAGS +=-DTUNNEL_ENABLED
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../tunnel/include
+LOCAL_SRC_FILES += linphone_tunnel_manager.cc TunnelManager.cc
+ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
+LOCAL_SHARED_LIBRARIES += libtunnelclient
+else
+LOCAL_STATIC_LIBRARIES += libtunnelclient
+endif
+endif
+
 
-ifneq ($(BUILD_AMR),0)
+_BUILD_AMR=0
+ifneq ($(BUILD_AMRNB), 0)
+_BUILD_AMR=1
+endif
+
+ifneq ($(BUILD_AMRWB), 0)
+_BUILD_AMR=1
+endif
+
+ifneq ($(_BUILD_AMR), 0)
 LOCAL_CFLAGS += -DHAVE_AMR
+LOCAL_STATIC_LIBRARIES += \
+        libmsamr \
+        libopencoreamr
+endif
 
+ifneq ($(BUILD_AMRWB), 0)
 LOCAL_STATIC_LIBRARIES += \
-       libmsamr \
-       libopencoreamr 
+       libvoamrwbenc
 endif
 
+
 ifeq ($(BUILD_SILK),1)
 LOCAL_CFLAGS += -DHAVE_SILK
 LOCAL_STATIC_LIBRARIES += libmssilk
index 8486fa356a8b453b6b1f40a03b8c1f117e9e1b4f..ec64910fe4372909924efc217d6ebd98df2b93fa 100644 (file)
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT([linphone],[3.4.99.4],[linphone-developers@nongnu.org])
+AC_INIT([linphone],[3.5.0],[linphone-developers@nongnu.org])
 AC_CANONICAL_SYSTEM
 AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
 
@@ -37,6 +37,7 @@ AC_CONFIG_MACRO_DIR([m4])
 AC_SUBST([mkdir_p])
 AC_ISC_POSIX
 AC_PROG_CC
+AC_PROG_CXX
 AC_C_INLINE
 AM_PROG_CC_STDC
 AC_HEADER_STDC
@@ -44,7 +45,7 @@ AM_PROG_CC_C_O
 AC_CHECK_PROGS(MD5SUM,[md5sum md5])
 AM_CONDITIONAL(HAVE_MD5SUM,test -n $MD5SUM)
 
-case $target_os in
+case $target in
        *mingw32ce)
                CFLAGS="$CFLAGS -D_WIN32_WCE -DORTP_STATIC -D_WIN32_WINNT=0x0501"
                CXXFLAGS="$CXXFLAGS -DORTP_STATIC -D_WIN32_WINNT=0x0501"
@@ -60,11 +61,18 @@ case $target_os in
                CONSOLE_FLAGS="-mconsole"
                mingw_found=yes
        ;;
-       *darwin*)
+       armv6-apple-darwin|armv7-apple-darwin|i386-apple-darwin)
+                CFLAGS="$CFLAGS -DTARGET_OS_IPHONE "
+                build_tests=no
+                ios_found=yes
+        ;;
+        x86_64-apple-darwin*|i686-apple-darwin*)
+                MSPLUGINS_CFLAGS=""
                dnl use macport installation
                ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal"
                build_macos=yes
-       ;;
+        ;;
+
 esac
 
 AC_SUBST(ACLOCAL_MACOS_FLAGS)
@@ -74,6 +82,7 @@ AC_SUBST(GUI_FLAGS)
 dnl localization tools
 IT_PROG_INTLTOOL([0.40], [no-xml])
 
+AM_CONDITIONAL(BUILD_TESTS,test x$build_tests != xno)
 dnl Initialize libtool
 LT_INIT([win32-dll shared disable-static])
 
@@ -364,13 +373,14 @@ AC_ARG_ENABLE(alsa,
         *) AC_MSG_ERROR(bad value ${enableval} for --enable-alsa) ;;
       esac],[alsa=true])
 
-AC_ARG_ENABLE(artsc,
-      [  --enable-artsc    Turn on artsc (kde) sound input/output (auto) ],
+AC_ARG_ENABLE(zrtp,
+      [  --enable-zrtp    Turn on zrtp support - UNFINISHED],
       [case "${enableval}" in
-        yes) artsc=true ;;
-        no)  artsc=false ;;
-        *) AC_MSG_ERROR(bad value ${enableval} for --enable-artsc) ;;
-      esac],[artsc=false])
+        yes) zrtp=true ;;
+        no)  zrtp=false ;;
+        *) AC_MSG_ERROR(bad value ${enableval} for --enable-zrtp) ;;
+      esac],[zrtp=false])
+
 
 AC_ARG_ENABLE(portaudio,
       [  --enable-portaudio    Turn on portaudio native support compiling],
@@ -387,6 +397,7 @@ AM_CONDITIONAL(ARMBUILD, test x$use_arm_toolchain = xyes)
 dnl compilation of gtk user interface
 AM_CONDITIONAL(BUILD_GTK_UI, [test x$gtk_ui = xtrue ] )
 AM_CONDITIONAL(BUILD_WIN32, test x$mingw_found = xyes )
+AM_CONDITIONAL(BUILD_ZRTP, test x$zrtp = xtrue)
 
 dnl check getenv
 AH_TEMPLATE([HAVE_GETENV])
@@ -455,6 +466,32 @@ AC_SUBST(MEDIASTREAMER_LIBS)
 AC_SUBST([MS2_VERSION])
 AC_SUBST([MS2_DIR])
 
+
+
+AC_ARG_ENABLE(tunnel,
+      [  --enable-tunnel=[yes/no]    Turn on compilation of tunnel support [default=no]],
+      [case "${enableval}" in
+        yes) enable_tunnel=true ;;
+        no)  enable_tunnel=false ;;
+        *) AC_MSG_ERROR(bad value ${enableval} for --enable-tunnel) ;;
+      esac],[enable_tunnel=false])
+AM_CONDITIONAL(BUILD_TUNNEL, test x$enable_tunnel = xtrue)
+if test x$enable_tunnel = xtrue; then
+     PKG_CHECK_MODULES(TUNNEL, tunnel >= 0.3.1)
+     TUNNEL_CFLAGS+="-DTUNNEL_ENABLED"
+     AC_SUBST(TUNNEL_CFLAGS)
+     AC_SUBST(TUNNEL_LIBS)
+fi
+
+
+
+
+
+
+
+
+
+
 dnl check for db2html (docbook) to generate html user manual
 AC_CHECK_PROG(have_sgmltools,sgmltools, yes, no)
 AM_CONDITIONAL(ENABLE_MANUAL, test x$have_sgmltools$build_manual = xyesyes )
@@ -512,6 +549,8 @@ AC_ARG_ENABLE(tests_enabled,
       esac],[tests_enabled=false])
 AM_CONDITIONAL(ENABLE_TESTS, test x$tests_enabled = xyes)
 
+
+
 dnl ##################################################
 dnl # Check for doxygen
 dnl ##################################################
index 84639ada82f874d3da82ea41a1d1dcefdeb86fb1..bccb09c8102987244158e29237dc544394c0022c 100644 (file)
@@ -103,6 +103,8 @@ static int lpc_cmd_states(LinphoneCore *lc, char *args);
 static int lpc_cmd_identify(LinphoneCore *lc, char *args);
 static int lpc_cmd_ringback(LinphoneCore *lc, char *args);
 static int lpc_cmd_conference(LinphoneCore *lc, char *args);
+static int lpc_cmd_zrtp_verified(LinphoneCore *lc, char *args);
+static int lpc_cmd_zrtp_unverified(LinphoneCore *lc, char *args);
 
 /* Command handler helpers */
 static void linphonec_proxy_add(LinphoneCore *lc);
@@ -348,6 +350,12 @@ static LPC_COMMAND advanced_commands[] = {
        { "redirect", lpc_cmd_redirect, "Redirect an incoming call",
                "'redirect <redirect-uri>'\t: Redirect all pending incoming calls to the <redirect-uri>\n"
        },
+       { "zrtp-set-verified", lpc_cmd_zrtp_verified,"Set ZRTP SAS verified.",
+               "'Set ZRTP SAS verified'\n"
+       },
+       { "zrtp-set-unverified", lpc_cmd_zrtp_unverified,"Set ZRTP SAS not verified.",
+               "'Set ZRTP SAS not verified'\n"
+       },
        {       NULL,NULL,NULL,NULL}
 };
 
@@ -2552,6 +2560,20 @@ static int lpc_cmd_ringback(LinphoneCore *lc, char *args){
        return 1;
 }
 
+static int zrtp_set_verified(LinphoneCore *lc, char *args, bool_t verified){
+       LinphoneCall *call=linphone_core_get_current_call(lc);
+       if (linphone_call_params_get_media_encryption(linphone_call_get_current_params(call))==LinphoneMediaEncryptionZRTP){
+               linphone_call_set_authentication_token_verified(call,verified);
+       }
+       return 1;
+}
+static int lpc_cmd_zrtp_verified(LinphoneCore *lc, char *args){
+       return zrtp_set_verified(lc,args,TRUE);
+}
+static int lpc_cmd_zrtp_unverified(LinphoneCore *lc, char *args){
+       return zrtp_set_verified(lc,args,FALSE);
+}
+
 /***************************************************************************
  *
  *  Command table management funx
index 6bb624f1ca1f883226ac729fd576e567ab7abfff..7d5c0cdd2da291a94dcd816095d2e9202b045775 100644 (file)
@@ -160,6 +160,7 @@ LPC_AUTH_STACK auth_stack;
 static int trace_level = 0;
 static char *logfile_name = NULL;
 static char configfile_name[PATH_MAX];
+static char zrtpsecrets[PATH_MAX];
 static const char *factory_configfile_name=NULL;
 static char *sip_addr_to_call = NULL; /* for autocall */
 static int window_id = 0; /* 0=standalone window, or window id for embedding video */
@@ -667,6 +668,8 @@ linphonec_init(int argc, char **argv)
 #ifndef _WIN32
        snprintf(configfile_name, PATH_MAX, "%s/.linphonerc",
                        getenv("HOME"));
+       snprintf(zrtpsecrets, PATH_MAX, "%s/.linphone-zidcache",
+                       getenv("HOME"));
 #elif defined(_WIN32_WCE)
        strncpy(configfile_name,PACKAGE_DIR "\\linphonerc",PATH_MAX);
        mylogfile=fopen(PACKAGE_DIR "\\" "linphonec.log","w");
@@ -674,6 +677,8 @@ linphonec_init(int argc, char **argv)
 #else
        snprintf(configfile_name, PATH_MAX, "%s/Linphone/linphonerc",
                        getenv("APPDATA"));
+       snprintf(zrtpsecrets, PATH_MAX, "%s/Linphone/linphone-zidcache",
+                       getenv("APPDATA"));
 #endif
        /* Handle configuration filename changes */
        switch (handle_configfile_migration())
@@ -728,6 +733,7 @@ linphonec_init(int argc, char **argv)
         * Initialize linphone core
         */
        linphonec=linphone_core_new (&linphonec_vtable, configfile_name, factory_configfile_name, NULL);
+       linphone_core_set_zrtp_secrets_file(linphonec,zrtpsecrets);
        linphone_core_enable_video(linphonec,vcap_enabled,display_enabled);
        if (display_enabled && window_id != 0) 
        {
@@ -960,6 +966,8 @@ static void lpc_apply_video_params(){
 #ifdef HAVE_X11_XLIB_H
                if (lpc_video_params.wid==0){  // do not manage window if embedded
                        x11_apply_video_params(&lpc_video_params,wid);
+               } else {
+                       linphone_core_show_video(linphonec, lpc_video_params.show);
                }
 #endif
        }
@@ -1259,6 +1267,7 @@ linphonec_parse_cmdline(int argc, char **argv)
                        if (arg_num < argc) {
                                char *tmp;
                                window_id = strtol( argv[arg_num], &tmp, 0 );
+                               lpc_video_params.wid = window_id;
                        }
                }
                else if (old_arg_num == arg_num)
index ced68ababb53b82682dc241c371af8f775c061b7..96a27d02b385a072b34fc2f8526b4c824fb77603 100644 (file)
@@ -6,11 +6,14 @@ EXTRA_DIST=linphonecore_jni.cc
 ## Process this file with automake to produce Makefile.in
 linphone_includedir=$(includedir)/linphone
 
-linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonecore_utils.h ../config.h lpconfig.h sipsetup.h
+linphone_include_HEADERS=linphonecore.h linphonefriend.h linphonecore_utils.h ../config.h lpconfig.h sipsetup.h 
+
+if BUILD_TUNNEL
+linphone_include_HEADERS+=linphone_tunnel.h
+endif
 
 INCLUDES = \
-       -I$(top_srcdir)\
-       $(MEDIASTREAMER_CFLAGS)
+       -I$(top_srcdir)
 
 
 lib_LTLIBRARIES=liblinphone.la
@@ -38,7 +41,12 @@ liblinphone_la_SOURCES=\
        sipwizard.c \
        lsd.c linphonecore_utils.h \
        ec-calibrator.c \
-       conference.c
+       conference.c 
+
+if BUILD_TUNNEL
+liblinphone_la_SOURCES+=TunnelManager.cc TunnelManager.hh linphone_tunnel.cc
+endif
+
 
 
 liblinphone_la_LDFLAGS= -version-info $(LIBLINPHONE_SO_VERSION) -no-undefined
@@ -47,13 +55,10 @@ liblinphone_la_LIBADD= \
                $(EXOSIP_LIBS) \
                $(MEDIASTREAMER_LIBS) \
                $(ORTP_LIBS) $(OPENSSL_LIBS) \
+               $(TUNNEL_LIBS) \
                $(LIBSOUP_LIBS)
 
-if BUILD_WIN32
-liblinphone_la_LIBADD+=$(top_builddir)/oRTP/src/libortp.la
-endif
-
-if ENABLE_TESTS
+if BUILD_TESTS
 noinst_PROGRAMS=test_lsd test_ecc
 
 test_lsd_SOURCES=test_lsd.c
@@ -68,12 +73,13 @@ endif
 
 AM_CFLAGS=$(STRICT_OPTIONS)  -DIN_LINPHONE \
        $(ORTP_CFLAGS) \
-       $(OSIP_CFLAGS) \
        $(MEDIASTREAMER_CFLAGS) \
+       $(OSIP_CFLAGS) \
        $(EXOSIP_CFLAGS) \
        $(LIBSOUP_CFLAGS) \
        -DENABLE_TRACE  \
        -DLOG_DOMAIN=\"LinphoneCore\" \
-        $(IPV6_CFLAGS) \
-        -DORTP_INET6 \
-        $(VIDEO_CFLAGS)
+       $(IPV6_CFLAGS) \
+       -DORTP_INET6 \
+       $(VIDEO_CFLAGS) \
+       $(TUNNEL_CFLAGS)
diff --git a/coreapi/TunnelManager.cc b/coreapi/TunnelManager.cc
new file mode 100644 (file)
index 0000000..bbf9cc8
--- /dev/null
@@ -0,0 +1,425 @@
+/*
+ *  C Implementation: tunnel
+ *
+ * Description: 
+ *
+ *
+ * Author: Simon Morlat <simon.morlat@linphone.org>, (C) 2009
+ *
+ * Copyright (C) 2010  Belledonne Comunications, Grenoble, France
+ *
+ */
+
+
+#include "TunnelManager.hh"
+
+#include "ortp/rtpsession.h"
+#include "linphonecore.h"
+#include "linphonecore_utils.h"
+#include "eXosip2/eXosip_transport_hook.h"
+#include "tunnel/udp_mirror.hh"
+
+#ifdef ANDROID
+#include <android/log.h>
+#endif
+
+#ifdef recvfrom 
+#undef recvfrom
+#endif
+#ifdef sendto 
+#undef sendto
+#endif
+#ifdef select 
+#undef select
+#endif
+
+using namespace belledonnecomm;
+
+Mutex TunnelManager::sMutex;
+
+int TunnelManager::eXosipSendto(int fd,const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen,void* userdata){
+       TunnelManager* lTunnelMgr=(TunnelManager*)userdata;
+       int err;
+       sMutex.lock();
+       if (lTunnelMgr->mSipSocket==NULL){
+               sMutex.unlock();
+               return len;//let ignore the error
+       }
+       err=lTunnelMgr->mSipSocket->sendto(buf,len,to,tolen);
+       sMutex.unlock();
+       return err;
+}
+
+int TunnelManager::eXosipRecvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen,void* userdata){
+       TunnelManager* lTunnelMgr=(TunnelManager*)userdata;
+       int err;
+       sMutex.lock();
+       if (lTunnelMgr->mSipSocket==NULL){
+               sMutex.unlock();
+               return 0;//let ignore the error
+       }
+       err=lTunnelMgr->mSipSocket->recvfrom(buf,len,from,*fromlen);
+       sMutex.unlock();
+       return err;
+}
+
+int TunnelManager::eXosipSelect(int max_fds, fd_set *s1, fd_set *s2, fd_set *s3, struct timeval *tv,void* userdata){
+       struct timeval begin,cur;
+       TunnelManager* lTunnelMgr=(TunnelManager*)userdata;
+       if (tv!=0 && tv->tv_sec){
+               /*this is the select from udp.c, the one that is interesting to us*/
+               NativeSocket udp_fd=(NativeSocket)eXosip_get_udp_socket();
+               NativeSocket controlfd=(NativeSocket)eXosip_get_control_fd();
+
+               FD_ZERO(s1);            
+               gettimeofday(&begin,NULL);
+               do{
+                       struct timeval abit;
+
+                       abit.tv_sec=0;
+                       abit.tv_usec=20000;
+                       sMutex.lock();
+                       if (lTunnelMgr->mSipSocket!=NULL){
+                               if (lTunnelMgr->mSipSocket->hasData()) {
+                                       sMutex.unlock();
+                                       /* we make exosip believe that it has udp data to read*/
+                                       FD_SET(udp_fd,s1);
+                                       return 1;
+                               }
+                       }
+                       sMutex.unlock();
+                       gettimeofday(&cur,NULL);
+                       if (cur.tv_sec-begin.tv_sec>tv->tv_sec) {
+                               FD_SET(controlfd,s1);
+                               FD_SET(udp_fd,s1);
+                               return 0;
+                       }
+                       FD_ZERO(s1);
+                       FD_SET(controlfd,s1);
+                       if (select(max_fds,s1,s2,s3,&abit)==1) {
+                               return 1;
+                       }
+               }while(1);
+               
+       }else{
+               /*select called from other places, only the control fd is present */
+               return select(max_fds,s1,s2,s3,tv);
+       }
+}
+
+
+void TunnelManager::addServer(const char *ip, int port,unsigned int udpMirrorPort,unsigned int delay) {
+       addServer(ip,port);
+       mUdpMirrorClients.push_back(UdpMirrorClient(ServerAddr(ip,udpMirrorPort),delay));
+}
+
+void TunnelManager::addServer(const char *ip, int port) {
+       mServerAddrs.push_back(ServerAddr(ip,port));
+       if (mTunnelClient) mTunnelClient->addServer(ip,port);
+}
+
+void TunnelManager::cleanServers() {
+       mServerAddrs.clear();
+
+       UdpMirrorClientList::iterator it;
+       mAutoDetectStarted=false;
+       for (it = mUdpMirrorClients.begin(); it != mUdpMirrorClients.end();) {
+               UdpMirrorClient& s=*it++;
+               s.stop();
+       }
+       mUdpMirrorClients.clear();
+       if (mTunnelClient) mTunnelClient->cleanServers();
+}
+
+void TunnelManager::reconnect(){
+       if (mTunnelClient)
+               mTunnelClient->reconnect();
+}
+
+void TunnelManager::setCallback(StateCallback cb, void *userdata) {
+       mCallback=cb;
+       mCallbackData=userdata;
+}
+
+static void sCloseRtpTransport(RtpTransport *t, void *userData){
+       TunnelSocket *s=(TunnelSocket*)userData;
+       TunnelManager *manager=(TunnelManager*)s->getUserPointer();
+       manager->closeRtpTransport(t, s);
+}
+void TunnelManager::closeRtpTransport(RtpTransport *t, TunnelSocket *s){
+       mTunnelClient->closeSocket(s);
+       ms_free(t);
+}
+
+static RtpTransport *sCreateRtpTransport(void* userData, int port){
+       return ((TunnelManager *) userData)->createRtpTransport(port);
+}
+
+RtpTransport *TunnelManager::createRtpTransport(int port){
+       TunnelSocket *socket=mTunnelClient->createSocket(port);
+       socket->setUserPointer(this);
+       RtpTransport *t=ms_new0(RtpTransport,1);
+       t->t_getsocket=NULL;
+       t->t_recvfrom=customRecvfrom;
+       t->t_sendto=customSendto;
+       t->t_close=sCloseRtpTransport;
+       t->data=socket;
+       return t;
+}
+
+void TunnelManager::start() {
+       if (!mTunnelClient) {
+               mTunnelClient = new TunnelClient();
+               mTunnelClient->setCallback((StateCallback)tunnelCallback,this);
+               std::list<ServerAddr>::iterator it;
+               for(it=mServerAddrs.begin();it!=mServerAddrs.end();++it){
+                       const ServerAddr &addr=*it;
+                       mTunnelClient->addServer(addr.mAddr.c_str(), addr.mPort);
+               }
+               if(!mHttpUserName.empty()) {
+                       mTunnelClient->setHttpProxyAuthInfo(mHttpUserName.c_str(), mHttpPasswd.c_str());
+               }
+       }
+       mTunnelClient->start();
+
+       if (mSipSocket == NULL) mSipSocket =mTunnelClient->createSocket(5060);
+}
+
+bool TunnelManager::isStarted() {
+       return mTunnelClient != 0 && mTunnelClient->isStarted();
+}
+
+bool TunnelManager::isReady() const {
+       return mTunnelClient && mTunnelClient->isReady();
+}
+
+int TunnelManager::customSendto(struct _RtpTransport *t, mblk_t *msg , int flags, const struct sockaddr *to, socklen_t tolen){
+       int size;
+       msgpullup(msg,-1);
+       size=msgdsize(msg);
+       ((TunnelSocket*)t->data)->sendto(msg->b_rptr,size,to,tolen);
+       return size;
+}
+
+int TunnelManager::customRecvfrom(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen){
+       int err=((TunnelSocket*)t->data)->recvfrom(msg->b_wptr,msg->b_datap->db_lim-msg->b_datap->db_base,from,*fromlen);
+       if (err>0) return err;
+       return 0;
+}
+
+
+TunnelManager::TunnelManager(LinphoneCore* lc) :TunnelClientController()
+,mCore(lc)
+,mSipSocket(NULL)
+,mCallback(NULL)
+,mEnabled(false)
+,mTunnelClient(NULL)
+,mAutoDetectStarted(false) {
+
+       mExosipTransport.data=this;
+       mExosipTransport.recvfrom=eXosipRecvfrom;
+       mExosipTransport.sendto=eXosipSendto;
+       mExosipTransport.select=eXosipSelect;
+       mStateChanged=false;
+       linphone_core_add_iterate_hook(mCore,(LinphoneCoreIterateHook)sOnIterate,this);
+       mTransportFactories.audio_rtcp_func=sCreateRtpTransport;
+       mTransportFactories.audio_rtcp_func_data=this;
+       mTransportFactories.audio_rtp_func=sCreateRtpTransport;
+       mTransportFactories.audio_rtp_func_data=this;
+       mTransportFactories.video_rtcp_func=sCreateRtpTransport;
+       mTransportFactories.video_rtcp_func_data=this;
+       mTransportFactories.video_rtp_func=sCreateRtpTransport;
+       mTransportFactories.video_rtp_func_data=this;
+}
+
+TunnelManager::~TunnelManager(){
+       stopClient();
+}
+
+void TunnelManager::stopClient(){
+       eXosip_transport_hook_register(NULL);
+       if (mSipSocket != NULL){
+               sMutex.lock();
+               mTunnelClient->closeSocket(mSipSocket);
+               mSipSocket = NULL;
+               sMutex.unlock();
+       }
+       if (mTunnelClient){
+               delete mTunnelClient;
+               mTunnelClient=NULL;
+       }
+}
+
+void TunnelManager::processTunnelEvent(){
+       LinphoneProxyConfig* lProxy;
+       linphone_core_get_default_proxy(mCore, &lProxy);
+
+       if (mEnabled && mTunnelClient->isReady()){
+               ms_message("Tunnel is up, registering now");            
+               linphone_core_set_rtp_transport_factories(mCore,&mTransportFactories);
+               eXosip_transport_hook_register(&mExosipTransport);
+               //force transport to udp
+               LCSipTransports lTransport;
+               
+               lTransport.udp_port=15060;
+               lTransport.tcp_port=0;
+               lTransport.tls_port=0;
+               lTransport.dtls_port=0;
+               
+               linphone_core_set_sip_transports(mCore, &lTransport);           
+               //register
+               if (lProxy) {
+                       linphone_proxy_config_done(lProxy);
+               }
+       }else if (mEnabled && !mTunnelClient->isReady()){
+               /* we got disconnected from the tunnel */
+               if (lProxy && linphone_proxy_config_is_registered(lProxy)) {
+                       /*forces de-registration so that we register again when the tunnel is up*/
+                       linphone_proxy_config_edit(lProxy);
+                       linphone_core_iterate(mCore);
+               }
+       }
+}
+
+void TunnelManager::enable(bool isEnable) {
+       ms_message("Turning tunnel [%s]",(isEnable?"on":"off"));
+       if (isEnable && !mEnabled){
+               mEnabled=true;
+               //1 save transport 
+               linphone_core_get_sip_transports(mCore, &mRegularTransport);
+               //2 unregister
+               LinphoneProxyConfig* lProxy;
+               linphone_core_get_default_proxy(mCore, &lProxy);
+               if (lProxy) {
+                       linphone_proxy_config_edit(lProxy);
+                       //make sure unregister is sent
+                       linphone_core_iterate(mCore); 
+               }
+               //3 insert tunnel
+               start();
+       }else if (!isEnable && mEnabled){
+               mEnabled=false;
+               stopClient();
+               //1 unregister
+               LinphoneProxyConfig* lProxy;
+               linphone_core_get_default_proxy(mCore, &lProxy);
+               if (lProxy) {
+                       linphone_proxy_config_edit(lProxy);
+                       //make sure unregister is sent
+                       linphone_core_iterate(mCore); 
+               }
+               
+               //make sure unregister is sent
+               linphone_core_iterate(mCore); 
+               
+               linphone_core_set_rtp_transport_factories(mCore,NULL);
+
+               eXosip_transport_hook_register(NULL);
+               //Restore transport
+               linphone_core_set_sip_transports(mCore, &mRegularTransport);
+               //register
+               if (lProxy) {
+                       linphone_proxy_config_done(lProxy);
+               }
+
+       }
+}
+
+void TunnelManager::tunnelCallback(bool connected, TunnelManager *zis){
+       zis->mStateChanged=true;
+}
+
+/*invoked from linphone_core_iterate() */
+void TunnelManager::sOnIterate(TunnelManager *zis){
+       if (zis->mStateChanged){
+               zis->mStateChanged=false;
+               zis->processTunnelEvent();
+       }
+}
+
+#ifdef ANDROID
+static void linphone_android_log_handler(int lev, const char *fmt, va_list args){
+       int prio;
+       switch(lev){
+       case TUNNEL_DEBUG:      prio = ANDROID_LOG_DEBUG;       break;
+       case TUNNEL_INFO:       prio = ANDROID_LOG_INFO;        break;
+       case TUNNEL_NOTICE:     prio = ANDROID_LOG_INFO;        break;
+       case TUNNEL_WARN:       prio = ANDROID_LOG_WARN;        break;
+       case TUNNEL_ERROR:      prio = ANDROID_LOG_ERROR;       break;
+       default:                        prio = ANDROID_LOG_DEFAULT;     break;
+       }
+       __android_log_vprint(prio, LOG_DOMAIN, fmt, args);
+}
+#endif /*ANDROID*/
+
+void TunnelManager::enableLogs(bool value) {
+       enableLogs(value,NULL);
+}
+
+void TunnelManager::enableLogs(bool isEnabled,LogHandler logHandler) {
+       if (logHandler != NULL) SetLogHandler(logHandler);
+#ifdef ANDROID
+       else SetLogHandler(linphone_android_log_handler);
+#else
+       else SetLogHandler(default_log_handler);
+#endif
+
+       if (isEnabled) {
+               SetLogLevel(TUNNEL_ERROR|TUNNEL_WARN|TUNNEL_INFO);
+       } else {
+               SetLogLevel(TUNNEL_ERROR|TUNNEL_WARN);
+       }
+}
+       
+
+bool TunnelManager::isEnabled() {
+       return mEnabled;
+}
+void TunnelManager::UdpMirrorClientListener(bool isUdpAvailable, void* data) {
+       TunnelManager* thiz = (TunnelManager*)data;
+       if (isUdpAvailable) {
+               LOGI("Tunnel is not required, disabling");
+               thiz->enable(false);
+               thiz->mAutoDetectStarted = false;
+       } else {
+               if (++thiz->mCurrentUdpMirrorClient !=thiz->mUdpMirrorClients.end()) {
+                       //1 enable tunnable but also try backup server
+                       LOGI("Tunnel is required, enabling; Trying backup udp mirror");
+                       
+                       UdpMirrorClient &lUdpMirrorClient=*thiz->mCurrentUdpMirrorClient;
+                       lUdpMirrorClient.start(TunnelManager::UdpMirrorClientListener,(void*)thiz);
+               } else {
+                       LOGI("Tunnel is required, enabling; no backup udp mirror available");
+                       thiz->mAutoDetectStarted = false;
+               }
+               thiz->enable(true);
+       }
+       return;
+}
+
+void TunnelManager::autoDetect() {
+       // first check if udp mirrors was provisionned
+       if (mUdpMirrorClients.empty()) {
+               LOGE("No UDP mirror server configured aborting auto detection");
+               return;
+       }
+       if (mAutoDetectStarted) {
+               LOGE("auto detection already in progress, restarting");
+               (*mCurrentUdpMirrorClient).stop();
+       }
+       mAutoDetectStarted=true;
+       mCurrentUdpMirrorClient =mUdpMirrorClients.begin();
+       UdpMirrorClient &lUdpMirrorClient=*mCurrentUdpMirrorClient;
+       lUdpMirrorClient.start(TunnelManager::UdpMirrorClientListener,(void*)this);
+       
+}
+
+void TunnelManager::setHttpProxyAuthInfo(const char* username,const char* passwd) {
+       mHttpUserName=username?username:"";
+       mHttpPasswd=passwd?passwd:"";
+       if (mTunnelClient) mTunnelClient->setHttpProxyAuthInfo(username,passwd);
+}
+
+LinphoneCore *TunnelManager::getLinphoneCore(){
+       return mCore;
+}
diff --git a/coreapi/TunnelManager.hh b/coreapi/TunnelManager.hh
new file mode 100644 (file)
index 0000000..0cc560e
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+ *  C Implementation: tunnel
+ *
+ * Description: 
+ *
+ *
+ *
+ *Copyright (C) 2011  Belledonne Comunications, Grenoble, France
+ */
+
+#ifndef __TUNNEL_CLIENT_MANAGER_H__
+#define __TUNNEL_CLIENT_MANAGER_H__
+#include <list>
+#include <string>
+#include "tunnel/client.hh"
+#include "linphonecore.h"
+
+extern "C" {
+       #include "eXosip2/eXosip_transport_hook.h"
+}
+namespace belledonnecomm {
+class TunnelClient;
+class UdpMirrorClient;
+/**
+ * @addtogroup tunnel_client 
+ * @{
+**/
+
+       /**
+        * The TunnelManager class extends the LinphoneCore functionnality in order to provide an easy to use API to 
+        * - provision tunnel servers ip addresses and ports
+        * - start/stop the tunneling service
+        * - be informed of of connection and disconnection events to the tunnel server
+        * - perform auto-detection whether tunneling is required, based on a test of sending/receiving a flow of UDP packets.
+        * 
+        * It takes in charge automatically the SIP registration procedure when connecting or disconnecting to a tunnel server.
+        * No other action on LinphoneCore is required to enable full operation in tunnel mode.
+       **/
+       class TunnelManager : public TunnelClientController{
+               
+       public:
+               /**
+                * Add a tunnel server. At least one should be provided to be able to connect.
+                * When several addresses are provided, the tunnel client may try each of them until it gets connected.
+                *
+                * @param ip tunnMethod definition for '-isInitialStateOn' not foundel server ip address
+                * @param port tunnel server tls port, recommended value is 443
+                */
+               void addServer(const char *ip, int port);
+               /**
+                *Add tunnel server with auto detection capabilities
+                *
+                * @param ip tunnel server ip address
+                * @param port tunnel server tls port, recommended value is 443
+                * @param udpMirrorPort remote port on the tunnel server side  used to test udp reachability
+                * @param delay udp packet round trip delay in ms considered as acceptable. recommanded value is 1000 ms.
+                */
+               void addServer(const char *ip, int port,unsigned int udpMirrorPort,unsigned int delay);
+               /**
+                * Removes all tunnel server address previously entered with addServer()
+               **/ 
+               void cleanServers();
+               /**
+                * Register a state callback to be notified whenever the tunnel client is connected or disconnected to the tunnel server.
+                * @param cb application callback function to use for notifying of connection/disconnection events.
+                * @param userdata An opaque pointer passed to the callback, used optionally by the application to retrieve a context.
+               **/             
+               void setCallback(StateCallback cb, void *userdata);
+               /**
+                * Start connecting to a tunnel server.
+                * At this step, nothing is tunneled yet. The enable() method must be used to state whether SIP and RTP traffic
+                * need to be tunneled or not.
+               **/
+               void start();
+               /**
+                * Forces reconnection to the tunnel server.
+                * This method is useful when the device switches from wifi to Edge/3G or vice versa. In most cases the tunnel client socket
+                * won't be notified promptly that its connection is now zombie, so it is recommended to call this method that will cause
+                * the lost connection to be closed and new connection to be issued.
+               **/
+               void reconnect();
+               /**
+                * Sets whether tunneling of SIP and RTP is required.
+                * @param isEnabled If true enter in tunneled mode, if false exits from tunneled mode.
+                * The TunnelManager takes care of refreshing SIP registration when switching on or off the tunneled mode.
+                *
+               **/
+               void enable(bool isEnabled);
+               /**
+                * In auto detect mode, the tunnel manager try to establish a real time rtp cummunication with the tunnel server on  specified port.
+                *<br>In case of success, the tunnel is automatically turned off. Otherwise, if no udp commmunication is feasible, tunnel mode is turned on.
+                *<br> Call this method each time to run the auto detection algorithm
+                */
+               void autoDetect();
+               /**
+                * Returns a boolean indicating whether tunneled operation is enabled.
+               **/
+               bool isEnabled();
+               /**
+                * Enables debug logs of the Tunnel subsystem.
+               **/
+               void enableLogs(bool isEnabled);
+               /**
+                * Enables debugs logs of the Tunnel subsystem and specify a callback where to receive the debug messages.
+               **/
+               void enableLogs(bool isEnabled,LogHandler logHandler);
+               /**
+                * iOS only feature: specify http proxy credentials.
+                * When the iOS device has an http proxy configured in the iOS settings, the tunnel client will connect to the server
+                * through this http proxy. Credentials might be needed depending on the proxy configuration.
+                * @param username The username.
+                * @param passwd The password.
+               **/
+               void setHttpProxyAuthInfo(const char* username,const char* passwd);
+               ~TunnelManager();
+               TunnelManager(LinphoneCore* lc);
+               /**
+                * Destroy the given RtpTransport.
+                */
+               void closeRtpTransport(RtpTransport *t, TunnelSocket *s);
+
+               /**
+                * Create an RtpTransport.
+                */
+               RtpTransport *createRtpTransport(int port);
+
+               /**
+                * Get associated Linphone Core.
+                */
+               LinphoneCore *getLinphoneCore();
+       private:
+               typedef std::list<UdpMirrorClient> UdpMirrorClientList;
+               virtual bool isStarted();
+               virtual bool isReady() const;
+               static int customSendto(struct _RtpTransport *t, mblk_t *msg , int flags, const struct sockaddr *to, socklen_t tolen);
+               static int customRecvfrom(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen);
+               static int eXosipSendto(int fd,const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen,void* userdata);
+               static int eXosipRecvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen,void* userdata);
+               static int eXosipSelect(int nfds, fd_set *s1, fd_set *s2, fd_set *s3, struct timeval *tv,void* userdata);
+               static void tunnelCallback(bool connected, TunnelManager *zis);
+               static void sOnIterate(TunnelManager *zis);
+               static void UdpMirrorClientListener(bool result, void* data);
+
+               void processTunnelEvent();
+               LinphoneCore* mCore;
+               LCSipTransports mRegularTransport;
+               TunnelSocket *mSipSocket;
+               eXosip_transport_hooks_t mExosipTransport;
+               StateCallback mCallback;
+               void * mCallbackData;
+               bool mEnabled;
+               bool mStateChanged;
+               std::list <ServerAddr> mServerAddrs;
+               UdpMirrorClientList mUdpMirrorClients;
+               UdpMirrorClientList::iterator mCurrentUdpMirrorClient;
+               TunnelClient* mTunnelClient;
+               void stopClient();
+               static Mutex sMutex;
+               bool mAutoDetectStarted;
+               LinphoneRtpTransportFactories mTransportFactories;
+               std::string mHttpUserName;
+               std::string mHttpPasswd;                
+       };
+
+/**
+ * @}
+**/
+
+}
+
+
+
+#endif /*__TUNNEL_CLIENT_MANAGER_H__*/
index 6cee4473d51a3267f5ca9a50670ed1fefac6a6b8..a2dfffee3779c60e687caa9a9fb6a76f5ffd9fb3 100644 (file)
@@ -148,6 +148,7 @@ static void call_received(SalOp *h){
        LinphoneAddress *from_addr, *to_addr;
        SalMediaDescription *md;
        bool_t propose_early_media=lp_config_get_int(lc->config,"sip","incoming_calls_early_media",FALSE);
+       bool_t prevent_colliding_calls=lp_config_get_int(lc->config,"sip","prevent_colliding_calls",TRUE);
        const char *ringback_tone=linphone_core_get_remote_ringback_tone (lc);
        
        /* first check if we can answer successfully to this invite */
@@ -176,7 +177,7 @@ static void call_received(SalOp *h){
        from_addr=linphone_address_new(from);
        to_addr=linphone_address_new(to);
 
-       if (already_a_call_with_remote_address(lc,from_addr) || already_a_call_pending(lc)){
+       if ((already_a_call_with_remote_address(lc,from_addr) && prevent_colliding_calls) || already_a_call_pending(lc)){
                ms_warning("Receiving another call while one is ringing or initiated, refusing this one with busy message.");
                sal_call_decline(h,SalReasonBusy,NULL);
                sal_op_release(h);
@@ -373,7 +374,7 @@ static void call_accepted(SalOp *op){
        }else{
                /*send a bye*/
                ms_error("Incompatible SDP offer received in 200Ok, need to abort the call");
-               linphone_core_abort_call(lc,call,"No codec intersection");
+               linphone_core_abort_call(lc,call,_("Incompatible, check codecs..."));
        }
 }
 
@@ -522,7 +523,6 @@ static void call_failure(SalOp *op, SalError error, SalReason sr, const char *de
                                        lc->vtable.display_status(lc,msg480);
                        break;
                        case SalReasonNotFound:
-                               msg=_("Not found");
                                if (lc->vtable.display_status)
                                        lc->vtable.display_status(lc,msg);
                        break;
@@ -532,6 +532,21 @@ static void call_failure(SalOp *op, SalError error, SalReason sr, const char *de
                                        lc->vtable.display_status(lc,msg600);
                        break;
                        case SalReasonMedia:
+                       //media_encryption_mandatory
+                               if (call->params.media_encryption == LinphoneMediaEncryptionSRTP && 
+                                       !linphone_core_is_media_encryption_mandatory(lc)) {
+                                       int i;
+                                       ms_message("Outgoing call failed with SRTP (SAVP) enabled - retrying with AVP");
+                                       linphone_call_stop_media_streams(call);
+                                       /* clear SRTP local params */
+                                       call->params.media_encryption = LinphoneMediaEncryptionNone;
+                                       for(i=0; i<call->localdesc->nstreams; i++) {
+                                               call->localdesc->streams[i].proto = SalProtoRtpAvp;
+                                               memset(call->localdesc->streams[i].crypto, 0, sizeof(call->localdesc->streams[i].crypto));
+                                       }
+                                       linphone_core_start_invite(lc, call, NULL);
+                                       return;
+                               }
                                msg=_("No common codecs");
                                if (lc->vtable.display_status)
                                        lc->vtable.display_status(lc,msg);
@@ -547,10 +562,14 @@ static void call_failure(SalOp *op, SalError error, SalReason sr, const char *de
                lc->ringstream=NULL;
        }
        linphone_call_stop_media_streams (call);
-       if (sr!=SalReasonDeclined) linphone_call_set_state(call,LinphoneCallError,msg);
-       else{
+       if (sr == SalReasonDeclined) {
                call->reason=LinphoneReasonDeclined;
                linphone_call_set_state(call,LinphoneCallEnd,"Call declined.");
+       } else if (sr == SalReasonNotFound) {
+               call->reason=LinphoneReasonNotFound;
+               linphone_call_set_state(call,LinphoneCallError,"User not found.");
+       } else {
+               linphone_call_set_state(call,LinphoneCallError,msg);
        }
 }
 
@@ -607,12 +626,11 @@ static void register_success(SalOp *op, bool_t registered){
        LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)sal_op_get_user_pointer(op);
        char *msg;
        
-       cfg->registered=registered;
        linphone_proxy_config_set_error(cfg,LinphoneReasonNone);
        linphone_proxy_config_set_state(cfg, registered ? LinphoneRegistrationOk : LinphoneRegistrationCleared ,
                                        registered ? "Registration sucessful" : "Unregistration done");
        if (lc->vtable.display_status){
-               if (cfg->registered) msg=ms_strdup_printf(_("Registration on %s successful."),sal_op_get_proxy(op));
+               if (registered) msg=ms_strdup_printf(_("Registration on %s successful."),sal_op_get_proxy(op));
                else msg=ms_strdup_printf(_("Unregistration on %s done."),sal_op_get_proxy(op));
                lc->vtable.display_status(lc,msg);
                ms_free(msg);
index 065a6d99d0fb28607dd9ec8b8025d2db793c4c86..d4abc1a91a05972dbb262ea88cfefb160cc24486 100644 (file)
  */
  
 #include "private.h"
+#include "lpconfig.h"
 
 #include "mediastreamer2/msvolume.h"
 
-static void conference_check_init(LinphoneConference *ctx){
+static int convert_conference_to_call(LinphoneCore *lc);
+
+static void conference_check_init(LinphoneConference *ctx, int samplerate){
        if (ctx->conf==NULL){
                MSAudioConferenceParams params;
-               params.samplerate=16000;
+               params.samplerate=samplerate;
                ctx->conf=ms_audio_conference_new(&params);
        }
 }
@@ -42,24 +45,34 @@ static void remove_local_endpoint(LinphoneConference *ctx){
                ctx->local_endpoint=NULL;
                audio_stream_stop(ctx->local_participant);
                ctx->local_participant=NULL;
+               rtp_profile_destroy(ctx->local_dummy_profile);
        }
 }
 
-void linphone_core_conference_check_uninit(LinphoneConference *ctx){
+static int remote_participants_count(LinphoneConference *ctx) {
+       if (!ctx->conf || ms_audio_conference_get_size(ctx->conf)==0) return 0;
+       if (!ctx->local_participant) return ms_audio_conference_get_size(ctx->conf);
+       return ms_audio_conference_get_size(ctx->conf) -1;
+}
+
+void linphone_core_conference_check_uninit(LinphoneCore *lc){
+       LinphoneConference *ctx=&lc->conf_ctx;
        if (ctx->conf){
-               ms_message("conference_check_uninit(): nmembers=%i",ctx->conf->nmembers);
-               if (ctx->conf->nmembers==1 && ctx->local_participant!=NULL){
+               ms_message("conference_check_uninit(): nmembers=%i",ms_audio_conference_get_size(ctx->conf));
+               if (remote_participants_count(ctx)==1){
+                       convert_conference_to_call(lc);
+               }
+               if (ms_audio_conference_get_size(ctx->conf)==1 && ctx->local_participant!=NULL){
                        remove_local_endpoint(ctx);
                }
-               if (ctx->conf->nmembers==0){
+               if (ms_audio_conference_get_size(ctx->conf)==0){
                        ms_audio_conference_destroy(ctx->conf);
                        ctx->conf=NULL;
                }
        }
 }
 
-
-void linphone_call_add_to_conf(LinphoneCall *call){
+void linphone_call_add_to_conf(LinphoneCall *call, bool_t muted){
        LinphoneCore *lc=call->core;
        LinphoneConference *conf=&lc->conf_ctx;
        MSAudioEndpoint *ep;
@@ -67,6 +80,7 @@ void linphone_call_add_to_conf(LinphoneCall *call){
        call->camera_active = FALSE;
        ep=ms_audio_endpoint_get_from_stream(call->audiostream,TRUE);
        ms_audio_conference_add_member(conf->conf,ep);
+       ms_audio_conference_mute_member(conf->conf,ep,muted);
        call->endpoint=ep;
 }
 
@@ -95,9 +109,9 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
                        lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard;
        MSSndCard *captcard=lc->sound_conf.capt_sndcard;
        const MSAudioConferenceParams *params=ms_audio_conference_get_params(conf->conf);
-       RtpProfile *prof=make_dummy_profile(params->samplerate);
+       conf->local_dummy_profile=make_dummy_profile(params->samplerate);
        
-       audio_stream_start_full(st, prof,
+       audio_stream_start_full(st, conf->local_dummy_profile,
                                "127.0.0.1",
                                65000,
                                65001,
@@ -113,8 +127,7 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
        conf->local_participant=st;
        conf->local_endpoint=ms_audio_endpoint_get_from_stream(st,FALSE);
        ms_audio_conference_add_member(conf->conf,conf->local_endpoint);
-       /*normally and exceptionnaly, the profile is no more accessed past this point*/
-       rtp_profile_destroy(prof);
+       
 }
 
 float linphone_core_get_conference_local_input_volume(LinphoneCore *lc){
@@ -137,9 +150,10 @@ int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call){
                ms_error("Already in conference");
                return -1;
        }
-       conference_check_init(&lc->conf_ctx);
+       conference_check_init(&lc->conf_ctx, lp_config_get_int(lc->config, "sound","conference_rate",16000));
        call->params.in_conference=TRUE;
        call->params.has_video=FALSE;
+       call->params.media_encryption=LinphoneMediaEncryptionNone;
        params=call->params;
        if (call->state==LinphoneCallPaused)
                linphone_core_resume_call(lc,call);
@@ -160,8 +174,9 @@ int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call){
        return 0;
 }
 
-int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call){
+static int remove_from_conference(LinphoneCore *lc, LinphoneCall *call, bool_t active){
        int err=0;
+
        if (!call->current_params.in_conference){
                if (call->params.in_conference){
                        ms_warning("Not (yet) in conference, be patient");
@@ -172,7 +187,64 @@ int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call){
                }
        }
        call->params.in_conference=FALSE;
-       err=linphone_core_pause_call(lc,call);
+
+       char *str=linphone_call_get_remote_address_as_string(call);
+       ms_message("%s will be removed from conference", str);
+       ms_free(str);
+       if (active){
+               // reconnect local audio with this call
+               if (linphone_core_is_in_conference(lc)){
+                       ms_message("Leaving conference for reconnecting with unique call.");
+                       linphone_core_leave_conference(lc);
+               }
+               ms_message("Updating call to actually remove from conference");
+               err=linphone_core_update_call(lc,call,&call->params);
+       } else{
+               ms_message("Pausing call to actually remove from conference");
+               err=linphone_core_pause_call(lc,call);
+       }
+
+       return err;
+}
+
+static int convert_conference_to_call(LinphoneCore *lc){
+       int err=0;
+       MSList *calls=lc->calls;
+
+       if (remote_participants_count(&lc->conf_ctx)!=1){
+               ms_error("No unique call remaining in conference.");
+               return -1;
+       }
+
+       while (calls) {
+               LinphoneCall *rc=(LinphoneCall*)calls->data;
+               calls=calls->next;
+               if (rc->params.in_conference) { // not using current_param
+                       bool_t active_after_removed=linphone_core_is_in_conference(lc);
+                       err=remove_from_conference(lc, rc, active_after_removed);
+                       break;
+               }
+       }
+       return err;
+}
+
+
+int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *call){
+       char * str=linphone_call_get_remote_address_as_string(call);
+       ms_message("Removing call %s from the conference", str);
+       ms_free(str);
+       int err=remove_from_conference(lc,call, FALSE);
+       if (err){
+               ms_error("Error removing participant from conference.");
+               return err;
+       }
+
+       if (remote_participants_count(&lc->conf_ctx)==1){
+               ms_message("conference size is 1: need to be converted to plain call");
+               err=convert_conference_to_call(lc);
+       } else {
+               ms_message("the conference need not to be converted as size is %i", remote_participants_count(&lc->conf_ctx));
+       }
        return err;
 }
 
@@ -192,6 +264,9 @@ int linphone_core_enter_conference(LinphoneCore *lc){
        if (linphone_core_sound_resources_locked(lc)) {
                return -1;
        }
+       if (lc->current_call != NULL) {
+               linphone_core_pause_call(lc, lc->current_call);
+       }
        LinphoneConference *conf=&lc->conf_ctx;
        if (conf->local_participant==NULL) add_local_endpoint(conf,lc);
        return 0;
@@ -206,6 +281,7 @@ int linphone_core_add_all_to_conference(LinphoneCore *lc) {
                        linphone_core_add_to_conference(lc, call);
                }
        }
+       linphone_core_enter_conference(lc);
        return 0;
 }
 
@@ -222,5 +298,8 @@ int linphone_core_terminate_conference(LinphoneCore *lc) {
 }
 
 int linphone_core_get_conference_size(LinphoneCore *lc) {
-       return ms_audio_conference_size(lc->conf_ctx.conf);
+       if (lc->conf_ctx.conf == NULL) {
+               return 0;
+       }
+       return ms_audio_conference_get_size(lc->conf_ctx.conf);
 }
index 6690fd4a6379842cb90d456afd77afdccf3cd940..a68ab2f19c7cfe0b28d899ad56b42a31ff7bb3bc 100644 (file)
@@ -34,7 +34,7 @@ clean-local:
 
 if ENABLE_TESTS
 #tutorials
-
+if BUILD_TESTS
 noinst_PROGRAMS=helloworld registration buddy_status chatroom
 
 helloworld_SOURCES=helloworld.c
@@ -60,7 +60,7 @@ LINPHONE_TUTOS+=$(chatroom_SOURCES)
 chatroom_LDADD=$(helloworld_LDADD)
 endif
                                                                                                
-                               
+endif                  
 
 INCLUDES=-I$(top_srcdir)/coreapi \
                $(MEDIASTREAMER_CFLAGS)
index 7d0a82849f2f398fc6e1f5af8632e45d5adcc472..d1ec25b9ced38d5ebd34fb3e62b77626a9d13c96 100644 (file)
@@ -224,45 +224,8 @@ void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddre
 <br>
 <ul>
 <li><b>SIP socket </b><br>Recommended mode is SIP over TCP, because UDP usually requires frequent keep alives for maintaining NAT association at the IP router level. This can be as frequent as one UDP packet every 15 seconds to maintain the NAT association accross NAT routers. Doing such drains the battery very fast, and furthermore the iOS keep-alive designed by Apple to handle this task can only be called with a minimum of 10 minutes interval.<br>
-For TCP, liblinphone automatically configures SIP socket for voip  (I.E kCFStreamNetworkServiceType set to kCFStreamNetworkServiceTypeVoIP). <br>
-In the event that an application really wants to use UDP, it is the responsability of application to set this property to the UDP SIP socket before entering in background. It can access the SIP socket from method #linphone_core_get_sip_socket(). Note this property is only settable on a connected socket. As liblinphone UDP sockets are not connected, application willing to enable UDP background mode must first connect the UDP sip socket before configuring the voip mode. Pseudo code below shows the different steps:
-\code
-       //get sip socket
-       CFReadStreamRef mReadStream
-       int sipsock = linphone_core_get_sip_socket(theLinphoneCore);    
-       //get address port of the sip proxy in order to connect the udp socket to this proxy
-       const char *port;
-       addr=linphone_address_new(linphone_proxy_config_get_addr(proxyCfg));
-       memset(&hints,0,sizeof(hints));
-       hints.ai_family=linphone_core_ipv6_enabled(theLinphoneCore) ? AF_INET6 : AF_INET;
-       port=linphone_address_get_port(addr);
-       if (port==NULL) port="5060";
-       err=getaddrinfo(linphone_address_get_domain(addr),port,&hints,&res);
-       if (err!=0){
-               ms_error("getaddrinfo() failed for %s: %s",linphone_address_get_domain(addr),gai_strerror(err));
-               linphone_address_destroy(addr);
-               return;
-       }
-       //connect the udp socket
-       err=connect(sipsock,res->ai_addr,res->ai_addrlen);
-       if (err==-1){
-               ms_error("Connect failed: %s",strerror(errno));
-       }
-       freeaddrinfo(res);
-       //create CFRead stream from the sip socket id
-       CFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)sipsock, &mReadStream,nil);
-       //configure for persistante connection
-       if (!CFReadStreamSetProperty(mReadStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP)) {
-               ms_error("cannot set service type to voip for read stream");
-       }
-       if (!CFReadStreamOpen(mReadStream)) {
-               ms_error("cannot open read stream");
-       }               
-
-\endcode
-<br> Note this operation has to be performed every time the application enters in background mode.
-<br> Anyway, for battery saving and interoperability with NAT routers reasons, <b>UDP background mode is not recomended</b>.<br>
-The choice between UDP and TCP transport for sip can be configured with linphone_core_set_sip_transports().
+For TCP, liblinphone automatically configures SIP socket for voip  (I.E kCFStreamNetworkServiceType set to kCFStreamNetworkServiceTypeVoIP). 
+<br><b>Since IOS > 4.1 Apple disabled voip mode for UDP sockets </b> 
 <li><b>Entering background mode</b>
 <br> Before entering in background mode (through \code - (void)applicationDidEnterBackground:(UIApplication *)application \endcode  ), the application must first refresh sip registration using function #linphone_core_refresh_registers();
 and register a keep-alive handler for periodically refreshing the registration. The speudo code below shows how to register a keep alive handler:
@@ -287,7 +250,7 @@ and register a keep-alive handler for periodically refreshing the registration.
 <li><b>Incoming call notification while in background mode</b>
 <br>Assuming application using liblinphone is well configured for multitasking, incoming calls arriving while liblinphone is in background mode will simply wakeup liblinphone thread but not resume GUI. To wakeup GUI, it is recommended to send a Local Notification to the user from the #LinphoneCallStateCb. Here under a speudo code for this operation:
 \code
-       if ([UIApplication sharedApplication].applicationState ==  UIApplicationStateBackground) {
+       if ([UIApplication sharedApplication].applicationState !=  UIApplicationStateActive) {
                // Create a new notification
                UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease];
                if (notif) {
@@ -346,6 +309,79 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
        
 \endcode  
 </ul>
+<b> Sound cards </b>
+<br> Since IOS 5.0, liblinphone supports 2 sound cards. <i>AU: Audio Unit Receiver</i> based on IO units for voice calls plus <i>AQ: Audio Queue Device</i> dedicated to rings. Here under the recommended settings (I.E default one)
+\code
+       linphone_core_set_playback_device(lc, "AU: Audio Unit Receiver");
+       linphone_core_set_ringer_device(lc, "AQ: Audio Queue Device");
+       linphone_core_set_capture_device(lc, "AU: Audio Unit Receiver");
+\endcode
+<b> GSM call interaction </b>
+<br> To ensure gentle interaction with GSM calls, it is recommended to register an AudioSession delegate. This allows the application to be notified when its audio session is interrupted/resumed (presumably by a GSM call).
+\code
+    // declare a class handling the AVAudioSessionDelegate protocol
+    @interface MyClass : NSObject <AVAudioSessionDelegate> { [...] }
+    // implement 2 methods : here's an example implementation
+    -(void) beginInterruption {
+        LinphoneCall* c = linphone_core_get_current_call(theLinphoneCore);
+        ms_message("Sound interruption detected!");
+        if (c) {
+            linphone_core_pause_call(theLinphoneCore, c);
+        }
+    }
+
+    -(void) endInterruption {
+        ms_message("Sound interruption ended!");
+        const MSList* c = linphone_core_get_calls(theLinphoneCore);
+    
+        if (c) {
+            ms_message("Auto resuming call");
+            linphone_core_resume_call(theLinphoneCore, (LinphoneCall*) c->data);
+        }
+    }
+\endcode
+@see http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioSessionDelegate_ProtocolReference/Reference/Reference.html
+
+<br> Declare an instance of your class as AudioSession's delegate :
+\code
+    [audioSession setDelegate:myClassInstance];
+\endcode
+@see http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html
+
+<b> Video </b>
+<br>Since 3.5 video support has been added to liblinphone for IOS. It requires the application to provide liblinphone with pointers to IOS's views hosting video display and video previous.
+<br> These 2 UIView objects must be passed to the core using functions  #linphone_core_set_native_video_window_id() and        #linphone_core_set_native_preview_window_id(). here under speudo code:
+\code
+       UIView* display = [[UIView alloc] init];
+       UIView* preview = [[UIView alloc] init];
+       linphone_core_set_native_video_window_id(lc,(unsigned long)display);    
+       linphone_core_set_native_preview_window_id(lc,(unsigned long)preview);
+\endcode
+<br> Screen rotations are also handled by liblinphone. 2 positions are currently supported, namely <i>UIInterfaceOrientationPortrait</i> and <i>UIInterfaceOrientationLandscapeRight</i>. Applications may invoke #linphone_core_set_device_rotation() followed by #linphone_core_update_call() to notify liblinphone of an orientation change. Here under a speudo code to handle orientation changes
+\code
+
+-(void) configureOrientation:(UIInterfaceOrientation) oritentation  {
+       int oldLinphoneOrientation = linphone_core_get_device_rotation(lc);
+       if (oritentation == UIInterfaceOrientationPortrait ) {
+               linphone_core_set_native_video_window_id(lc,(unsigned long)display-portrait);   
+               linphone_core_set_native_preview_window_id(lc,(unsigned long)preview-portrait);
+               linphone_core_set_device_rotation(lc, 0);
+               
+       } else if (oritentation == UIInterfaceOrientationLandscapeRight ) {
+               linphone_core_set_native_video_window_id(lc,(unsigned long)display-landscape);  
+               linphone_core_set_native_preview_window_id(lc,(unsigned long)preview-landscape);
+               linphone_core_set_device_rotation(lc, 270);
+       }
+       
+       if ((oldLinphoneOrientation != linphone_core_get_device_rotation(lc))
+               && linphone_core_get_current_call(lc)) {
+               //Orientation has changed, must call update call
+               linphone_core_update_call(lc, linphone_core_get_current_call(lc), NULL);
+       }
+}
+
+\endcode
+
 <b>DTMF feebacks</b>
 <br>Liblinphone provides functions \link #linphone_core_play_dtmf() to play dtmf \endlink to the local user. Usually this is used to play a sound when the user presses a digit, inside or outside of any call. On IOS, libLinphone relies on AudioUnits for interfacing with the audio system. Unfortunately the Audio Unit initialization is a quite long operation that may trigger a bad user experience if performed each time a DTMF is played, the sound being delayed half a second after the press. To solve this issue and thus insure real-time precision, liblinphone introduces 2 functions for \link linphone_core_start_dtmf_stream() preloading \endlink and \link #linphone_core_start_dtmf_stream() unloading \endlink the underlying audio graph responsible for playing DTMFs.  
 <br> For an application using function #linphone_core_play_dtmf(), it is recommanded to call #linphone_core_start_dtmf_stream() when entering in foreground and #linphone_core_stop_dtmf_stream() upon entering background mode. 
diff --git a/coreapi/linphone_tunnel.cc b/coreapi/linphone_tunnel.cc
new file mode 100644 (file)
index 0000000..5a341ac
--- /dev/null
@@ -0,0 +1,169 @@
+/***************************************************************************
+ *            linphone_tunnel.cc
+ *
+ *  Fri Dec 9, 2011
+ *  Copyright  2011  Belledonne Communications
+ *  Author: Guillaume Beraudo
+ *  Email: guillaume dot beraudo at linphone dot org
+ ****************************************************************************/
+
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "TunnelManager.hh"
+#include "linphone_tunnel.h"
+#include "linphonecore.h"
+#include "private.h"
+#include "lpconfig.h"
+
+static inline belledonnecomm::TunnelManager *bcTunnel(LinphoneTunnel *tunnel){
+       return (belledonnecomm::TunnelManager *)tunnel;
+}
+
+extern "C" LinphoneTunnel* linphone_core_tunnel_new(LinphoneCore *lc){
+       LinphoneTunnel* tunnel= (LinphoneTunnel*) new belledonnecomm::TunnelManager(lc);
+       return tunnel;
+}
+
+LinphoneTunnel* linphone_core_get_tunnel(LinphoneCore *lc){
+       return lc->tunnel;
+}
+
+void linphone_tunnel_destroy(LinphoneTunnel *tunnel){
+       delete bcTunnel(tunnel);
+}
+
+void linphone_tunnel_add_server(LinphoneTunnel *tunnel, const char *host, int port){
+       bcTunnel(tunnel)->addServer(host, port);
+}
+
+void linphone_tunnel_add_server_and_mirror(LinphoneTunnel *tunnel, const char *host, int port, int remote_udp_mirror, int delay){
+       bcTunnel(tunnel)->addServer(host, port, remote_udp_mirror, delay);
+}
+
+void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel){
+       bcTunnel(tunnel)->cleanServers();
+}
+
+void linphone_tunnel_enable(LinphoneTunnel *tunnel, bool_t enabled){
+       bcTunnel(tunnel)->enable(enabled);
+}
+
+bool_t linphone_tunnel_enabled(LinphoneTunnel *tunnel){
+       return bcTunnel(tunnel)->isEnabled();
+}
+
+void linphone_tunnel_enable_logs(LinphoneTunnel *tunnel, bool_t enabled){
+       bcTunnel(tunnel)->enableLogs(enabled);
+}
+
+void linphone_tunnel_enable_logs_with_handler(LinphoneTunnel *tunnel, bool_t enabled, LogHandler logHandler){
+       bcTunnel(tunnel)->enableLogs(enabled, logHandler);
+}
+
+void linphone_tunnel_set_http_proxy_auth_info(LinphoneTunnel *tunnel, const char* username,const char* passwd){
+       bcTunnel(tunnel)->setHttpProxyAuthInfo(username, passwd);
+}
+
+void linphone_tunnel_reconnect(LinphoneTunnel *tunnel){
+       bcTunnel(tunnel)->reconnect();
+}
+
+void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel){
+       bcTunnel(tunnel)->autoDetect();
+}
+
+
+static inline _LpConfig *config(LinphoneTunnel *tunnel){
+       return ((belledonnecomm::TunnelManager *)tunnel)->getLinphoneCore()->config;
+}
+
+/**
+ * Set tunnel server addresses. "host1:port1 host2:port2 host3:port3"
+**/
+void linphone_tunnel_set_server_addresses(LinphoneTunnel *tunnel, const char *addresses){
+       lp_config_set_string(config(tunnel),"tunnel","server_addresses",addresses);
+}
+
+/**
+ * Get tunnel server addresses. "host1:port1 host2:port2 host3:port3"
+**/
+const char *linphone_tunnel_get_server_addresses(LinphoneTunnel *tunnel){
+       return lp_config_get_string(config(tunnel),"tunnel","server_addresses", NULL);
+}
+
+/**
+ * Set tunnel state.
+**/
+void linphone_tunnel_set_state(LinphoneTunnel *tunnel, LinphoneTunnelState state){
+       switch (state) {
+               case LinphoneTunnelEnabled:
+                       lp_config_set_string(config(tunnel),"tunnel","tunnel_state","enabled");
+                       break;
+               case LinphoneTunnelDisabled:
+                       lp_config_set_string(config(tunnel),"tunnel","tunnel_state","disabled");
+                       break;
+               case LinphoneTunnelAuto:
+                       lp_config_set_string(config(tunnel),"tunnel","tunnel_state","auto");
+                       break;
+       }
+}
+
+/**
+ * Get tunnel state.
+**/
+LinphoneTunnelState linphone_tunnel_get_state(LinphoneTunnel *tunnel){
+       const char *state=lp_config_get_string(config(tunnel),"tunnel","tunnel_state","disabled");
+       if (0==strcmp("enabled", state)){
+               return LinphoneTunnelEnabled;
+       } else if (0==strcmp("auto", state)){
+               return LinphoneTunnelAuto;
+       } else {
+               return LinphoneTunnelDisabled;
+       }
+}
+
+static void tunnel_add_servers_from_config(LinphoneTunnel *tunnel, const char* confaddress){
+       char *addresses=(char*)ms_strdup(confaddress);
+       char *str1;
+       for(str1=addresses;;str1=NULL){
+               char *port;
+               char *address=strtok(str1," "); // Not thread safe
+               if (!address) break;
+               port=strchr(address, ':');
+               if (!port) ms_fatal("Bad tunnel address %s", address);
+               *port++='\0';
+               linphone_tunnel_add_server(tunnel, address, atoi(port));
+       }
+       ms_free(addresses);
+}
+
+/**
+ * Update tunnel using configuration.
+ */
+void linphone_tunnel_update(LinphoneTunnel *tunnel){
+       bool_t enabled;
+       const char* addresses=linphone_tunnel_get_server_addresses(tunnel);
+       linphone_tunnel_clean_servers(tunnel);
+       if (addresses){
+               tunnel_add_servers_from_config(tunnel,addresses);
+       }
+       enabled=linphone_tunnel_get_state(tunnel)==LinphoneTunnelEnabled && addresses!=NULL;
+       linphone_tunnel_enable(tunnel, enabled);
+}
+
+
+
diff --git a/coreapi/linphone_tunnel.h b/coreapi/linphone_tunnel.h
new file mode 100644 (file)
index 0000000..fe9675e
--- /dev/null
@@ -0,0 +1,89 @@
+/***************************************************************************
+ *            linphone_tunnel.h
+ *
+ *  Fri Dec 9, 2011
+ *  Copyright  2011  Belledonne Communications
+ *  Author: Guillaume Beraudo
+ *  Email: guillaume dot beraudo at linphone dot org
+ ****************************************************************************/
+
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#ifndef LINPHONETUNNELMANAGER_H
+#define LINPHONETUNNELMANAGER_H
+
+#include "linphonecore.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef void (*LogHandler)(int log_level, const char *str, va_list l);
+
+void linphone_tunnel_add_server(LinphoneTunnel *tunnel, const char *host, int port);
+void linphone_tunnel_add_server_and_mirror(LinphoneTunnel *tunnel, const char *host, int port, int remote_udp_mirror, int delay);
+void linphone_tunnel_clean_servers(LinphoneTunnel *tunnel);
+void linphone_tunnel_enable(LinphoneTunnel *tunnel, bool_t enabled);
+bool_t linphone_tunnel_enabled(LinphoneTunnel *tunnel);
+void linphone_tunnel_enable_logs(LinphoneTunnel *tunnel, bool_t enabled);
+void linphone_tunnel_enable_logs_with_handler(LinphoneTunnel *tunnel, bool_t enabled, LogHandler logHandler);
+void linphone_tunnel_reconnect(LinphoneTunnel *tunnel);
+void linphone_tunnel_auto_detect(LinphoneTunnel *tunnel);
+void linphone_tunnel_set_http_proxy_auth_info(LinphoneTunnel*tunnel, const char* username,const char* passwd);
+
+
+/**
+ * LinphoneTunnelState describes the tunnel activation states.
+ */
+typedef enum _LinphoneTunnelState{
+       LinphoneTunnelDisabled, /**<The tunnel is always off */
+       LinphoneTunnelEnabled, /**<The tunnel is always on */
+       LinphoneTunnelAuto /**<The tunnel is active if needed */
+}LinphoneTunnelState;
+
+/**
+ * Set tunnel addresses.
+**/
+void linphone_tunnel_set_server_addresses(LinphoneTunnel *tunnel, const char *lists);
+
+/**
+ * Get tunnel addresses.
+**/
+const char *linphone_tunnel_get_server_addresses(LinphoneTunnel *tunnel);
+
+/**
+ * Set tunnel state.
+**/
+void linphone_tunnel_set_state(LinphoneTunnel *tunnel, LinphoneTunnelState state);
+
+/**
+ * Get tunnel state.
+**/
+LinphoneTunnelState linphone_tunnel_get_state(LinphoneTunnel *tunnel);
+
+/**
+ * Update tunnel connection after setting new server addresses.
+**/
+void linphone_tunnel_update(LinphoneTunnel *tunnel);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
index dee7a21cc79a7393221dafb1fc99880f5a31bf51..15672211fb86f5b9354fe3aa6225e51e5c9b5943 100644 (file)
@@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "lpconfig.h"
 #include "private.h"
 #include <ortp/event.h>
+#include <ortp/b64.h>
 
 
 #include "mediastreamer2/mediastream.h"
@@ -41,20 +42,29 @@ static MSWebCam *get_nowebcam_device(){
 }
 #endif
 
-LinphoneCore *linphone_call_get_core(const LinphoneCall *call){
-       return call->core;
+static bool_t generate_b64_crypto_key(int key_length, char* key_out) {
+       int b64_size;
+       uint8_t* tmp = (uint8_t*) malloc(key_length);                   
+       if (ortp_crypto_get_random(tmp, key_length)!=0) {
+               ms_error("Failed to generate random key");
+               free(tmp);
+               return FALSE;
+       }
+       
+       b64_size = b64_encode((const char*)tmp, key_length, NULL, 0);
+       if (b64_size == 0) {
+               ms_error("Failed to b64 encode key");
+               free(tmp);
+               return FALSE;
+       }
+       key_out[b64_size] = '\0';
+       b64_encode((const char*)tmp, key_length, key_out, 40);
+       free(tmp);
+       return TRUE;
 }
 
-static const char* get_hexa_zrtp_identifier(LinphoneCore *lc){
-       const char *confZid=lp_config_get_string(lc->config,"rtp","zid",NULL);
-       if (confZid != NULL) {
-               return confZid;
-       } else {
-        char zidstr[128];
-        snprintf(zidstr,sizeof(zidstr),"%x-%x-%x",rand(),rand(),rand());
-               lp_config_set_string(lc->config,"rtp","zid",zidstr);
-               return lp_config_get_string(lc->config,"rtp","zid",NULL);
-       }
+LinphoneCore *linphone_call_get_core(const LinphoneCall *call){
+       return call->core;
 }
 
 const char* linphone_call_get_authentication_token(LinphoneCall *call){
@@ -64,7 +74,8 @@ const char* linphone_call_get_authentication_token(LinphoneCall *call){
 bool_t linphone_call_get_authentication_token_verified(LinphoneCall *call){
        return call->auth_token_verified;
 }
-bool_t linphone_call_are_all_streams_encrypted(LinphoneCall *call) {
+
+static bool_t linphone_call_are_all_streams_encrypted(LinphoneCall *call) {
        // Check ZRTP encryption in audiostream
        if (!call->audiostream_encrypted) {
                return FALSE;
@@ -82,14 +93,17 @@ bool_t linphone_call_are_all_streams_encrypted(LinphoneCall *call) {
 }
 
 void propagate_encryption_changed(LinphoneCall *call){
-       if (call->core->vtable.call_encryption_changed == NULL) return;
-
+       LinphoneCore *lc=call->core;
        if (!linphone_call_are_all_streams_encrypted(call)) {
                ms_message("Some streams are not encrypted");
-               call->core->vtable.call_encryption_changed(call->core, call, FALSE, call->auth_token);
+               call->current_params.media_encryption=LinphoneMediaEncryptionNone;
+               if (lc->vtable.call_encryption_changed)
+                       lc->vtable.call_encryption_changed(call->core, call, FALSE, call->auth_token);
        } else {
                ms_message("All streams are encrypted");
-               call->core->vtable.call_encryption_changed(call->core, call, TRUE, call->auth_token);
+               call->current_params.media_encryption=LinphoneMediaEncryptionZRTP;
+               if (lc->vtable.call_encryption_changed)
+                       lc->vtable.call_encryption_changed(call->core, call, TRUE, call->auth_token);
        }
 }
 
@@ -109,7 +123,7 @@ static void linphone_call_audiostream_encryption_changed(void *data, bool_t encr
 
        LinphoneCall *call = (LinphoneCall *)data;
        call->audiostream_encrypted=encrypted;
-
+       
        if (encrypted && call->core->vtable.display_status != NULL) {
                snprintf(status,sizeof(status)-1,_("Authentication token is %s"),call->auth_token);
                 call->core->vtable.display_status(call->core, status);
@@ -124,7 +138,6 @@ static void linphone_call_audiostream_encryption_changed(void *data, bool_t encr
        if (params->has_video) {
                ms_message("Trying to enable encryption on video stream");
                OrtpZrtpParams params;
-               params.zid=get_hexa_zrtp_identifier(call->core);
                params.zid_file=NULL; //unused
                video_stream_enable_zrtp(call->videostream,call->audiostream,&params);
        }
@@ -143,6 +156,21 @@ static void linphone_call_audiostream_auth_token_ready(void *data, const char* a
        ms_message("Authentication token is %s (%s)", auth_token, verified?"verified":"unverified");
 }
 
+void linphone_call_set_authentication_token_verified(LinphoneCall *call, bool_t verified){
+       if (call->audiostream==NULL){
+               ms_error("linphone_call_set_authentication_token_verified(): No audio stream");
+       }
+       if (call->audiostream->ortpZrtpContext==NULL){
+               ms_error("linphone_call_set_authentication_token_verified(): No zrtp context.");
+       }
+       if (!call->auth_token_verified && verified){
+               ortp_zrtp_sas_verified(call->audiostream->ortpZrtpContext);
+       }else if (call->auth_token_verified && !verified){
+               ortp_zrtp_sas_reset_verified(call->audiostream->ortpZrtpContext);
+       }
+       call->auth_token_verified=verified;
+       propagate_encryption_changed(call);
+}
 
 static MSList *make_codec_list(LinphoneCore *lc, const MSList *codecs, int bandwidth_limit){
        MSList *l=NULL;
@@ -165,6 +193,7 @@ static MSList *make_codec_list(LinphoneCore *lc, const MSList *codecs, int bandw
 static SalMediaDescription *_create_local_media_description(LinphoneCore *lc, LinphoneCall *call, unsigned int session_id, unsigned int session_ver){
        MSList *l;
        PayloadType *pt;
+       int i;
        const char *me=linphone_core_get_identity(lc);
        LinphoneAddress *addr=linphone_address_new(me);
        const char *username=linphone_address_get_username (addr);
@@ -180,7 +209,8 @@ static SalMediaDescription *_create_local_media_description(LinphoneCore *lc, Li
        /*set audio capabilities */
        strncpy(md->streams[0].addr,call->localip,sizeof(md->streams[0].addr));
        md->streams[0].port=call->audio_port;
-       md->streams[0].proto=SalProtoRtpAvp;
+       md->streams[0].proto=(call->params.media_encryption == LinphoneMediaEncryptionSRTP) ? 
+               SalProtoRtpSavp : SalProtoRtpAvp;
        md->streams[0].type=SalAudio;
        md->streams[0].ptime=lc->net_conf.down_ptime;
        l=make_codec_list(lc,lc->codecs_conf.audio_codecs,call->params.audio_bw);
@@ -192,11 +222,26 @@ static SalMediaDescription *_create_local_media_description(LinphoneCore *lc, Li
        if (call->params.has_video){
                md->nstreams++;
                md->streams[1].port=call->video_port;
-               md->streams[1].proto=SalProtoRtpAvp;
+               md->streams[1].proto=md->streams[0].proto;
                md->streams[1].type=SalVideo;
                l=make_codec_list(lc,lc->codecs_conf.video_codecs,0);
                md->streams[1].payloads=l;
        }
+       
+       for(i=0; i<md->nstreams; i++) {
+               if (md->streams[i].proto == SalProtoRtpSavp) {
+                       md->streams[i].crypto[0].tag = 1;
+                       md->streams[i].crypto[0].algo = AES_128_SHA1_80;
+                       if (!generate_b64_crypto_key(30, md->streams[i].crypto[0].master_key))
+                               md->streams[i].crypto[0].algo = 0;
+                       md->streams[i].crypto[1].tag = 2;
+                       md->streams[i].crypto[1].algo = AES_128_SHA1_32;
+                       if (!generate_b64_crypto_key(30, md->streams[i].crypto[1].master_key))
+                               md->streams[i].crypto[1].algo = 0;
+                       md->streams[i].crypto[2].algo = 0;
+               }
+       }
+       
        linphone_address_destroy(addr);
        return md;
 }
@@ -286,7 +331,7 @@ LinphoneCall * linphone_call_new_outgoing(struct _LinphoneCore *lc, LinphoneAddr
                linphone_core_run_stun_tests(call->core,call);
        discover_mtu(lc,linphone_address_get_domain (to));
        if (params->referer){
-               sal_call_set_referer (call->op,params->referer->op);
+               sal_call_set_referer(call->op,params->referer->op);
        }
        return call;
 }
@@ -304,7 +349,7 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro
                /*the following sends an option request back to the caller so that
                 we get a chance to discover our nat'd address before answering.*/
                call->ping_op=sal_op_new(lc->sal);
-               from_str=linphone_address_as_string(from);
+               from_str=linphone_address_as_string_uri_only(from);
                sal_op_set_route(call->ping_op,sal_op_get_network_origin(call->op));
                sal_op_set_user_pointer(call->ping_op,call);
                sal_ping(call->ping_op,linphone_core_find_best_identity(lc,from,NULL),from_str);
@@ -314,7 +359,7 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro
        linphone_address_clean(from);
        linphone_core_get_local_ip(lc,linphone_address_get_domain(from),call->localip);
        linphone_call_init_common(call, from, to);
-       call->params.has_video=linphone_core_video_enabled(lc);
+       linphone_core_init_default_params(lc, &call->params);
        call->localdesc=create_local_media_description (lc,call);
        call->camera_active=call->params.has_video;
        if (linphone_core_get_firewall_policy(call->core)==LinphonePolicyUseStun)
@@ -350,7 +395,7 @@ static void linphone_call_set_terminated(LinphoneCall *call){
        if (ms_list_size(lc->calls)==0)
                linphone_core_notify_all_friends(lc,lc->presence_mode);
 
-       linphone_core_conference_check_uninit(&lc->conf_ctx);
+       linphone_core_conference_check_uninit(lc);
        if (call->ringing_beep){
                linphone_core_stop_dtmf(lc);
                call->ringing_beep=FALSE;
@@ -408,7 +453,7 @@ void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const
                if (call->state==LinphoneCallEnd || call->state==LinphoneCallError){
                        if (cstate!=LinphoneCallReleased){
                                ms_warning("Spurious call state change from %s to %s, ignored.",linphone_call_state_to_string(call->state),
-                          linphone_call_state_to_string(cstate));
+                                  linphone_call_state_to_string(cstate));
                                return;
                        }
                }
@@ -421,13 +466,14 @@ void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const
                }
                if (cstate==LinphoneCallEnd || cstate==LinphoneCallError){
              if (call->reason==LinphoneReasonDeclined){
-                 call->log->status=LinphoneCallDeclined;
-             }
-            linphone_call_set_terminated (call);
+                               call->log->status=LinphoneCallDeclined;
+                       }
+                       linphone_call_set_terminated (call);
+               }
+               if (cstate == LinphoneCallConnected) {
+                       call->log->status=LinphoneCallSuccess;
+                       call->media_start_time=time(NULL);
                }
-        if (cstate == LinphoneCallConnected) {
-            call->log->status=LinphoneCallSuccess;
-        }
 
                if (lc->vtable.call_state_changed)
                        lc->vtable.call_state_changed(lc,call,cstate,message);
@@ -679,6 +725,15 @@ bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp){
        return cp->has_video;
 }
 
+enum LinphoneMediaEncryption linphone_call_params_get_media_encryption(const LinphoneCallParams *cp) {
+       return cp->media_encryption;
+}
+
+void linphone_call_params_set_media_encryption(LinphoneCallParams *cp, enum LinphoneMediaEncryption e) {
+       cp->media_encryption = e;
+}
+
+
 /**
  * Enable sending of real early media (during outgoing calls).
 **/
@@ -790,8 +845,11 @@ void linphone_call_init_media_streams(LinphoneCall *call){
                audio_stream_enable_noise_gate(audiostream,enabled);
        }
 
-       if (lc->a_rtp)
-               rtp_session_set_transports(audiostream->session,lc->a_rtp,lc->a_rtcp);
+       if (lc->rtptf){
+               RtpTransport *artp=lc->rtptf->audio_rtp_func(lc->rtptf->audio_rtp_func_data, call->audio_port);
+               RtpTransport *artcp=lc->rtptf->audio_rtcp_func(lc->rtptf->audio_rtcp_func_data, call->audio_port+1);
+               rtp_session_set_transports(audiostream->session,artp,artcp);
+       }
 
        call->audiostream_app_evq = ortp_ev_queue_new();
        rtp_session_register_event_queue(audiostream->session,call->audiostream_app_evq);
@@ -803,8 +861,11 @@ void linphone_call_init_media_streams(LinphoneCall *call){
        if( lc->video_conf.displaytype != NULL)
                video_stream_set_display_filter_name(call->videostream,lc->video_conf.displaytype);
        video_stream_set_event_callback(call->videostream,video_stream_event_cb, call);
-       if (lc->v_rtp)
-               rtp_session_set_transports(call->videostream->session,lc->v_rtp,lc->v_rtcp);
+       if (lc->rtptf){
+               RtpTransport *vrtp=lc->rtptf->video_rtp_func(lc->rtptf->video_rtp_func_data, call->video_port);
+               RtpTransport *vrtcp=lc->rtptf->video_rtcp_func(lc->rtptf->video_rtcp_func_data, call->video_port+1);
+               rtp_session_set_transports(call->videostream->session,vrtp,vrtcp);
+       }
        call->videostream_app_evq = ortp_ev_queue_new();
        rtp_session_register_event_queue(call->videostream->session,call->videostream_app_evq);
 #ifdef TEST_EXT_RENDERER
@@ -984,12 +1045,25 @@ static bool_t linphone_call_sound_resources_available(LinphoneCall *call){
        return !linphone_core_is_in_conference(lc) && 
                (current==NULL || current==call);
 }
-
+static int find_crypto_index_from_tag(const SalSrtpCryptoAlgo crypto[],unsigned char tag) {
+       int i;
+       for(i=0; i<SAL_CRYPTO_ALGO_MAX; i++) {
+               if (crypto[i].tag == tag) {
+                       return i;
+               }
+       }
+       return -1;
+}
 static void linphone_call_start_audio_stream(LinphoneCall *call, const char *cname, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){
        LinphoneCore *lc=call->core;
        int jitt_comp=lc->rtp_conf.audio_jitt_comp;
        int used_pt=-1;
+       /* look for savp stream first */
        const SalStreamDescription *stream=sal_media_description_find_stream(call->resultdesc,
+                                               SalProtoRtpSavp,SalAudio);
+       /* no savp audio stream, use avp */
+       if (!stream)
+               stream=sal_media_description_find_stream(call->resultdesc,
                                                SalProtoRtpAvp,SalAudio);
 
        if (stream && stream->dir!=SalStreamInactive && stream->port!=0){
@@ -1066,10 +1140,23 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, const char *cna
                                setup_ring_player(lc,call);
                        }
                        audio_stream_set_rtcp_information(call->audiostream, cname, LINPHONE_RTCP_SDES_TOOL);
+                       
+                       if (stream->proto == SalProtoRtpSavp) {
+                               const SalStreamDescription *local_st_desc=sal_media_description_find_stream(call->localdesc,
+                                               SalProtoRtpSavp,SalAudio);
+                               audio_stream_enable_strp(
+                                       call->audiostream, 
+                                       stream->crypto[0].algo,
+                                       local_st_desc->crypto[find_crypto_index_from_tag(local_st_desc->crypto,stream->crypto[0].tag)].master_key,
+                                       stream->crypto[0].master_key);
+                               call->audiostream_encrypted=TRUE;
+                       }else call->audiostream_encrypted=FALSE;
                        if (call->params.in_conference){
                                /*transform the graph to connect it to the conference filter */
-                               linphone_call_add_to_conf(call);
+                               bool_t mute=stream->dir==SalStreamRecvOnly;
+                               linphone_call_add_to_conf(call, mute);
                        }
+                       call->current_params.in_conference=call->params.in_conference;
                }else ms_warning("No audio stream accepted ?");
        }
 }
@@ -1078,8 +1165,14 @@ static void linphone_call_start_video_stream(LinphoneCall *call, const char *cna
 #ifdef VIDEO_ENABLED
        LinphoneCore *lc=call->core;
        int used_pt=-1;
+       /* look for savp stream first */
        const SalStreamDescription *vstream=sal_media_description_find_stream(call->resultdesc,
-                                                       SalProtoRtpAvp,SalVideo);
+                                               SalProtoRtpSavp,SalVideo);
+       /* no savp audio stream, use avp */
+       if (!vstream)
+               vstream=sal_media_description_find_stream(call->resultdesc,
+                                               SalProtoRtpAvp,SalVideo);
+                                               
        /* shutdown preview */
        if (lc->previewstream!=NULL) {
                video_preview_stop(lc->previewstream);
@@ -1136,6 +1229,21 @@ static void linphone_call_start_video_stream(LinphoneCall *call, const char *cna
                                        used_pt, lc->rtp_conf.audio_jitt_comp, cam);
                                video_stream_set_rtcp_information(call->videostream, cname,LINPHONE_RTCP_SDES_TOOL);
                        }
+                       
+                       if (vstream->proto == SalProtoRtpSavp) {
+                               const SalStreamDescription *local_st_desc=sal_media_description_find_stream(call->localdesc,
+                                               SalProtoRtpSavp,SalVideo);
+                                               
+                               video_stream_enable_strp(
+                                       call->videostream, 
+                                       vstream->crypto[0].algo,
+                                       local_st_desc->crypto[0].master_key, 
+                                       vstream->crypto[0].master_key
+                                       );
+                               call->videostream_encrypted=TRUE;
+                       }else{
+                               call->videostream_encrypted=FALSE;
+                       }
                }else ms_warning("No video stream accepted.");
        }else{
                ms_warning("No valid video stream defined.");
@@ -1147,7 +1255,7 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut
        LinphoneCore *lc=call->core;
        LinphoneAddress *me=linphone_core_get_primary_contact_parsed(lc);
        char *cname;
-       bool_t use_arc;
+       bool_t use_arc=linphone_core_adaptive_rate_control_enabled(lc);
 #ifdef VIDEO_ENABLED
        const SalStreamDescription *vstream=sal_media_description_find_stream(call->resultdesc,
                                                        SalProtoRtpAvp,SalVideo);
@@ -1158,8 +1266,6 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut
                ms_fatal("start_media_stream() called without prior init !");
                return;
        }
-       call->current_params = call->params;
-       if (call->media_start_time==0) call->media_start_time=time(NULL);
        cname=linphone_address_as_string_uri_only(me);
 
 #if defined(VIDEO_ENABLED)
@@ -1177,11 +1283,19 @@ void linphone_call_start_media_streams(LinphoneCall *call, bool_t all_inputs_mut
        call->playing_ringbacktone=send_ringbacktone;
        call->up_bw=linphone_core_get_upload_bandwidth(lc);
 
-       if (ortp_zrtp_available()) {
+       if (call->params.media_encryption==LinphoneMediaEncryptionZRTP) {
                OrtpZrtpParams params;
-               params.zid=get_hexa_zrtp_identifier(lc);
+               /*will be set later when zrtp is activated*/
+               call->current_params.media_encryption=LinphoneMediaEncryptionNone;
+               
                params.zid_file=lc->zrtp_secrets_cache;
                audio_stream_enable_zrtp(call->audiostream,&params);
+       }else if (call->params.media_encryption==LinphoneMediaEncryptionSRTP){
+               call->current_params.media_encryption=linphone_call_are_all_streams_encrypted(call) ?
+                       LinphoneMediaEncryptionSRTP : LinphoneMediaEncryptionNone;
+               /*also reflect the change if the "wished" params, in order to avoid to propose SAVP again
+                * further in the call, for example during pause,resume, conferencing reINVITEs*/
+               call->params.media_encryption=call->current_params.media_encryption;
        }
 
        goto end;
@@ -1205,7 +1319,7 @@ void linphone_call_stop_media_streams(LinphoneCall *call){
                        const char *state_str=NULL;
                        ms_filter_call_method(call->audiostream->ec,MS_ECHO_CANCELLER_GET_STATE_STRING,&state_str);
                        if (state_str){
-                               ms_message("Writing echo canceller state, %i bytes",(int)strlen(state_str));
+                               ms_message("Writing echo canceler state, %i bytes",(int)strlen(state_str));
                                lp_config_set_string(call->core->config,"sound","ec_state",state_str);
                        }
                }
@@ -1427,7 +1541,7 @@ void linphone_call_background_tasks(LinphoneCall *call, bool_t one_second_elapse
                // mediastreamer queue.
                audio_stream_iterate(call->audiostream);
 
-               if (call->audiostream->evq){
+               if (call->audiostream_app_evq){
                        OrtpEvent *ev;
                        while (NULL != (ev=ortp_ev_queue_get(call->audiostream_app_evq))){
                                OrtpEventType evt=ortp_event_get_type(ev);
index afdcf01b3b2773e90ab7816c907fb83cc33714da..735c4705a72648c1f5da98ac47eeaf42a5b50036 100644 (file)
@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "private.h"
 
 #include <ortp/telephonyevents.h>
+#include <ortp/zrtp.h>
 #include "mediastreamer2/mediastream.h"
 #include "mediastreamer2/mseventqueue.h"
 #include "mediastreamer2/msvolume.h"
@@ -35,6 +36,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #endif
 #endif
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 /*#define UNSTANDART_GSM_11K 1*/
 
 #define ROOT_CA_FILE PACKAGE_DATA_DIR "/linphone/rootca.pem"
@@ -496,6 +501,13 @@ static void sip_config_read(LinphoneCore *lc)
        } else {
                tr.tls_port=lp_config_get_int(lc->config,"sip","sip_tls_port",0);
        }
+
+#ifdef __linux
+       sal_set_root_ca(lc->sal, lp_config_get_string(lc->config,"sip","root_ca", "/etc/ssl/certs"));
+#else
+       sal_set_root_ca(lc->sal, lp_config_get_string(lc->config,"sip","root_ca", ROOT_CA_FILE));
+#endif
+       linphone_core_verify_server_certificates(lc,lp_config_get_int(lc->config,"sip","verify_server_certs",TRUE));
        /*start listening on ports*/
        linphone_core_set_sip_transports(lc,&tr);
 
@@ -518,12 +530,6 @@ static void sip_config_read(LinphoneCore *lc)
                ms_free(contact);
        }
 
-#ifdef __linux
-       sal_root_ca(lc->sal, lp_config_get_string(lc->config,"sip","root_ca", "/etc/ssl/certs"));
-#else
-       sal_root_ca(lc->sal, lp_config_get_string(lc->config,"sip","root_ca", ROOT_CA_FILE));
-#endif
-
        tmp=lp_config_get_int(lc->config,"sip","guess_hostname",1);
        linphone_core_set_guess_hostname(lc,tmp);
 
@@ -554,6 +560,8 @@ static void sip_config_read(LinphoneCore *lc)
                        break;
                }
        }
+       /*this is to filter out unsupported encryption schemes*/
+       linphone_core_set_media_encryption(lc,linphone_core_get_media_encryption(lc));
 
        /*for tuning or test*/
        lc->sip_conf.sdp_200_ack=lp_config_get_int(lc->config,"sip","sdp_200_ack",0);
@@ -649,7 +657,7 @@ static const char *codec_pref_order[]={
        "gsm",
        "pcmu",
        "pcma",
-       "VP8-DRAFT-0-3-2",
+       "VP8",
        "H264",
        "MP4V-ES",
        "H263-1998",
@@ -740,7 +748,9 @@ static void codecs_config_read(LinphoneCore *lc)
 }
 
 static void video_config_read(LinphoneCore *lc){
+#ifdef VIDEO_ENABLED
        int capture, display, self_view;
+#endif
        const char *str;
        int ndev;
        const char **devices;
@@ -764,13 +774,14 @@ static void video_config_read(LinphoneCore *lc){
        linphone_core_set_preferred_video_size_by_name(lc,
                lp_config_get_string(lc->config,"video","size","cif"));
 
+#ifdef VIDEO_ENABLED
        capture=lp_config_get_int(lc->config,"video","capture",1);
        display=lp_config_get_int(lc->config,"video","display",1);
        self_view=lp_config_get_int(lc->config,"video","self_view",1);
        lc->video_conf.displaytype=lp_config_get_string(lc->config,"video","displaytype",NULL);
        if(lc->video_conf.displaytype)
                ms_message("we are using a specific display:%s\n",lc->video_conf.displaytype);
-#ifdef VIDEO_ENABLED
+
        linphone_core_enable_video(lc,capture,display);
        linphone_core_enable_self_view(lc,self_view);
 #endif
@@ -799,6 +810,14 @@ static void autoreplier_config_init(LinphoneCore *lc)
 }
 */
 
+bool_t linphone_core_tunnel_available(){
+#ifdef TUNNEL_ENABLED
+       return TRUE;
+#else
+       return FALSE;
+#endif
+}
+
 /**
  * Enable adaptive rate control (experimental feature, audio-only).
  *
@@ -978,6 +997,9 @@ static void misc_config_read (LinphoneCore *lc) {
     lc->max_calls=lp_config_get_int(config,"misc","max_calls",NB_MAX_CALLS);
 }
 
+
+
+
 static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vtable, const char *config_path,
     const char *factory_config_path, void * userdata)
 {
@@ -1034,6 +1056,7 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta
        /*add all payload type for which we don't care about the number */
        linphone_core_assign_payload_type(lc,&payload_type_ilbc,-1,"mode=30");
        linphone_core_assign_payload_type(lc,&payload_type_amr,-1,"octet-align=1");
+        linphone_core_assign_payload_type(lc,&payload_type_amrwb,-1,"octet-align=1");
        linphone_core_assign_payload_type(lc,&payload_type_lpc1015,-1,NULL);
        linphone_core_assign_payload_type(lc,&payload_type_g726_16,-1,NULL);
        linphone_core_assign_payload_type(lc,&payload_type_g726_24,-1,NULL);
@@ -1073,6 +1096,10 @@ static void linphone_core_init (LinphoneCore * lc, const LinphoneCoreVTable *vta
        lc->presence_mode=LinphoneStatusOnline;
        misc_config_read(lc);
        ui_config_read(lc);
+#ifdef TUNNEL_ENABLED
+       lc->tunnel=linphone_core_tunnel_new(lc);
+       if (lc->tunnel) linphone_tunnel_update(lc->tunnel);
+#endif
        if (lc->vtable.display_status)
                lc->vtable.display_status(lc,_("Ready"));
        lc->auto_net_state_mon=lc->sip_conf.auto_net_state_mon;
@@ -1470,12 +1497,15 @@ static int apply_transports(LinphoneCore *lc){
        const char *anyaddr;
        LCSipTransports *tr=&lc->sip_conf.transports;
 
+       /*first of all invalidate all current registrations so that we can register again with new transports*/
+       __linphone_core_invalidate_registers(lc);
+       
        if (lc->sip_conf.ipv6_enabled)
                anyaddr="::0";
        else
                anyaddr="0.0.0.0";
 
-       sal_unlisten_ports (sal);
+       sal_unlisten_ports(sal);
        if (tr->udp_port>0){
                if (sal_listen_port (sal,anyaddr,tr->udp_port,SalTransportUDP,FALSE)!=0){
                        transport_error(lc,"udp",tr->udp_port);
@@ -1910,6 +1940,16 @@ void linphone_core_start_refered_call(LinphoneCore *lc, LinphoneCall *call){
 LinphoneProxyConfig * linphone_core_lookup_known_proxy(LinphoneCore *lc, const LinphoneAddress *uri){
        const MSList *elem;
        LinphoneProxyConfig *found_cfg=NULL;
+       LinphoneProxyConfig *default_cfg=lc->default_proxy;
+
+       /*always prefer the default proxy if it is matching the destination uri*/
+       if (default_cfg){
+               const char *domain=linphone_proxy_config_get_domain(default_cfg);
+               if (strcmp(domain,linphone_address_get_domain(uri))==0)
+                       return default_cfg;
+       }
+
+       /*otherwise iterate through the other proxy config and return the first matching*/
        for (elem=linphone_core_get_proxy_config_list(lc);elem!=NULL;elem=elem->next){
                LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
                const char *domain=linphone_proxy_config_get_domain(cfg);
@@ -2228,13 +2268,14 @@ bool_t linphone_core_inc_invite_pending(LinphoneCore*lc){
 }
 
 /**
+ * @ingroup call_control
  * Updates a running call according to supplied call parameters or parameters changed in the LinphoneCore.
  *
  * In this version this is limited to the following use cases:
  * - setting up/down the video stream according to the video parameter of the LinphoneCallParams (see linphone_call_params_enable_video() ).
  * - changing the size of the transmitted video after calling linphone_core_set_preferred_video_size()
  *
- * In case no changes are requested through the LinphoneCallParams argument, then this argument can be ommitted and set to NULL.
+ * In case no changes are requested through the LinphoneCallParams argument, then this argument can be omitted and set to NULL.
  *
  * @return 0 if successful, -1 otherwise.
 **/
@@ -2490,15 +2531,15 @@ LinphoneCall *linphone_core_get_current_call(const LinphoneCore *lc)
  *
  * @ingroup call_control
 **/
-int linphone_core_pause_call(LinphoneCore *lc, LinphoneCall *the_call)
+int linphone_core_pause_call(LinphoneCore *lc, LinphoneCall *call)
 {
-       LinphoneCall *call = the_call;
        const char *subject=NULL;
 
        if (call->state!=LinphoneCallStreamsRunning && call->state!=LinphoneCallPausedByRemote){
                ms_warning("Cannot pause this call, it is not active.");
                return -1;
        }
+       update_local_media_description(lc,call,&call->localdesc);
        if (sal_media_description_has_dir(call->resultdesc,SalStreamSendRecv)){
                sal_media_description_set_dir(call->localdesc,SalStreamSendOnly);
                subject="Call on hold";
@@ -2509,14 +2550,15 @@ int linphone_core_pause_call(LinphoneCore *lc, LinphoneCall *the_call)
                ms_error("No reason to pause this call, it is already paused or inactive.");
                return -1;
        }
+       sal_call_set_local_media_description(call->op,call->localdesc);
        if (sal_call_update(call->op,subject) != 0){
                if (lc->vtable.display_warning)
                        lc->vtable.display_warning(lc,_("Could not pause the call"));
        }
+       lc->current_call=NULL;
        linphone_call_set_state(call,LinphoneCallPausing,"Pausing call");
        if (lc->vtable.display_status)
                lc->vtable.display_status(lc,_("Pausing the current call..."));
-       lc->current_call=NULL;
        if (call->audiostream || call->videostream)
                linphone_call_stop_media_streams (call);
        return 0;
@@ -2569,6 +2611,11 @@ int linphone_core_resume_call(LinphoneCore *lc, LinphoneCall *the_call)
                linphone_core_preempt_sound_resources(lc);
                ms_message("Resuming call %p",call);
        }
+
+       // Stop playing music immediately. If remote side is a conference it
+       // prevents the participants to hear it while the 200OK comes back.
+       audio_stream_play(call->audiostream, NULL);
+
        update_local_media_description(lc,the_call,&call->localdesc);
        sal_call_set_local_media_description(call->op,call->localdesc);
        sal_media_description_set_dir(call->localdesc,SalStreamSendRecv);
@@ -2978,7 +3025,14 @@ const char *linphone_core_get_ring(const LinphoneCore *lc){
  * @ingroup media_parameters
 **/
 void linphone_core_set_root_ca(LinphoneCore *lc,const char *path){
-       sal_root_ca(lc->sal, path);
+       sal_set_root_ca(lc->sal, path);
+}
+
+/**
+ * Specify whether the tls server certificate must be verified when connecting to a SIP/TLS server.
+**/
+void linphone_core_verify_server_certificates(LinphoneCore *lc, bool_t yesno){
+       sal_verify_server_certificates(lc->sal,yesno);
 }
 
 static void notify_end_of_ring(void *ud, MSFilter *f, unsigned int event, void *arg){
@@ -3492,7 +3546,7 @@ unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc){
        return lc->video_window_id;
 }
 
-/**
+/**@ingroup media_parameters
  * Set the native video window id where the video is to be displayed.
  * If not set the core will create its own window.
 **/
@@ -3523,6 +3577,7 @@ unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc)
 }
 
 /**
+ * @ingroup media_parameters
  * Set the native window id where the preview video (local camera) is to be displayed.
  * This has to be used in conjonction with linphone_core_use_preview_window().
  * If not set the core will create its own window.
@@ -3537,6 +3592,19 @@ void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long
 #endif
 }
 
+/**
+ * Can be used to disable video showing to free XV port
+**/
+void linphone_core_show_video(LinphoneCore *lc, bool_t show){
+#ifdef VIDEO_ENABLED
+       ms_error("linphone_core_show_video %d", show);
+       LinphoneCall *call=linphone_core_get_current_call(lc);
+       if (call!=NULL && call->videostream){
+               video_stream_show_video(call->videostream,show);
+       }
+#endif
+}
+
 /**
  * Tells the core to use a separate window for local camera preview video, instead of
  * inserting local view within the remote video window.
@@ -3545,12 +3613,21 @@ void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long
 void linphone_core_use_preview_window(LinphoneCore *lc, bool_t yesno){
        lc->use_preview_window=yesno;
 }
-
 /**
+ * @ingroup media_parameters
+ *returns current device orientation
+ */
+int linphone_core_get_device_rotation(LinphoneCore *lc ) {
+       return lc->device_rotation;
+}
+/**
+ * @ingroup media_parameters
  * Tells the core the device current orientation. This can be used by capture filters
  * on mobile devices to select between portrait/landscape mode and to produce properly
- * orientated images. The exact meaning of the value in rotation if left to each device
+ * oriented images. The exact meaning of the value in rotation if left to each device
  * specific implementations.
+ *@param lc  object.
+ *@param rotation . IOS supported values are 0 for UIInterfaceOrientationPortrait and 270 for UIInterfaceOrientationLandscapeRight.
  *
 **/
 void linphone_core_set_device_rotation(LinphoneCore *lc, int rotation) {
@@ -3572,11 +3649,10 @@ static MSVideoSizeDef supported_resolutions[]={
        {       {MS_VIDEO_SIZE_SVGA_W,MS_VIDEO_SIZE_SVGA_H}     ,       "svga"  },
        {       {MS_VIDEO_SIZE_4CIF_W,MS_VIDEO_SIZE_4CIF_H}     ,       "4cif"  },
        {       {MS_VIDEO_SIZE_VGA_W,MS_VIDEO_SIZE_VGA_H}       ,       "vga"   },
+       {       {MS_VIDEO_SIZE_IOS_MEDIUM_H,MS_VIDEO_SIZE_IOS_MEDIUM_W} ,       "ios-medium"    },
        {       {MS_VIDEO_SIZE_CIF_W,MS_VIDEO_SIZE_CIF_H}       ,       "cif"   },
        {       {MS_VIDEO_SIZE_QVGA_W,MS_VIDEO_SIZE_QVGA_H}     ,       "qvga"  },
-       {       {MS_VIDEO_SIZE_QVGA_H,MS_VIDEO_SIZE_QVGA_W}     ,       "qvga-portrait" },
-       {       {MS_VIDEO_SIZE_QCIF_W,MS_VIDEO_SIZE_QCIF_H}     ,       "qcif"  },
-       {       {MS_VIDEO_SIZE_QCIF_H,MS_VIDEO_SIZE_QCIF_W}     ,       "qcif-portrait" },
+       {       {MS_VIDEO_SIZE_QCIF_W,MS_VIDEO_SIZE_QCIF_H}     ,       "qcif"  },      
        {       {0,0}                   ,       NULL    }
 };
 
@@ -3722,6 +3798,9 @@ static MSFilter *get_dtmf_gen(LinphoneCore *lc){
        if (lc->ringstream==NULL){
                float amp=0.1;
                MSSndCard *ringcard=lc->sound_conf.lsd_card ?lc->sound_conf.lsd_card : lc->sound_conf.ring_sndcard;
+               if (ringcard == NULL)
+                       return NULL;
+
                lc->ringstream=ring_start(NULL,0,ringcard);
                ms_filter_call_method(lc->ringstream->gendtmf,MS_DTMF_GEN_SET_DEFAULT_AMPLITUDE,&amp);
                lc->dmfs_playing_start_time=time(NULL);
@@ -3837,14 +3916,8 @@ void linphone_core_stop_waiting(LinphoneCore *lc){
        }
 }
 
-void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp){
-       lc->a_rtp=rtp;
-       lc->a_rtcp=rtcp;
-}
-
-void linphone_core_set_video_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp){
-       lc->v_rtp=rtp;
-       lc->v_rtcp=rtcp;
+void linphone_core_set_rtp_transport_factories(LinphoneCore* lc, LinphoneRtpTransportFactories *factories){
+       lc->rtptf=factories;
 }
 
 /**
@@ -4075,6 +4148,9 @@ static void linphone_core_uninit(LinphoneCore *lc)
        linphone_core_free_payload_types(lc);
        ortp_exit();
        linphone_core_set_state(lc,LinphoneGlobalOff,"Off");
+#ifdef TUNNEL_ENABLED
+       if (lc->tunnel) linphone_tunnel_destroy(lc->tunnel);
+#endif
 }
 
 static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t curtime){
@@ -4085,7 +4161,7 @@ static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t cu
                LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
                if (linphone_proxy_config_register_enabled(cfg) ) {
                        if (!isReachable) {
-                               cfg->registered=0;
+                               linphone_proxy_config_set_state(cfg, LinphoneRegistrationNone,"Registration impossible (network down)");
                        }else{
                                cfg->commit=TRUE;
                        }
@@ -4100,6 +4176,7 @@ static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t cu
        }
 
 }
+
 void linphone_core_refresh_registers(LinphoneCore* lc) {
        const MSList *elem=linphone_core_get_proxy_config_list(lc);
        for(;elem!=NULL;elem=elem->next){
@@ -4110,6 +4187,17 @@ void linphone_core_refresh_registers(LinphoneCore* lc) {
        }
 }
 
+void __linphone_core_invalidate_registers(LinphoneCore* lc){
+       const MSList *elem=linphone_core_get_proxy_config_list(lc);
+       for(;elem!=NULL;elem=elem->next){
+               LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
+               if (linphone_proxy_config_register_enabled(cfg) ) {
+                       linphone_proxy_config_edit(cfg);
+                       linphone_proxy_config_done(cfg);
+               }
+       }
+}
+
 void linphone_core_set_network_reachable(LinphoneCore* lc,bool_t isReachable) {
        //first disable automatic mode
        if (lc->auto_net_state_mon) {
@@ -4260,7 +4348,7 @@ LinphoneGlobalState linphone_core_get_global_state(const LinphoneCore *lc){
 
 LinphoneCallParams *linphone_core_create_default_call_parameters(LinphoneCore *lc){
        LinphoneCallParams *p=ms_new0(LinphoneCallParams,1);
-       p->has_video=linphone_core_video_enabled(lc);
+       linphone_core_init_default_params(lc, p);
        return p;
 }
 
@@ -4274,6 +4362,8 @@ const char *linphone_reason_to_string(LinphoneReason err){
                        return "Bad credentials";
                case LinphoneReasonDeclined:
                        return "Call declined";
+               case LinphoneReasonNotFound:
+                       return "User not found";
        }
        return "unknown error";
 }
@@ -4365,7 +4455,6 @@ void linphone_core_set_zrtp_secrets_file(LinphoneCore *lc, const char* file){
        lc->zrtp_secrets_cache=file ? ms_strdup(file) : NULL;
 }
 
-//                             if (stringUri.equals(call.getRemoteAddress().asStringUriOnly())) {
 const LinphoneCall* linphone_core_find_call_from_uri(LinphoneCore *lc, const char *uri) {
        if (uri == NULL) return NULL;
        MSList *calls=lc->calls;
@@ -4412,3 +4501,70 @@ bool_t linphone_core_sound_resources_locked(LinphoneCore *lc){
        }
        return FALSE;
 }
+
+void linphone_core_set_srtp_enabled(LinphoneCore *lc, bool_t enabled) {
+       lp_config_set_int(lc->config,"sip","srtp",(int)enabled);
+}
+
+/**
+ * Returns whether a media encryption scheme is supported by the LinphoneCore engine
+**/
+bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, LinphoneMediaEncryption menc){
+       switch(menc){
+               case LinphoneMediaEncryptionSRTP:
+                       return ortp_srtp_supported();
+               case LinphoneMediaEncryptionZRTP:
+                       return ortp_zrtp_available();
+               case LinphoneMediaEncryptionNone:
+                       return TRUE;
+       }
+       return FALSE;
+}
+
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc) {
+       const char *type="none";
+       int ret=0;
+       if (menc == LinphoneMediaEncryptionSRTP){
+               if (!ortp_srtp_supported()){
+                       ms_warning("SRTP not supported by library.");
+                       type="none";
+                       ret=-1;
+               }else type="srtp";
+       }else if (menc == LinphoneMediaEncryptionZRTP){
+               if (!ortp_zrtp_available()){
+                       ms_warning("ZRTP not supported by library.");
+                       type="none";
+                       ret=-1;
+               }else type="zrtp";
+       }
+       lp_config_set_string(lc->config,"sip","media_encryption",type);
+       return ret;
+}
+
+LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc) {
+       const char* menc = lp_config_get_string(lc->config, "sip", "media_encryption", NULL);
+       
+       if (menc == NULL)
+               return LinphoneMediaEncryptionNone;
+       else if (strcmp(menc, "srtp")==0)
+               return LinphoneMediaEncryptionSRTP;
+       else if (strcmp(menc, "zrtp")==0)
+               return LinphoneMediaEncryptionZRTP;
+       else
+               return LinphoneMediaEncryptionNone;
+}
+
+bool_t linphone_core_is_media_encryption_mandatory(LinphoneCore *lc) {
+       return (bool_t)lp_config_get_int(lc->config, "sip", "media_encryption_mandatory", 0);
+}
+
+void linphone_core_set_media_encryption_mandatory(LinphoneCore *lc, bool_t m) {
+       lp_config_set_int(lc->config, "sip", "media_encryption_mandatory", (int)m);
+}
+
+void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *params) {
+       params->has_video=linphone_core_video_enabled(lc);
+       params->media_encryption=linphone_core_get_media_encryption(lc);        
+       params->in_conference=FALSE;
+}
+
index 0a22c5c5a4aef08786cc5038d4b86d311f67e176..83edb4975085b206099ac9e5b98897e231e37843 100644 (file)
@@ -156,7 +156,13 @@ typedef struct _LinphoneCallLog{
        struct _LinphoneCore *lc;
 } LinphoneCallLog;
 
+enum LinphoneMediaEncryption {
+       LinphoneMediaEncryptionNone,
+       LinphoneMediaEncryptionSRTP,
+       LinphoneMediaEncryptionZRTP
+};
 
+typedef enum LinphoneMediaEncryption LinphoneMediaEncryption;
 
 /*public: */
 void linphone_call_log_set_user_pointer(LinphoneCallLog *cl, void *up);
@@ -179,6 +185,8 @@ typedef struct _LinphoneCallParams LinphoneCallParams;
 LinphoneCallParams * linphone_call_params_copy(const LinphoneCallParams *cp);
 void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabled);
 bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp);
+LinphoneMediaEncryption linphone_call_params_get_media_encryption(const LinphoneCallParams *cp);
+void linphone_call_params_set_media_encryption(LinphoneCallParams *cp, LinphoneMediaEncryption e);
 void linphone_call_params_enable_early_media_sending(LinphoneCallParams *cp, bool_t enabled);
 bool_t linphone_call_params_early_media_sending_enabled(const LinphoneCallParams *cp);
 bool_t linphone_call_params_local_conference_mode(const LinphoneCallParams *cp);
@@ -194,6 +202,7 @@ enum _LinphoneReason{
        LinphoneReasonNoResponse, /**<No response received from remote*/
        LinphoneReasonBadCredentials, /**<Authentication failed due to bad or missing credentials*/
        LinphoneReasonDeclined, /**<The call has been declined*/
+       LinphoneReasonNotFound,
 };
 
 typedef enum _LinphoneReason LinphoneReason;
@@ -259,6 +268,10 @@ float linphone_call_get_play_volume(LinphoneCall *call);
 float linphone_call_get_record_volume(LinphoneCall *call);
 float linphone_call_get_current_quality(LinphoneCall *call);
 float linphone_call_get_average_quality(LinphoneCall *call);
+const char* linphone_call_get_authentication_token(LinphoneCall *call);
+bool_t linphone_call_get_authentication_token_verified(LinphoneCall *call);
+void linphone_call_set_authentication_token_verified(LinphoneCall *call, bool_t verified);
+void linphone_call_send_vfu_request(LinphoneCall *call);
 void *linphone_call_get_user_pointer(LinphoneCall *call);
 void linphone_call_set_user_pointer(LinphoneCall *call, void *user_pointer);
 /**
@@ -813,7 +826,7 @@ int linphone_core_set_sip_transports(LinphoneCore *lc, const LCSipTransports *tr
 
 int linphone_core_get_sip_transports(LinphoneCore *lc, LCSipTransports *transports);
 /**
- * @ingroup IOS
+ *
  * Give access to the UDP sip socket. Can be useful to configure this socket as persistent I.E kCFStreamNetworkServiceType set to kCFStreamNetworkServiceTypeVoIP)
  * @param lc #LinphoneCore
  * @return socket file descriptor
@@ -865,6 +878,7 @@ char linphone_core_get_sound_source(LinphoneCore *lc);
 void linphone_core_set_sound_source(LinphoneCore *lc, char source);
 void linphone_core_set_ring(LinphoneCore *lc, const char *path);
 const char *linphone_core_get_ring(const LinphoneCore *lc);
+void linphone_core_verify_server_certificates(LinphoneCore *lc, bool_t yesno);
 void linphone_core_set_root_ca(LinphoneCore *lc, const char *path);
 void linphone_core_set_ringback(LinphoneCore *lc, const char *path);
 const char * linphone_core_get_ringback(const LinphoneCore *lc);
@@ -942,8 +956,12 @@ unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc)
 void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long id);
 
 void linphone_core_use_preview_window(LinphoneCore *lc, bool_t yesno);
+int linphone_core_get_device_rotation(LinphoneCore *lc );
 void linphone_core_set_device_rotation(LinphoneCore *lc, int rotation);
 
+/* start or stop streaming video in case of embedded window */
+void linphone_core_show_video(LinphoneCore *lc, bool_t show);
+
 /*play/record support: use files instead of soundcard*/
 void linphone_core_use_files(LinphoneCore *lc, bool_t yesno);
 void linphone_core_set_play_file(LinphoneCore *lc, const char *file);
@@ -999,9 +1017,20 @@ const MSList * linphone_core_get_sip_setups(LinphoneCore *lc);
 void linphone_core_destroy(LinphoneCore *lc);
 
 /*for advanced users:*/
-void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp);
-void linphone_core_set_video_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp);
+typedef RtpTransport * (*LinphoneRtpTransportFactoryFunc)(void *data, int port);
+struct _LinphoneRtpTransportFactories{
+       LinphoneRtpTransportFactoryFunc audio_rtp_func;
+       void *audio_rtp_func_data;
+       LinphoneRtpTransportFactoryFunc audio_rtcp_func;
+       void *audio_rtcp_func_data;
+       LinphoneRtpTransportFactoryFunc video_rtp_func;
+       void *video_rtp_func_data;
+       LinphoneRtpTransportFactoryFunc video_rtcp_func;
+       void *video_rtcp_func_data;
+};
+typedef struct _LinphoneRtpTransportFactories LinphoneRtpTransportFactories;
 
+void linphone_core_set_rtp_transport_factories(LinphoneCore* lc, LinphoneRtpTransportFactories *factories);
 
 int linphone_core_get_current_call_stats(LinphoneCore *lc, rtp_stats_t *local, rtp_stats_t *remote);
 
@@ -1014,15 +1043,9 @@ LinphoneGlobalState linphone_core_get_global_state(const LinphoneCore *lc);
  */
 void linphone_core_refresh_registers(LinphoneCore* lc);
 
-
-void linphone_call_send_vfu_request(LinphoneCall *call);
-
 /* Path to the file storing secrets cache */
 void linphone_core_set_zrtp_secrets_file(LinphoneCore *lc, const char* file);
 
-bool_t linphone_call_are_all_streams_encrypted(LinphoneCall *call);
-const char* linphone_call_get_authentication_token(LinphoneCall *call);
-bool_t linphone_call_get_authentication_token_verified(LinphoneCall *call);
 
 const LinphoneCall* linphone_core_find_call_from_uri(LinphoneCore *lc, const char *uri);
 
@@ -1042,6 +1065,37 @@ void linphone_core_set_max_calls(LinphoneCore *lc, int max);
 
 bool_t linphone_core_sound_resources_locked(LinphoneCore *lc);
 
+bool_t linphone_core_media_encryption_supported(const LinphoneCore *lc, LinphoneMediaEncryption menc);
+
+/**
+ * Choose media encryption policy to be used for RTP packets
+ */
+int linphone_core_set_media_encryption(LinphoneCore *lc, enum LinphoneMediaEncryption menc);
+LinphoneMediaEncryption linphone_core_get_media_encryption(LinphoneCore *lc);
+
+bool_t linphone_core_is_media_encryption_mandatory(LinphoneCore *lc);
+/**
+ * Defines Linphone behaviour when encryption parameters negociation fails on outoing call.
+ * If set to TRUE call will fail; if set to FALSE will resend an INVITE with encryption disabled
+ */
+void linphone_core_set_media_encryption_mandatory(LinphoneCore *lc, bool_t m);
+
+/**
+ * Init call params using LinphoneCore's current configuration
+ */
+void linphone_core_init_default_params(LinphoneCore*lc, LinphoneCallParams *params);
+
+/**
+ * True if tunnel support was compiled.
+ */
+bool_t linphone_core_tunnel_available(void);
+
+typedef struct LinphoneTunnel LinphoneTunnel;
+/**
+* get tunnel instance if available
+*/
+LinphoneTunnel *linphone_core_get_tunnel(LinphoneCore *lc);
+
 #ifdef __cplusplus
 }
 #endif
index fdd035de48114c0862ebf4dbd433590ed853020f..ca2c03d4056667c072fbf7c97f9135b0d9329dc5 100644 (file)
@@ -20,6 +20,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "linphonecore_utils.h"
 #include <ortp/zrtp.h>
 
+#ifdef TUNNEL_ENABLED
+#include "linphone_tunnel.h"
+#endif
+
 extern "C" {
 #include "mediastreamer2/mediastream.h"
 }
@@ -675,6 +679,13 @@ extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isEchoCancellationEn
        return linphone_core_echo_cancellation_enabled((LinphoneCore*)lc);
 }
 
+extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isEchoLimiterEnabled(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       ) {
+       return linphone_core_echo_limiter_enabled((LinphoneCore*)lc);
+}
+
 extern "C" jobject Java_org_linphone_core_LinphoneCoreImpl_getCurrentCall(JNIEnv*  env
                                                                                                                                                        ,jobject  thiz
                                                                                                                                                        ,jlong lc
@@ -725,6 +736,14 @@ extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isVideoEnabled(JNIEn
                                                                                                                                                        ,jlong lc) {
        return linphone_core_video_enabled((LinphoneCore*)lc);
 }
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setPlayFile(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       ,jstring jpath) {
+       const char* path = jpath?env->GetStringUTFChars(jpath, NULL):NULL;
+       linphone_core_set_play_file((LinphoneCore*)lc,path);
+       if (path) env->ReleaseStringUTFChars(jpath, path);
+}
 extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setRing(JNIEnv*  env
                                                                                                                                                        ,jobject  thiz
                                                                                                                                                        ,jlong lc
@@ -775,7 +794,55 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_startEchoCalibration(JNI
 
 }
 
+extern "C" int Java_org_linphone_core_LinphoneCoreImpl_getMediaEncryption(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       ) {
+       return (int)linphone_core_get_media_encryption((LinphoneCore*)lc);
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setMediaEncryption(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       ,int menc) {
+       linphone_core_set_media_encryption((LinphoneCore*)lc,(LinphoneMediaEncryption)menc);
+}
+
+extern "C" int Java_org_linphone_core_LinphoneCallParamsImpl_getMediaEncryption(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong cp
+                                                                                                                                                       ) {
+       return (int)linphone_call_params_get_media_encryption((LinphoneCallParams*)cp);
+}
+
+extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_mediaEncryptionSupported(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc, jint menc
+                                                                                                                                                       ) {
+       return linphone_core_media_encryption_supported((LinphoneCore*)lc,(LinphoneMediaEncryption)menc);
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCallParamsImpl_setMediaEncryption(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong cp
+                                                                                                                                                       ,int jmenc) {
+       linphone_call_params_set_media_encryption((LinphoneCallParams*)cp,(LinphoneMediaEncryption)jmenc);
+}
+
+extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_getMediaEncryptionMandatory(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       ) {
+       return linphone_core_is_media_encryption_mandatory((LinphoneCore*)lc);
+}
 
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setMediaEncryptionMandatory(JNIEnv*  env
+                                                                                                                                                       ,jobject  thiz
+                                                                                                                                                       ,jlong lc
+                                                                                                                                                       , jboolean yesno
+                                                                                                                                                       ) {
+       linphone_core_set_media_encryption_mandatory((LinphoneCore*)lc, yesno);
+}
 
 //ProxyConfig
 
@@ -1389,8 +1456,8 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_resumeCall(JNIEnv *env,j
 extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isInConference(JNIEnv *env,jobject thiz,jlong pCore) {
        return linphone_core_is_in_conference((LinphoneCore *) pCore);
 }
-extern "C" void Java_org_linphone_core_LinphoneCoreImpl_enterConference(JNIEnv *env,jobject thiz,jlong pCore) {
-       linphone_core_enter_conference((LinphoneCore *) pCore);
+extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_enterConference(JNIEnv *env,jobject thiz,jlong pCore) {
+       return 0 == linphone_core_enter_conference((LinphoneCore *) pCore);
 }
 extern "C" void Java_org_linphone_core_LinphoneCoreImpl_leaveConference(JNIEnv *env,jobject thiz,jlong pCore) {
        linphone_core_leave_conference((LinphoneCore *) pCore);
@@ -1502,8 +1569,14 @@ extern "C" jboolean Java_org_linphone_core_LinphoneCallImpl_isAuthenticationToke
        LinphoneCall *call = (LinphoneCall *) ptr;
        return linphone_call_get_authentication_token_verified(call);
 }
-extern "C" jboolean Java_org_linphone_core_LinphoneCallImpl_areStreamsEncrypted(JNIEnv*  env,jobject thiz,jlong ptr) {
-       return linphone_call_are_all_streams_encrypted((LinphoneCall *) ptr);
+extern "C" void Java_org_linphone_core_LinphoneCallImpl_setAuthenticationTokenVerified(JNIEnv*  env,jobject thiz,jlong ptr,jboolean verified) {
+       LinphoneCall *call = (LinphoneCall *) ptr;
+       linphone_call_set_authentication_token_verified(call, verified);
+}
+
+extern "C" jfloat Java_org_linphone_core_LinphoneCallImpl_getPlayVolume(JNIEnv* env, jobject thiz, jlong ptr) {
+       LinphoneCall *call = (LinphoneCall *) ptr;
+       return linphone_call_get_play_volume(call);
 }
 
 extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_soundResourcesLocked(JNIEnv* env,jobject thiz,jlong ptr){
@@ -1526,3 +1599,45 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_getMaxCalls(JNIEnv *env,
 extern "C" void Java_org_linphone_core_LinphoneCoreImpl_setMaxCalls(JNIEnv *env,jobject thiz,jlong pCore, jint max) {
        linphone_core_set_max_calls((LinphoneCore *) pCore, (int) max);
 }
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_tunnelAddServerAndMirror(JNIEnv *env,jobject thiz,jlong pCore,
+               jstring jHost, jint port, jint mirror, jint delay) {
+#ifdef TUNNEL_ENABLED
+       LinphoneTunnel *tunnel=((LinphoneCore *) pCore)->tunnel; if (!tunnel) return;
+       const char* cHost=env->GetStringUTFChars(jHost, NULL);
+       linphone_tunnel_add_server_and_mirror(tunnel, cHost, port, mirror, delay);
+       env->ReleaseStringUTFChars(jHost, cHost);
+#endif
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_tunnelAutoDetect(JNIEnv *env,jobject thiz,jlong pCore) {
+#ifdef TUNNEL_ENABLED
+       LinphoneTunnel *tunnel=((LinphoneCore *) pCore)->tunnel; if (!tunnel) return;
+       linphone_tunnel_auto_detect(tunnel);
+#endif
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_tunnelCleanServers(JNIEnv *env,jobject thiz,jlong pCore) {
+#ifdef TUNNEL_ENABLED
+       LinphoneTunnel *tunnel=((LinphoneCore *) pCore)->tunnel; if (!tunnel) return;
+       linphone_tunnel_clean_servers(tunnel);
+#endif
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_tunnelEnable(JNIEnv *env,jobject thiz,jlong pCore, jboolean enable) {
+#ifdef TUNNEL_ENABLED
+       LinphoneTunnel *tunnel=((LinphoneCore *) pCore)->tunnel; if (!tunnel) return;
+       linphone_tunnel_enable(tunnel, enable);
+#endif
+}
+
+extern "C" void Java_org_linphone_core_LinphoneCoreImpl_tunnelEnableLogs(JNIEnv *env,jobject thiz,jlong pCore, jboolean enable) {
+#ifdef TUNNEL_ENABLED
+       LinphoneTunnel *tunnel=((LinphoneCore *) pCore)->tunnel; if (!tunnel) return;
+       linphone_tunnel_enable_logs(tunnel, enable);
+#endif
+}
+
+extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isTunnelAvailable(JNIEnv *env,jobject thiz){
+       return linphone_core_tunnel_available();
+}
index a0859a2997e3dd878c00e518c2be63fd877e8ba5..d12166ec49209b4a1265596a198c680aa8cd17d9 100644 (file)
@@ -138,18 +138,15 @@ LpItem *lp_section_find_item(LpSection *sec, const char *name){
 }
 
 void lp_config_parse(LpConfig *lpconfig, FILE *file){
-       ms_error("Entering lp_config_parse");
        char tmp[MAX_LEN]= {'\0'};
        LpSection *cur=NULL;
 
        if (file==NULL) return;
 
-       ms_message("Entering While");
        while(fgets(tmp,MAX_LEN,file)!=NULL){
                tmp[sizeof(tmp) -1] = '\0';
                char *pos1,*pos2;
                pos1=strchr(tmp,'[');
-               ms_message("Pos1 = %s", pos1);
                if (pos1!=NULL && is_first_char(tmp,pos1) ){
                        pos2=strchr(pos1,']');
                        if (pos2!=NULL){
index 7aeaf0f33adb5de6364040300653ddb22bf6b2e9..607ee6b3f5d931fe03d00900b92415bc4edf0cdf 100644 (file)
@@ -461,6 +461,7 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
                struct sockaddr_storage ss;
                socklen_t ss_len;
                ortp_socket_t sock1=-1, sock2=-1;
+               int loops=0;
                bool_t video_enabled=linphone_core_video_enabled(lc);
                bool_t got_audio,got_video;
                bool_t cone_audio=FALSE,cone_video=FALSE;
@@ -479,16 +480,10 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
 
                /*create the two audio and video RTP sockets, and send STUN message to our stun server */
                sock1=create_socket(call->audio_port);
-               if (sock1<0) return;
+               if (sock1==-1) return;
                if (video_enabled){
                        sock2=create_socket(call->video_port);
-                       if (sock2<0) return ;
-               }
-               sendStunRequest(sock1,(struct sockaddr*)&ss,ss_len,11,TRUE);
-               sendStunRequest(sock1,(struct sockaddr*)&ss,ss_len,1,FALSE);
-               if (sock2>=0){
-                       sendStunRequest(sock2,(struct sockaddr*)&ss,ss_len,22,TRUE);
-                       sendStunRequest(sock2,(struct sockaddr*)&ss,ss_len,2,FALSE);
+                       if (sock2==-1) return ;
                }
                got_audio=FALSE;
                got_video=FALSE;
@@ -496,6 +491,15 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
                do{
                        double elapsed;
                        int id;
+                       if (loops%20==0){
+                               ms_message("Sending stun requests...");
+                               sendStunRequest(sock1,(struct sockaddr*)&ss,ss_len,11,TRUE);
+                               sendStunRequest(sock1,(struct sockaddr*)&ss,ss_len,1,FALSE);
+                               if (sock2!=-1){
+                                       sendStunRequest(sock2,(struct sockaddr*)&ss,ss_len,22,TRUE);
+                                       sendStunRequest(sock2,(struct sockaddr*)&ss,ss_len,2,FALSE);
+                               }
+                       }
 #ifdef WIN32
                        Sleep(10);
 #else
@@ -522,29 +526,25 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
                        }
                        gettimeofday(&cur,NULL);
                        elapsed=((cur.tv_sec-init.tv_sec)*1000.0) +  ((cur.tv_usec-init.tv_usec)/1000.0);
-                       if (elapsed>2000)  break;
-               }while(!(got_audio && (got_video||sock2<0)  ) );
+                       if (elapsed>2000)  {
+                               ms_message("Stun responses timeout, going ahead.");
+                               break;
+                       }
+                       loops++;
+               }while(!(got_audio && (got_video||sock2==-1)  ) );
                if (!got_audio){
                        ms_error("No stun server response for audio port.");
                }else{
                        if (!cone_audio) {
-                               ms_warning("NAT is symmetric for audio port");
-                               /*
-                               ac->addr[0]='\0';
-                               ac->port=0;
-                               */
+                               ms_message("NAT is symmetric for audio port");
                        }
                }
-               if (sock2>=0){
+               if (sock2!=-1){
                        if (!got_video){
                                ms_error("No stun server response for video port.");
                        }else{
                                if (!cone_video) {
-                                       ms_warning("NAT is symmetric for video port.");
-                                       /*
-                                       vc->addr[0]='\0';
-                                       vc->port=0;
-                                       */
+                                       ms_message("NAT is symmetric for video port.");
                                }
                        }
                }
@@ -553,7 +553,7 @@ void linphone_core_run_stun_tests(LinphoneCore *lc, LinphoneCall *call){
                        strcpy(call->localdesc->addr,ac->addr);
                }
                close_socket(sock1);
-               if (sock2>=0) close_socket(sock2);
+               if (sock2!=-1) close_socket(sock2);
        }
 }
 
index 3e054508b1aa5a863287569b5ed9730957f49619..4010e20b7e53dfb008a04012c23e916929bc49d2 100644 (file)
@@ -128,6 +128,31 @@ static MSList *match_payloads(const MSList *local, const MSList *remote, bool_t
        return res;
 }
 
+static bool_t match_crypto_algo(const SalSrtpCryptoAlgo* local, const SalSrtpCryptoAlgo* remote, 
+       SalSrtpCryptoAlgo* result, bool_t use_local_key) {
+       int i,j;
+       for(i=0; i<SAL_CRYPTO_ALGO_MAX; i++) {
+               if (remote[i].algo == 0)
+                       break;
+                       
+               for(j=0; j<SAL_CRYPTO_ALGO_MAX; j++) {
+                       if (remote[i].algo == local[j].algo) {
+                               result->algo = remote[i].algo;
+                               if (use_local_key) {
+                                       strncpy(result->master_key, local[j].master_key, 41);
+                                       result->tag = local[j].tag;
+                               } else {
+                                       strncpy(result->master_key, remote[i].master_key, 41);
+                                       result->tag = remote[i].tag;
+                               }
+                               result->master_key[40] = '\0';
+                               return TRUE;
+                       }
+               }
+       }
+       return FALSE;
+}
+
 
 
 static SalStreamDir compute_dir_outgoing(SalStreamDir local, SalStreamDir answered){
@@ -174,7 +199,7 @@ static void initiate_outgoing(const SalStreamDescription *local_offer,
                                        SalStreamDescription *result){
        if (remote_answer->port!=0)
                result->payloads=match_payloads(local_offer->payloads,remote_answer->payloads,TRUE,FALSE);
-       result->proto=local_offer->proto;
+       result->proto=remote_answer->proto;
        result->type=local_offer->type;
        result->dir=compute_dir_outgoing(local_offer->dir,remote_answer->dir);
 
@@ -186,6 +211,12 @@ static void initiate_outgoing(const SalStreamDescription *local_offer,
        }else{
                result->port=0;
        }
+       if (result->proto == SalProtoRtpSavp) {
+               /* verify crypto algo */
+               memset(result->crypto, 0, sizeof(result->crypto));
+               if (!match_crypto_algo(local_offer->crypto, remote_answer->crypto, &result->crypto[0], FALSE))
+                       result->port = 0;
+       }
 }
 
 
@@ -193,7 +224,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap,
                                        const SalStreamDescription *remote_offer,
                                        SalStreamDescription *result, bool_t one_matching_codec){
        result->payloads=match_payloads(local_cap->payloads,remote_offer->payloads, FALSE, one_matching_codec);
-       result->proto=local_cap->proto;
+       result->proto=remote_offer->proto;
        result->type=local_cap->type;
        result->dir=compute_dir_incoming(local_cap->dir,remote_offer->dir);
        if (result->payloads && !only_telephone_event(result->payloads)){
@@ -205,6 +236,13 @@ static void initiate_incoming(const SalStreamDescription *local_cap,
        }else{
                result->port=0;
        }
+       if (result->proto == SalProtoRtpSavp) {
+               /* select crypto algo */
+               memset(result->crypto, 0, sizeof(result->crypto));
+               if (!match_crypto_algo(local_cap->crypto, remote_offer->crypto, &result->crypto[0], TRUE))
+                       result->port = 0; 
+               
+       }
 }
 
 /**
@@ -215,6 +253,7 @@ int offer_answer_initiate_outgoing(const SalMediaDescription *local_offer,
                                                                        const SalMediaDescription *remote_answer,
                                                        SalMediaDescription *result){
     int i,j;
+    
        const SalStreamDescription *ls,*rs;
     for(i=0,j=0;i<local_offer->nstreams;++i){
                ms_message("Processing for stream %i",i);
@@ -246,14 +285,23 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities
     for(i=0;i<remote_offer->nstreams;++i){
                rs=&remote_offer->streams[i];
                ms_message("Processing for stream %i",i);
+               
                ls=sal_media_description_find_stream((SalMediaDescription*)local_capabilities,rs->proto,rs->type);
+               ms_message("remote proto: %s => %p", (rs->proto == SalProtoRtpAvp)?"AVP":"SAVP", ls);
+               /* if matching failed, and remote proposes Avp only, ask for local Savp streams */ 
+               if (!ls && rs->proto == SalProtoRtpAvp) {
+                       ls=sal_media_description_find_stream((SalMediaDescription*)local_capabilities,SalProtoRtpSavp,rs->type);
+                       ms_message("retry with AVP => %p", ls);
+               }
                if (ls){
                initiate_incoming(ls,rs,&result->streams[i],one_matching_codec);
-               } else {
+               }
+               else {
                        /* create an inactive stream for the answer, as there where no matching stream a local capability */
                        result->streams[i].dir=SalStreamInactive;
                        result->streams[i].port=0;
                        result->streams[i].type=rs->type;
+                       result->streams[i].proto=rs->proto;
                        if (rs->type==SalOther){
                                strncpy(result->streams[i].typeother,rs->typeother,sizeof(rs->typeother)-1);
                        }
index 49c7c4016703525e135b778cb41df1e99fe58464..77f62c33407ce7ccc3038df588fc4a75aade32e7 100644 (file)
 
 #ifndef _PRIVATE_H
 #define _PRIVATE_H
-
+#ifdef __cplusplus
+extern "C" {
+#endif
 #include "linphonecore.h"
+#include "linphone_tunnel.h"
 #include "linphonecore_utils.h"
 #include "sal.h"
 
 #define PACKAGE_SOUND_DIR "."
 #endif
 
+#ifndef PACKAGE_DATA_DIR
+#define PACKAGE_DATA_DIR "."
+#endif
+
 #ifdef HAVE_GETTEXT
 #include <libintl.h>
 #ifndef _
 #endif
 #endif
 
-
 struct _LinphoneCallParams{
        LinphoneCall *referer; /*in case this call creation is consecutive to an incoming transfer, this points to the original call */
        int audio_bw; /* bandwidth limit for audio stream */
+       LinphoneMediaEncryption media_encryption;
        bool_t has_video;
        bool_t real_early_media; /*send real media even during early media (for outgoing calls)*/
        bool_t in_conference; /*in conference mode */
        bool_t pad;
+       
 };
 
 struct _LinphoneCall
@@ -247,7 +255,6 @@ struct _LinphoneProxyConfig
        SalOp *publish_op;
        bool_t commit;
        bool_t reg_sendregister;
-       bool_t registered;
        bool_t publish;
        bool_t dial_escape_plus;
        void* user_data;
@@ -400,6 +407,7 @@ struct _LinphoneConference{
        MSAudioConference *conf;
        AudioStream *local_participant;
        MSAudioEndpoint *local_endpoint;
+       RtpProfile *local_dummy_profile;
        bool_t local_muted;
 };
 
@@ -436,8 +444,7 @@ struct _LinphoneCore
        int missed_calls;
        VideoPreview *previewstream;
        struct _MSEventQueue *msevq;
-       RtpTransport *a_rtp,*a_rtcp;
-       RtpTransport *v_rtp,*v_rtcp;
+       LinphoneRtpTransportFactories *rtptf;
        MSList *bl_reqs;
        MSList *subscribers;    /* unknown subscribers */
        int minutes_away;
@@ -468,8 +475,12 @@ struct _LinphoneCore
        int device_rotation;
        bool_t ringstream_autorelease;
        int max_calls;
+       LinphoneTunnel *tunnel;
 };
 
+LinphoneTunnel *linphone_core_tunnel_new(LinphoneCore *lc);
+void linphone_tunnel_destroy(LinphoneTunnel *tunnel);
+       
 bool_t linphone_core_can_we_add_call(LinphoneCore *lc);
 int linphone_core_add_call( LinphoneCore *lc, LinphoneCall *call);
 int linphone_core_del_call( LinphoneCore *lc, LinphoneCall *call);
@@ -514,11 +525,17 @@ void linphone_call_background_tasks(LinphoneCall *call, bool_t one_second_elapse
 void linphone_core_preempt_sound_resources(LinphoneCore *lc);
 /*conferencing subsystem*/
 void _post_configure_audio_stream(AudioStream *st, LinphoneCore *lc, bool_t muted);
-void linphone_call_add_to_conf(LinphoneCall *call);
+/* When a conference participant pause the conference he may send a music.
+ * We don't want to hear that music or to send it to the other participants.
+ * Use muted=yes to handle this case.
+ */
+void linphone_call_add_to_conf(LinphoneCall *call, bool_t muted);
 void linphone_call_remove_from_conf(LinphoneCall *call);
-void linphone_core_conference_check_uninit(LinphoneConference *ctx);
+void linphone_core_conference_check_uninit(LinphoneCore *lc);
 bool_t linphone_core_sound_resources_available(LinphoneCore *lc);
 
+void __linphone_core_invalidate_registers(LinphoneCore* lc);
+
 #define HOLD_OFF       (0)
 #define HOLD_ON                (1)
 
@@ -526,4 +543,11 @@ bool_t linphone_core_sound_resources_available(LinphoneCore *lc);
 #define NB_MAX_CALLS   (10)
 #endif
 void call_logs_write_to_config_file(LinphoneCore *lc);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _PRIVATE_H */
index 5a8786587a4757035c7ce5d77962491c590d6198..d1ef5355bdb5579faac920f4bdb836db23a97f9d 100644 (file)
@@ -84,7 +84,7 @@ void linphone_proxy_config_destroy(LinphoneProxyConfig *obj){
  * Returns a boolean indicating that the user is sucessfully registered on the proxy.
 **/
 bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj){
-       return obj->registered;
+       return obj->state == LinphoneRegistrationOk;
 }
 
 /**
@@ -232,9 +232,8 @@ void linphone_proxy_config_enable_publish(LinphoneProxyConfig *obj, bool_t val){
 void linphone_proxy_config_edit(LinphoneProxyConfig *obj){
        if (obj->reg_sendregister){
                /* unregister */
-               if (obj->registered) {
+               if (obj->state != LinphoneRegistrationNone && obj->state != LinphoneRegistrationCleared) {
                        sal_unregister(obj->op);
-                       obj->registered=FALSE;
                }
        }
 }
@@ -301,7 +300,7 @@ static void linphone_proxy_config_register(LinphoneProxyConfig *obj){
 **/
 void linphone_proxy_config_refresh_register(LinphoneProxyConfig *obj){
        if (obj->reg_sendregister && obj->op){
-               obj->registered=FALSE;
+               linphone_proxy_config_set_state(obj,LinphoneRegistrationProgress, "Refresh registration");
                sal_register_refresh(obj->op,obj->expires);
        }
 }
index b2a0ecd595f126b1225c0d4eddd3cd1e4376546f..0254dfbb7d8d8f2a82877f87b04e9e637bc05f89 100644 (file)
@@ -112,6 +112,15 @@ typedef struct SalEndpointCandidate{
 
 #define SAL_ENDPOINT_CANDIDATE_MAX 2
 
+typedef struct SalSrtpCryptoAlgo {
+       unsigned int tag;
+       enum ortp_srtp_crypto_suite_t algo;
+       /* 41= 40 max(key_length for all algo) + '\0' */
+       char master_key[41];
+} SalSrtpCryptoAlgo;
+
+#define SAL_CRYPTO_ALGO_MAX 4
+
 typedef struct SalStreamDescription{
        SalMediaProto proto;
        SalStreamType type;
@@ -123,6 +132,7 @@ typedef struct SalStreamDescription{
        int ptime;
        SalEndpointCandidate candidates[SAL_ENDPOINT_CANDIDATE_MAX];
        SalStreamDir dir;
+       SalSrtpCryptoAlgo crypto[SAL_CRYPTO_ALGO_MAX];
 } SalStreamDescription;
 
 #define SAL_MEDIA_DESCRIPTION_MAX_STREAMS 4
@@ -275,7 +285,8 @@ void sal_reuse_authorization(Sal *ctx, bool_t enabled);
 void sal_use_one_matching_codec_policy(Sal *ctx, bool_t one_matching_codec);
 void sal_use_rport(Sal *ctx, bool_t use_rports);
 void sal_use_101(Sal *ctx, bool_t use_101);
-void sal_root_ca(Sal* ctx, const char* rootCa);
+void sal_set_root_ca(Sal* ctx, const char* rootCa);
+void sal_verify_server_certificates(Sal *ctx, bool_t verify);
 
 int sal_iterate(Sal *sal);
 MSList * sal_get_pending_auths(Sal *sal);
index 772997b6b67b876bcb938ac3fe07b2494454b28d..948e67d89e3acd074ad6333d23a29f8ca82a9571 100644 (file)
@@ -282,6 +282,7 @@ Sal * sal_init(){
        sal->use_101=TRUE;
        sal->reuse_authorization=FALSE;
        sal->rootCa = 0;
+       sal->verify_server_certs=TRUE;
        return sal;
 }
 
@@ -373,15 +374,14 @@ int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int i
                        memset(&tlsCtx, 0, sizeof(tlsCtx));
                        snprintf(tlsCtx.root_ca_cert, sizeof(tlsCtx.client.cert), "%s", ctx->rootCa);
                        eXosip_set_tls_ctx(&tlsCtx);
-               }
+               }                       
+#ifdef HAVE_EXOSIP_TLS_VERIFY_CERTIFICATE
+               eXosip_tls_verify_certificate(ctx->verify_server_certs);
+#endif
                break;
        default:
                ms_warning("unexpected proto, using datagram");
        }
-
-       err=0;
-       eXosip_set_option(13,&err); /*13=EXOSIP_OPT_SRV_WITH_NAPTR, as it is an enum value, we can't use it unless we are sure of the
-                                       version of eXosip, which is not the case*/
        /*see if it looks like an IPv6 address*/
        int use_rports = ctx->use_rports; // Copy char to int to avoid bad alignment
        eXosip_set_option(EXOSIP_OPT_USE_RPORT,&use_rports);
@@ -396,10 +396,6 @@ int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int i
                return -1;
        }
        err=eXosip_listen_addr(proto, addr, port, ipv6 ?  PF_INET6 : PF_INET, is_secure);
-#ifdef HAVE_EXOSIP_GET_SOCKET
-       ms_message("Exosip has socket number %i",eXosip_get_socket(proto));
-#endif
-       
        ctx->running=TRUE;
        return err;
 }
@@ -440,12 +436,19 @@ void sal_use_101(Sal *ctx, bool_t use_101){
        ctx->use_101=use_101;
 }
 
-void sal_root_ca(Sal* ctx, const char* rootCa) {
+void sal_set_root_ca(Sal* ctx, const char* rootCa) {
        if (ctx->rootCa)
                ms_free(ctx->rootCa);
        ctx->rootCa = ms_strdup(rootCa);
 }
 
+void sal_verify_server_certificates(Sal *ctx, bool_t verify){
+       ctx->verify_server_certs=verify;
+#ifdef HAVE_EXOSIP_TLS_VERIFY_CERTIFICATE
+       eXosip_tls_verify_certificate(verify);
+#endif
+}
+
 static int extract_received_rport(osip_message_t *msg, const char **received, int *rportval,SalTransport* transport){
        osip_via_t *via=NULL;
        osip_generic_param_t *param=NULL;
@@ -454,7 +457,10 @@ static int extract_received_rport(osip_message_t *msg, const char **received, in
        *rportval=5060;
        *received=NULL;
        osip_message_get_via(msg,0,&via);
-       if (!via) return -1;
+       if (!via) {
+               ms_warning("extract_received_rport(): no via.");
+               return -1;
+       }
 
        *transport = sal_transport_parse(via->protocol);
        
@@ -471,7 +477,10 @@ static int extract_received_rport(osip_message_t *msg, const char **received, in
        osip_via_param_get_byname(via,"received",&param);
        if (param) *received=param->gvalue;
 
-       if (rport==NULL && *received==NULL) return -1;
+       if (rport==NULL && *received==NULL){
+               ms_warning("extract_received_rport(): no rport and no received parameters.");
+               return -1;
+       }
        return 0;
 }
 
@@ -514,12 +523,17 @@ static void sdp_process(SalOp *h){
                 It should contains media parameters constraint from the remote offer, not our response*/
                strcpy(h->result->addr,h->base.remote_media->addr);
                h->result->bandwidth=h->base.remote_media->bandwidth;
+               
                for(i=0;i<h->result->nstreams;++i){
                        if (h->result->streams[i].port>0){
                                strcpy(h->result->streams[i].addr,h->base.remote_media->streams[i].addr);
                                h->result->streams[i].ptime=h->base.remote_media->streams[i].ptime;
                                h->result->streams[i].bandwidth=h->base.remote_media->streams[i].bandwidth;
                                h->result->streams[i].port=h->base.remote_media->streams[i].port;
+                               
+                               if (h->result->streams[i].proto == SalProtoRtpSavp) {
+                                       h->result->streams[i].crypto[0] = h->base.remote_media->streams[i].crypto[0]; 
+                               }
                        }
                }
        }
@@ -546,6 +560,9 @@ int sal_call(SalOp *h, const char *from, const char *to){
        sal_op_set_from(h,from);
        sal_op_set_to(h,to);
        sal_exosip_fix_route(h);
+       
+       h->terminated = FALSE;
+
        route = sal_op_get_route(h);
        err=eXosip_call_build_initial_invite(&invite,to,from,route,"Phone call");
        if (err!=0){
@@ -700,6 +717,7 @@ int sal_ping(SalOp *op, const char *from, const char *to){
        
        sal_op_set_from(op,from);
        sal_op_set_to(op,to);
+
        /*bug here: eXosip2 does not honor the route argument*/
        eXosip_options_build_request (&options, sal_op_get_to(op),
                        sal_op_get_from(op),sal_op_get_route(op));
@@ -1657,7 +1675,7 @@ static bool_t fix_message_contact(SalOp *op, osip_message_t *request,osip_messag
        if (extract_received_rport(last_answer,&received,&rport,&transport)==-1) return FALSE;
        osip_message_get_contact(request,0,&ctt);
        if (ctt == NULL) {
-               /*nothing to update*/
+               ms_warning("fix_message_contact(): no contact to update");
                return FALSE;
        }
        if (ctt->url->host!=NULL){
@@ -1692,14 +1710,15 @@ static bool_t register_again_with_updated_contact(SalOp *op, osip_message_t *ori
        if (extract_received_rport(last_answer,&received,&rport,&transport)==-1) return FALSE;
        osip_message_get_contact(orig_request,0,&ctt);
        osip_contact_to_str(ctt,&tmp);
-       ori_contact_address = sal_address_new((const char*)tmp);
+       ori_contact_address = sal_address_new(tmp);
        
        /*check if contact is up to date*/
        if (strcmp(sal_address_get_domain(ori_contact_address),received) ==0 
        && sal_address_get_port_int(ori_contact_address) == rport
        && sal_address_get_transport(ori_contact_address) == transport) {
                ms_message("Register has up to date contact, doing nothing.");
-               osip_free(tmp);     
+               osip_free(tmp);
+               sal_address_destroy(ori_contact_address);
                return FALSE;
        } else ms_message("contact do not match, need to update the register (%s with %s:%i;transport=%s)"
                      ,tmp
@@ -1985,16 +2004,33 @@ static void register_set_contact(osip_message_t *msg, const char *contact){
        osip_uri_uparam_add(ct->url,osip_strdup("line"),line);
 }
 
+static void sal_register_add_route(osip_message_t *msg, const char *proxy){
+       char tmp[256]={0};
+       snprintf(tmp,sizeof(tmp)-1,"<%s;lr>",proxy);
+       
+       osip_list_special_free(&msg->routes,(void (*)(void*))osip_route_free);
+       osip_message_set_route(msg,tmp);
+}
+
 int sal_register(SalOp *h, const char *proxy, const char *from, int expires){
        osip_message_t *msg;
        const char *contact=sal_op_get_contact(h);
-       
+
        sal_op_set_route(h,proxy);
        if (h->rid==-1){
+               SalAddress *from_parsed=sal_address_new(from);
+               char domain[256];
+               if (from_parsed==NULL) {
+                       ms_warning("sal_register() bad from %s",from);
+                       return -1;
+               }
+               snprintf(domain,sizeof(domain),"sip:%s",sal_address_get_domain(from_parsed));
+               sal_address_destroy(from_parsed);
                eXosip_lock();
-               h->rid=eXosip_register_build_initial_register(from,proxy,NULL,expires,&msg);
+               h->rid=eXosip_register_build_initial_register(from,domain,NULL,expires,&msg);
                if (msg){
                        if (contact) register_set_contact(msg,contact);
+                       sal_register_add_route(msg,proxy);
                        sal_add_register(h->base.root,h);
                }else{
                        ms_error("Could not build initial register.");
@@ -2003,7 +2039,8 @@ int sal_register(SalOp *h, const char *proxy, const char *from, int expires){
                }
        }else{
                eXosip_lock();
-               eXosip_register_build_register(h->rid,expires,&msg);    
+               eXosip_register_build_register(h->rid,expires,&msg);
+               sal_register_add_route(msg,proxy);
        }
        eXosip_register_send_register(h->rid,msg);
        eXosip_unlock();
@@ -2023,6 +2060,7 @@ int sal_register_refresh(SalOp *op, int expires){
        eXosip_register_build_register(op->rid,expires,&msg);
        if (msg!=NULL){
                if (contact) register_set_contact(msg,contact);
+               sal_register_add_route(msg,sal_op_get_route(op));
                eXosip_register_send_register(op->rid,msg);
        }else ms_error("Could not build REGISTER refresh message.");
        eXosip_unlock();
index bdc257740d2199d403d54dd373a00f267f9cd0c6..f2577ee00c650b5c82787dbf86267c4b976ee5e1 100644 (file)
@@ -39,13 +39,14 @@ struct Sal{
        int running;
        int session_expires;
        int keepalive_period;
-       void *up;
+       void *up; /*user pointer*/
+       char* rootCa; /* File _or_ folder containing root CA */
        bool_t one_matching_codec;
        bool_t double_reg;
        bool_t use_rports;
        bool_t use_101;
        bool_t reuse_authorization;
-       char* rootCa; /* File _or_ folder containing root CA */
+       bool_t verify_server_certs;
 };
 
 struct SalOp{
index 5160777a782ee4f88f07a32eb0046082578f502a..f67fb9cfd714e1f520534b39ac41fd6a2ea49e4d 100644 (file)
@@ -234,9 +234,47 @@ static void add_line(sdp_message_t *msg, int lineno, const SalStreamDescription
                              osip_strdup ("IN"), inet6 ? osip_strdup ("IP6") : osip_strdup ("IP4"),
                              osip_strdup (addr), NULL, NULL);
        }
-       sdp_message_m_media_add (msg, osip_strdup (mt),
-                                int_2char (port), NULL,
-                                osip_strdup ("RTP/AVP"));
+       
+       if (desc->proto == SalProtoRtpSavp) {
+               int i;
+               
+               sdp_message_m_media_add (msg, osip_strdup (mt),
+                                        int_2char (port), NULL,
+                                        osip_strdup ("RTP/SAVP"));
+       
+               /* add crypto lines */
+               for(i=0; i<SAL_CRYPTO_ALGO_MAX; i++) {
+                       char buffer[1024];
+                       switch (desc->crypto[i].algo) {
+                               case AES_128_SHA1_80:
+                                       snprintf(buffer, 1024, "%d %s inline:%s",
+                                               desc->crypto[i].tag, "AES_CM_128_HMAC_SHA1_80", desc->crypto[i].master_key);
+                                       sdp_message_a_attribute_add(msg, lineno, osip_strdup("crypto"),
+                                               osip_strdup(buffer));
+                                       break;
+                               case AES_128_SHA1_32:
+                                       snprintf(buffer, 1024, "%d %s inline:%s",
+                                               desc->crypto[i].tag, "AES_CM_128_HMAC_SHA1_32", desc->crypto[i].master_key);
+                                       sdp_message_a_attribute_add(msg, lineno, osip_strdup("crypto"),
+                                               osip_strdup(buffer));
+                                       break;
+                               case AES_128_NO_AUTH:
+                                       ms_warning("Unsupported crypto suite: AES_128_NO_AUTH");
+                                       break;
+                               case NO_CIPHER_SHA1_80:
+                                       ms_warning("Unsupported crypto suite: NO_CIPHER_SHA1_80");
+                                       break; 
+                               default:
+                                       i = SAL_CRYPTO_ALGO_MAX;
+                       }
+               }
+               
+       } else {
+               sdp_message_m_media_add (msg, osip_strdup (mt),
+                                        int_2char (port), NULL,
+                                        osip_strdup ("RTP/AVP"));
+               
+       }
        if (desc->bandwidth>0) sdp_message_b_bandwidth_add (msg, lineno, osip_strdup ("AS"),
                                     int_2char(desc->bandwidth));
        if (desc->ptime>0) sdp_message_a_attribute_add(msg,lineno,osip_strdup("ptime"),
@@ -356,7 +394,7 @@ int sdp_to_media_description(sdp_message_t *msg, SalMediaDescription *desc){
                for(j=0;(sbw=sdp_message_bandwidth_get(msg,i,j))!=NULL;++j){
                        if (strcasecmp(sbw->b_bwtype,"AS")==0) stream->bandwidth=atoi(sbw->b_bandwidth);
                }
-               stream->dir=_sdp_message_get_mline_dir(msg,i);
+               stream->dir=_sdp_message_get_mline_dir(msg,i);          
                /* for each payload type */
                for (j=0;((number=sdp_message_m_payload_get (msg, i,j)) != NULL); j++){
                        const char *rtpmap,*fmtp;
@@ -374,6 +412,49 @@ int sdp_to_media_description(sdp_message_t *msg, SalMediaDescription *desc){
                                        pt->send_fmtp ? pt->send_fmtp : "");
                        }
                }
+               
+               /* read crypto lines if any */
+               if (stream->proto == SalProtoRtpSavp) {
+                       int k, valid_count = 0;
+                       sdp_attribute_t *attr;
+                               
+                       memset(&stream->crypto, 0, sizeof(stream->crypto));
+                       for (k=0;valid_count < SAL_CRYPTO_ALGO_MAX && (attr=sdp_message_attribute_get(msg,i,k))!=NULL;k++){
+                               char tmp[256], tmp2[256];
+                               if (keywordcmp("crypto",attr->a_att_field)==0 && attr->a_att_value!=NULL){
+                                       int nb = sscanf(attr->a_att_value, "%d %256s inline:%256s",
+                                               &stream->crypto[valid_count].tag,
+                                               tmp,
+                                               tmp2);
+                                               ms_message("Found valid crypto line (tag:%d algo:'%s' key:'%s'", 
+                                                               stream->crypto[valid_count].tag, 
+                                                               tmp, 
+                                                               tmp2);
+                                       if (nb == 3) {
+                                               if (strcmp(tmp, "AES_CM_128_HMAC_SHA1_80") == 0)
+                                                       stream->crypto[valid_count].algo = AES_128_SHA1_80;
+                                               else if (strcmp(tmp, "AES_CM_128_HMAC_SHA1_32") == 0)
+                                                       stream->crypto[valid_count].algo = AES_128_SHA1_32;
+                                               else {
+                                                       ms_warning("Failed to parse crypto-algo: '%s'", tmp);
+                                                       stream->crypto[valid_count].algo = 0;
+                                               }
+                                               if (stream->crypto[valid_count].algo) {
+                                                       strncpy(stream->crypto[valid_count].master_key, tmp2, 41);
+                                                       stream->crypto[valid_count].master_key[40] = '\0';
+                                                       ms_message("Found valid crypto line (tag:%d algo:'%s' key:'%s'", 
+                                                               stream->crypto[valid_count].tag, 
+                                                               tmp, 
+                                                               stream->crypto[valid_count].master_key);
+                                                       valid_count++;
+                                               }
+                                       } else {
+                                               ms_warning("sdp has a strange a= line (%s) nb=%i",attr->a_att_value,nb);
+                                       }
+                               }
+                       }
+                       ms_message("Found: %d valid crypto lines", valid_count);
+               }
        }
        desc->nstreams=i;
        return 0;
index 2d62217ac97d213511a88a06e7855ffe130c273b..e237b823cdbf48b036bda1f6b96e2b9b71a58f14 100644 (file)
@@ -8,6 +8,7 @@ UI_FILES=       about.ui \
                call_logs.ui \
                log.ui \
                buddylookup.ui \
+               tunnel_config.ui \
                waiting.ui
 
 PIXMAPS=       \
@@ -57,7 +58,7 @@ linphone_LDADD=$(ORTP_LIBS) \
 if BUILD_WIN32
 
 linphone.res:  $(LINPHONE_ICO_RC_FILE) $(LINPHONE_ICO_FILE)
-       windres $(LINPHONE_ICO_RC_FILE) -O coff -o linphone.res
+       windres $(srcdir)/$(LINPHONE_ICO_RC_FILE) -O coff -o linphone.res
 
 linphone_LDADD+=linphone.res -lwininet
 linphone_LDFLAGS=-Wl,--export-all-symbols -mwindows
@@ -74,7 +75,8 @@ endif
 AM_CFLAGS= -DIN_LINPHONE -I$(top_srcdir)/coreapi/ \
                $(MEDIASTREAMER_CFLAGS) \
                $(ORTP_CFLAGS) \
-               $(STRICT_OPTIONS) $(LIBGTK_CFLAGS) $(LIBGTKMAC_CFLAGS) $(IPV6_CFLAGS)
+               $(STRICT_OPTIONS) $(LIBGTK_CFLAGS) $(LIBGTKMAC_CFLAGS) $(IPV6_CFLAGS) \
+               $(TUNNEL_CFLAGS)
 
 
 version_date.h: $(top_srcdir)/configure.ac
index 748fbfee2eae6e12fdf9681d5d0acc790ad62aff..5ff2a08eb59d9555b391b0ae32aa22fc97079582 100644 (file)
@@ -55,7 +55,7 @@ void linphone_gtk_call_log_update(GtkWidget *w){
                LinphoneAddress *la=cl->dir==LinphoneCallIncoming ? cl->from : cl->to;
                char *addr= linphone_address_as_string_uri_only (la);
                const char *display;
-               gchar *logtxt;
+               gchar *logtxt, *minutes, *seconds;
                gchar quality[20];
                
                display=linphone_address_get_display_name (la);
@@ -67,10 +67,19 @@ void linphone_gtk_call_log_update(GtkWidget *w){
                if (cl->quality!=-1){
                        snprintf(quality,sizeof(quality),"%.1f",cl->quality);
                }
-               logtxt=g_markup_printf_escaped("<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
-                                              "%s\t%i minutes %i seconds\t",display, addr, cl->quality!=-1 ? quality : _("n/a"),
-                                              cl->start_date,
-                                              cl->duration/60,cl->duration%60);
+               minutes=g_markup_printf_escaped(
+                       ngettext("%i minute", "%i minutes", cl->duration/60),
+                       cl->duration/60);
+               seconds=g_markup_printf_escaped(
+                       ngettext("%i second", "%i seconds", cl->duration%60),
+                       cl->duration%60);
+               logtxt=g_markup_printf_escaped(
+                               _("<big><b>%s</b></big>\t<small><i>%s</i>\t"
+                                       "<i>Quality: %s</i></small>\n%s\t%s %s\t"),
+                               display, addr, cl->quality!=-1 ? quality : _("n/a"),
+                               cl->start_date, minutes, seconds);
+               g_free(minutes);
+               g_free(seconds);
                gtk_list_store_append (store,&iter);
                gtk_list_store_set (store,&iter,
                               0, cl->dir==LinphoneCallOutgoing ? GTK_STOCK_GO_UP : GTK_STOCK_GO_DOWN,
@@ -110,6 +119,10 @@ void linphone_gtk_history_row_activated(GtkWidget *treeview){
        }
 }
 
+void linphone_gtk_history_row_selected(GtkWidget *treeview){
+       put_selection_to_uribar(treeview);
+}
+
 void linphone_gtk_clear_call_logs(GtkWidget *button){
        linphone_core_clear_call_logs (linphone_gtk_get_core());
        linphone_gtk_call_log_update(gtk_widget_get_toplevel(button));
index 4d1567773d54cd7daee8d862aee8e737e2dab989..0feed47aff2213100159788f5d60daf0c652c10e 100644 (file)
@@ -49,7 +49,7 @@ static void init_local_participant(GtkWidget *participant){
 static GtkWidget *get_conference_tab(GtkWidget *mw){
        GtkWidget *box=(GtkWidget*)g_object_get_data(G_OBJECT(mw),"conference_tab");
        if (box==NULL){
-               GtkWidget *box=gtk_vbox_new(FALSE,0);
+               box=gtk_vbox_new(FALSE,0);
                GtkWidget *participant=linphone_gtk_create_widget("main","callee_frame");
                gtk_box_set_homogeneous(GTK_BOX(box),TRUE);
                init_local_participant(participant);
@@ -124,13 +124,15 @@ void linphone_gtk_terminate_conference_participant(LinphoneCall *call){
 void linphone_gtk_unset_from_conference(LinphoneCall *call){
        GtkWidget *mw=linphone_gtk_get_main_window();
        GtkWidget *box=(GtkWidget*)g_object_get_data(G_OBJECT(mw),"conference_tab");
-       GtkWidget *frame=find_conferencee_from_call(call);
+       GtkWidget *frame;
+       if (box==NULL) return; /*conference tab already destroyed*/
+       frame=find_conferencee_from_call(call);
        GList *children;
        if (frame){
                gtk_widget_destroy(frame);
        }
        children=gtk_container_get_children(GTK_CONTAINER(box));
-       if (g_list_length(children)==1){
+       if (g_list_length(children)==2){
                /*the conference is terminated */
                gtk_widget_destroy(box);
                g_object_set_data(G_OBJECT(mw),"conference_tab",NULL);
index 9dacac717882571f03567d4e85c1f051ca615469..d5a056feff907b5bf5249e598d3084cf5e8747c7 100644 (file)
@@ -239,6 +239,119 @@ static void linphone_gtk_init_bookmark_icon(void){
        g_signal_connect(G_OBJECT(GTK_EDITABLE(entry)),"changed",(GCallback)check_contact,linphone_gtk_get_core());
 }
 
+static gboolean friend_search_func(GtkTreeModel *model, gint column,
+                                                         const gchar *key,
+                                                         GtkTreeIter *iter,
+                                                         gpointer search_data){
+       char *name=NULL;
+       gboolean ret=TRUE;
+       gtk_tree_model_get(model,iter,FRIEND_NAME,&name,-1);
+       if (name!=NULL){
+               ret=strstr(name,key)==NULL;
+               g_free(name);
+       }
+       return ret;
+}
+
+static gint friend_sort(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){
+       char *n1=NULL,*n2=NULL;
+       int ret;
+       gtk_tree_model_get(model,a,FRIEND_NAME,&n1,-1);
+       gtk_tree_model_get(model,b,FRIEND_NAME,&n2,-1);
+       if (n1 && n2) {
+               ret=strcmp(n1,n2);
+               g_free(n1);
+               g_free(n2);
+       }else if (n1){
+               g_free(n1);
+               ret=-1;
+       }else if (n2){
+               g_free(n2);
+               ret=1;
+       }else ret=0;
+       return ret;
+}
+
+static void on_name_column_clicked(GtkTreeModel *model){
+       GtkSortType st;
+       gint column;
+       
+       gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(model),&column,&st);
+       if (column==FRIEND_NAME){
+               if (st==GTK_SORT_ASCENDING) st=GTK_SORT_DESCENDING;
+               else st=GTK_SORT_ASCENDING;
+       }else st=GTK_SORT_ASCENDING;
+       gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model),FRIEND_NAME,st);
+}
+
+
+static int get_friend_weight(const LinphoneFriend *lf){
+       int w=0;
+       switch(linphone_friend_get_status(lf)){
+               case LinphoneStatusOnline:
+                       w+=1000;
+               break;
+               case LinphoneStatusOffline:
+                       if (linphone_friend_get_send_subscribe(lf))
+                               w+=100;
+               break;
+               default:
+                       w+=500;
+               break;
+       }
+       return w;
+}
+
+static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend *lf2){
+       int w1,w2;
+       w1=get_friend_weight(lf1);
+       w2=get_friend_weight(lf2);
+       if (w1==w2){
+               const char *u1,*u2;
+               const LinphoneAddress *addr1,*addr2;
+               addr1=linphone_friend_get_address(lf1);
+               addr2=linphone_friend_get_address(lf2);
+               u1=linphone_address_get_username(addr1);
+               u2=linphone_address_get_username(addr2);
+               if (u1 && u2) return strcasecmp(u1,u2);
+               if (u1) return 1;
+               else return -1;
+       }
+       return w2-w1;
+}
+
+static gint friend_sort_with_presence(GtkTreeModel *model, GtkTreeIter *a,GtkTreeIter *b,gpointer user_data){
+       LinphoneFriend *lf1=NULL,*lf2=NULL;
+       gtk_tree_model_get(model,a,FRIEND_ID,&lf1,-1);
+       gtk_tree_model_get(model,b,FRIEND_ID,&lf2,-1);
+       return friend_compare_func(lf1,lf2);
+}
+
+
+static MSList *sort_friend_list(const MSList *friends){
+       MSList *ret=NULL;
+       const MSList *elem;
+       LinphoneFriend *lf;
+
+       for(elem=friends;elem!=NULL;elem=elem->next){
+               lf=(LinphoneFriend*)elem->data;
+               ret=ms_list_insert_sorted(ret,lf,(MSCompareFunc)friend_compare_func);
+       }
+       return ret;
+}
+
+static void on_presence_column_clicked(GtkTreeModel *model){
+       GtkSortType st;
+       gint column;
+       
+       gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(model),&column,&st);
+       if (column==FRIEND_ID){
+               if (st==GTK_SORT_ASCENDING) st=GTK_SORT_DESCENDING;
+               else st=GTK_SORT_ASCENDING;
+       }else st=GTK_SORT_ASCENDING;
+       gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model),FRIEND_ID,st);
+}
+
 static void linphone_gtk_friend_list_init(GtkWidget *friendlist)
 {
        GtkListStore *store;
@@ -254,12 +367,21 @@ static void linphone_gtk_friend_list_init(GtkWidget *friendlist)
        gtk_tree_view_set_model(GTK_TREE_VIEW(friendlist),GTK_TREE_MODEL(store));
        g_object_unref(G_OBJECT(store));
 
+       gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(friendlist),friend_search_func,NULL,NULL);
+       gtk_tree_view_set_search_column(GTK_TREE_VIEW(friendlist),FRIEND_NAME);
+
+       gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_NAME,friend_sort,NULL,NULL);
+       gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store),FRIEND_ID,friend_sort_with_presence,NULL,NULL);
+       
        renderer = gtk_cell_renderer_pixbuf_new ();
        column = gtk_tree_view_column_new_with_attributes (_("Name"),
                                                    renderer,
                                                    "pixbuf", FRIEND_ICON,
                                                    NULL);
        g_object_set (G_OBJECT(column), "resizable", TRUE, NULL);
+       g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_name_column_clicked,GTK_TREE_MODEL(store));
+       gtk_tree_view_column_set_clickable(column,TRUE);
+       
        renderer = gtk_cell_renderer_text_new ();
        gtk_tree_view_column_pack_start(column,renderer,FALSE);
        gtk_tree_view_column_add_attribute  (column,renderer,
@@ -273,6 +395,8 @@ static void linphone_gtk_friend_list_init(GtkWidget *friendlist)
                                                    "text", FRIEND_PRESENCE_STATUS,
                                                    NULL);
        g_object_set (G_OBJECT(column), "resizable", TRUE, NULL);
+       g_signal_connect_swapped(G_OBJECT(column),"clicked",(GCallback)on_presence_column_clicked,GTK_TREE_MODEL(store));
+       gtk_tree_view_column_set_clickable(column,TRUE);
        gtk_tree_view_column_set_visible(column,linphone_gtk_get_ui_config_int("friendlist_status",1));
        
        renderer = gtk_cell_renderer_pixbuf_new();
@@ -344,52 +468,6 @@ void linphone_gtk_directory_search_button_clicked(GtkWidget *button){
                linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"directory_search_entry"));
 }
 
-static int get_friend_weight(const LinphoneFriend *lf){
-       int w=0;
-       switch(linphone_friend_get_status(lf)){
-               case LinphoneStatusOnline:
-                       w+=1000;
-               break;
-               case LinphoneStatusOffline:
-                       if (linphone_friend_get_send_subscribe(lf))
-                               w+=100;
-               break;
-               default:
-                       w+=500;
-               break;
-       }
-       return w;
-}
-
-static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend *lf2){
-       int w1,w2;
-       w1=get_friend_weight(lf1);
-       w2=get_friend_weight(lf2);
-       if (w1==w2){
-               const char *u1,*u2;
-               const LinphoneAddress *addr1,*addr2;
-               addr1=linphone_friend_get_address(lf1);
-               addr2=linphone_friend_get_address(lf2);
-               u1=linphone_address_get_username(addr1);
-               u2=linphone_address_get_username(addr2);
-               if (u1 && u2) return strcasecmp(u1,u2);
-               if (u1) return 1;
-               else return -1;
-       }
-       return w2-w1;
-}
-
-static MSList *sort_friend_list(const MSList *friends){
-       MSList *ret=NULL;
-       const MSList *elem;
-       LinphoneFriend *lf;
-
-       for(elem=friends;elem!=NULL;elem=elem->next){
-               lf=(LinphoneFriend*)elem->data;
-               ret=ms_list_insert_sorted(ret,lf,(MSCompareFunc)friend_compare_func);
-       }
-       return ret;
-}
 
 void linphone_gtk_show_friends(void){
        GtkWidget *mw=linphone_gtk_get_main_window();
index 852a6f570598831f757dc0ec3e537b17748d2a24..5674d5544b12f0ca247aaa170ad993de2bca1f2b 100644 (file)
@@ -78,18 +78,23 @@ static void linphone_gtk_in_call_set_animation_image(GtkWidget *callview, const
        GtkWidget *container=linphone_gtk_get_widget(callview,"in_call_animation");
        GList *elem=gtk_container_get_children(GTK_CONTAINER(container));
        GtkWidget *image;
-       if (!is_stock)
+       
+       if (!is_stock){
+               if (image_name==NULL){
+                       gtk_widget_hide(container);
+               }
                image=create_pixmap(image_name);
-       else
+       }else
                image=gtk_image_new_from_stock(image_name,GTK_ICON_SIZE_DIALOG);
        if (elem)
                gtk_widget_destroy((GtkWidget*)elem->data);
        gtk_widget_show(image);
        gtk_container_add(GTK_CONTAINER(container),image);
-       
+       gtk_widget_show_all(container);
 }
 
 static void linphone_gtk_in_call_set_animation_spinner(GtkWidget *callview){
+#if GTK_CHECK_VERSION(2,20,0)
        GtkWidget *container=linphone_gtk_get_widget(callview,"in_call_animation");
        GList *elem=gtk_container_get_children(GTK_CONTAINER(container));
        GtkWidget *spinner=gtk_spinner_new();
@@ -97,7 +102,9 @@ static void linphone_gtk_in_call_set_animation_spinner(GtkWidget *callview){
                gtk_widget_destroy((GtkWidget*)elem->data);
        gtk_widget_show(spinner);
        gtk_container_add(GTK_CONTAINER(container),spinner);
+       gtk_widget_set_size_request(spinner, 20,20);
        gtk_spinner_start(GTK_SPINNER(spinner));
+#endif
 }
 
 
@@ -421,6 +428,45 @@ void linphone_gtk_in_call_view_enable_audio_view(LinphoneCall *call, gboolean va
        }
 }
 
+void linphone_gtk_auth_token_verified_clicked(GtkButton *button){
+       LinphoneCall *call=linphone_gtk_get_currently_displayed_call(NULL);
+       if (call){
+               linphone_call_set_authentication_token_verified(call,!linphone_call_get_authentication_token_verified(call));
+       }
+}
+
+void linphone_gtk_in_call_view_show_encryption(LinphoneCall *call){
+       GtkWidget *callview=(GtkWidget*)linphone_call_get_user_pointer(call);
+       GtkWidget *encryption_box=linphone_gtk_get_widget(callview,"encryption_box");
+       GtkWidget *label=linphone_gtk_get_widget(callview,"encryption_label");
+       GtkWidget *status_icon=linphone_gtk_get_widget(callview,"encryption_status_icon");
+       GtkWidget *verify_button=linphone_gtk_get_widget(callview,"encryption_verify_button");
+       LinphoneMediaEncryption me=linphone_call_params_get_media_encryption(linphone_call_get_current_params(call));
+       bool_t verified=linphone_call_get_authentication_token_verified(call);
+       switch(me){
+               case LinphoneMediaEncryptionSRTP:
+                       gtk_widget_show_all(encryption_box);
+                       gtk_label_set_markup(GTK_LABEL(label),_("Secured by SRTP"));
+                       gtk_widget_hide(status_icon);
+                       gtk_widget_hide(verify_button);
+               break;
+               case LinphoneMediaEncryptionZRTP:
+               {
+                       gchar *text=g_strdup_printf(_("Secured by ZRTP - [auth token: %s]"),linphone_call_get_authentication_token(call));
+                       gtk_label_set_markup(GTK_LABEL(label),text);
+                       g_free(text);
+                       gtk_image_set_from_stock(GTK_IMAGE(status_icon),
+                                                 verified ? GTK_STOCK_APPLY : GTK_STOCK_DIALOG_WARNING,GTK_ICON_SIZE_MENU);
+                       gtk_button_set_label(GTK_BUTTON(verify_button),
+                                            verified ? _("Set unverified") : _("Set verified"));
+                       gtk_widget_show_all(encryption_box);
+               }       
+               break;
+               default:
+                       gtk_widget_hide_all(encryption_box);
+       }
+}
+
 void linphone_gtk_in_call_view_set_in_call(LinphoneCall *call){
        GtkWidget *callview=(GtkWidget*)linphone_call_get_user_pointer(call);
        GtkWidget *status=linphone_gtk_get_widget(callview,"in_call_status");
@@ -444,6 +490,7 @@ void linphone_gtk_in_call_view_set_in_call(LinphoneCall *call){
                g_object_set_data(G_OBJECT(callview),"taskid",GINT_TO_POINTER(taskid));
        }
        linphone_gtk_in_call_view_enable_audio_view(call, !in_conf);
+       linphone_gtk_in_call_view_show_encryption(call);
        if (in_conf) linphone_gtk_set_in_conference(call);
 }
 
index c941e8c77eec101766003b8f9691bd724aec3dad..45c8b54aacfa4b42c3adc1a18d69a7ffe1561a35 100644 (file)
@@ -113,6 +113,7 @@ void linphone_gtk_enable_conference_button(LinphoneCore *lc, gboolean value);
 void linphone_gtk_set_in_conference(LinphoneCall *call);
 void linphone_gtk_unset_from_conference(LinphoneCall *call);
 void linphone_gtk_terminate_conference_participant(LinphoneCall *call);
+void linphone_gtk_in_call_view_show_encryption(LinphoneCall *call);
 typedef float (*get_volume_t)(void *data);
 void linphone_gtk_init_audio_meter(GtkWidget *w, get_volume_t get_volume, void *data);
 
index 3f61a3df4c99f4756ec7f874c7f79da0838e45a2..27c6f616586d5b931618cd2d771fa170a1b4790b 100644 (file)
@@ -62,6 +62,7 @@ static void linphone_gtk_display_warning(LinphoneCore *lc, const char *warning);
 static void linphone_gtk_display_url(LinphoneCore *lc, const char *msg, const char *url);
 static void linphone_gtk_call_log_updated(LinphoneCore *lc, LinphoneCallLog *cl);
 static void linphone_gtk_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cs, const char *msg);
+static void linphone_gtk_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t enabled, const char *token);
 static gboolean linphone_gtk_auto_answer(LinphoneCall *call);
 static void linphone_gtk_status_icon_set_blinking(gboolean val);
 
@@ -126,34 +127,35 @@ static GOptionEntry linphone_options[]={
 
 #ifndef WIN32
 #define CONFIG_FILE ".linphonerc"
+#define SECRETS_FILE ".linphone-zidcache"
 #else
 #define CONFIG_FILE "linphonerc"
+#define SECRETS_FILE "linphone-zidcache"
 #endif
 
 
-
-static char _config_file[1024];
-
-
-const char *linphone_gtk_get_config_file(){
+char *linphone_gtk_get_config_file(const char *filename){
+       const int path_max=1024;
+       char *config_file=g_malloc0(path_max);
+       if (filename==NULL) filename=CONFIG_FILE;
        /*try accessing a local file first if exists*/
        if (access(CONFIG_FILE,F_OK)==0){
-               snprintf(_config_file,sizeof(_config_file),"%s",CONFIG_FILE);
+               snprintf(config_file,path_max,"%s",filename);
        }else{
 #ifdef WIN32
                const char *appdata=getenv("APPDATA");
                if (appdata){
-                       snprintf(_config_file,sizeof(_config_file),"%s\\%s",appdata,LINPHONE_CONFIG_DIR);
-                       CreateDirectory(_config_file,NULL);
-                       snprintf(_config_file,sizeof(_config_file),"%s\\%s",appdata,LINPHONE_CONFIG_DIR "\\" CONFIG_FILE);
+                       snprintf(config_file,path_max,"%s\\%s",appdata,LINPHONE_CONFIG_DIR);
+                       CreateDirectory(config_file,NULL);
+                       snprintf(config_file,path_max,"%s\\%s\\%s",appdata,LINPHONE_CONFIG_DIR,filename);
                }
 #else
                const char *home=getenv("HOME");
                if (home==NULL) home=".";
-               snprintf(_config_file,sizeof(_config_file),"%s/%s",home,CONFIG_FILE);
+               snprintf(config_file,path_max,"%s/%s",home,filename);
 #endif
        }
-       return _config_file;
+       return config_file;
 }
 
 
@@ -207,6 +209,7 @@ static const char *linphone_gtk_get_factory_config_file(){
 static void linphone_gtk_init_liblinphone(const char *config_file,
                const char *factory_config_file) {
        LinphoneCoreVTable vtable={0};
+       gchar *secrets_file=linphone_gtk_get_config_file(SECRETS_FILE);
 
        vtable.call_state_changed=linphone_gtk_call_state_changed;
        vtable.registration_state_changed=linphone_gtk_registration_state_changed;
@@ -221,10 +224,13 @@ static void linphone_gtk_init_liblinphone(const char *config_file,
        vtable.text_received=linphone_gtk_text_received;
        vtable.refer_received=linphone_gtk_refer_received;
        vtable.buddy_info_updated=linphone_gtk_buddy_info_updated;
+       vtable.call_encryption_changed=linphone_gtk_call_encryption_changed;
 
        linphone_core_set_user_agent("Linphone", LINPHONE_VERSION);
        the_core=linphone_core_new(&vtable,config_file,factory_config_file,NULL);
        linphone_core_set_waiting_callback(the_core,linphone_gtk_wait,NULL);
+       linphone_core_set_zrtp_secrets_file(the_core,secrets_file);
+       g_free(secrets_file);
 }
 
 
@@ -494,7 +500,7 @@ static gboolean linphone_gtk_iterate(LinphoneCore *lc){
        static unsigned long previd=0;
        static unsigned long preview_previd=0;
        static gboolean in_iterate=FALSE;
-       
+
        /*avoid reentrancy*/
        if (in_iterate) return TRUE;
        in_iterate=TRUE;
@@ -676,7 +682,11 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
        gtk_widget_set_visible(button,!add_call);
        
        button=linphone_gtk_get_widget(mw,"add_call");
-       gtk_widget_set_sensitive(button,start_active);
+       if (linphone_core_sound_resources_locked(lc) || (call && linphone_call_get_state(call)==LinphoneCallIncomingReceived)) {
+               gtk_widget_set_sensitive(button,FALSE);
+       } else {
+               gtk_widget_set_sensitive(button,start_active);
+       }
        gtk_widget_set_visible(button,add_call);
        
        gtk_widget_set_sensitive(linphone_gtk_get_widget(mw,"terminate_call"),stop_active);
@@ -1059,6 +1069,10 @@ static void linphone_gtk_call_state_changed(LinphoneCore *lc, LinphoneCall *call
        linphone_gtk_update_call_buttons (call);
 }
 
+static void linphone_gtk_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t enabled, const char *token){
+       linphone_gtk_in_call_view_show_encryption(call);
+}
+
 static void update_registration_status(LinphoneProxyConfig *cfg, LinphoneRegistrationState rs){
        GtkComboBox *box=GTK_COMBO_BOX(linphone_gtk_get_widget(linphone_gtk_get_main_window(),"identities"));
        GtkTreeModel *model=gtk_combo_box_get_model(box);
@@ -1138,6 +1152,8 @@ void linphone_gtk_link_to_website(GtkWidget *item){
 
 #ifndef HAVE_GTK_OSX
 
+static GtkStatusIcon *icon=NULL;
+
 static void icon_popup_menu(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data){
        GtkWidget *menu=(GtkWidget*)g_object_get_data(G_OBJECT(status_icon),"menu");
        gtk_menu_popup(GTK_MENU(menu),NULL,NULL,gtk_status_icon_position_menu,status_icon,button,activate_time);
@@ -1176,8 +1192,6 @@ static GtkWidget *create_icon_menu(){
        return menu;
 }
 
-static GtkStatusIcon *icon=NULL;
-
 static void handle_icon_click() {
        GtkWidget *mw=linphone_gtk_get_main_window();
        if (!gtk_window_is_active((GtkWindow*)mw)) {
@@ -1195,7 +1209,9 @@ static void linphone_gtk_init_status_icon(){
        const char *title;
        title=linphone_gtk_get_ui_config("title",_("Linphone - a video internet phone"));
        icon=gtk_status_icon_new_from_pixbuf(pbuf);
+#if GTK_CHECK_VERSION(2,20,0)
        gtk_status_icon_set_name(icon,title);
+#endif
        g_signal_connect_swapped(G_OBJECT(icon),"activate",(GCallback)handle_icon_click,NULL);
        g_signal_connect(G_OBJECT(icon),"popup-menu",(GCallback)icon_popup_menu,NULL);
        gtk_status_icon_set_tooltip(icon,title);
@@ -1246,6 +1262,13 @@ static void linphone_gtk_status_icon_set_blinking(gboolean val){
 #endif
 }
 
+void linphone_gtk_options_activate(GtkWidget *item){
+#ifndef HAVE_GTK_OSX
+       gtk_widget_set_visible(linphone_gtk_get_widget(linphone_gtk_get_main_window(),"quit_item"),
+               icon && !gtk_status_icon_is_embedded(icon));
+#endif
+}
+
 static void init_identity_combo(GtkComboBox *box){
        GtkListStore *store;
        GtkCellRenderer *r1,*r2;
@@ -1571,14 +1594,19 @@ void linphone_gtk_display_wizard() {
 }
 
 static void linphone_gtk_quit(void){
-       linphone_gtk_uninit_instance();
-       linphone_gtk_destroy_log_window();
-       linphone_core_destroy(the_core);
-       linphone_gtk_log_uninit();
+       static gboolean quit_done=FALSE;
+       if (!quit_done){
+               quit_done=TRUE;
+               g_source_remove_by_user_data(linphone_gtk_get_core());
+               linphone_gtk_uninit_instance();
+               linphone_gtk_destroy_log_window();
+               linphone_core_destroy(the_core);
+               linphone_gtk_log_uninit();
 #ifdef HAVE_NOTIFY
-       notify_uninit();
+               notify_uninit();
 #endif
-       gdk_threads_leave();
+               gdk_threads_leave();
+       }
 }
 
 #ifdef HAVE_GTK_OSX
@@ -1600,7 +1628,7 @@ int main(int argc, char *argv[]){
 #ifdef ENABLE_NLS
        void *p;
 #endif
-       const char *config_file;
+       char *config_file;
        const char *factory_config_file;
        const char *lang;
        GtkSettings *settings;
@@ -1612,7 +1640,7 @@ int main(int argc, char *argv[]){
        
        progpath = strdup(argv[0]);
        
-       config_file=linphone_gtk_get_config_file();
+       config_file=linphone_gtk_get_config_file(NULL);
        
 
 #ifdef WIN32
index d4f3eb6fdd2bbb46b7edcfa5949ebd0ac597cc26..f6f418a03c55ca4686940cf23a3615ee07069e78 100644 (file)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
+  <requires lib="gtk+" version="2.18"/>
   <object class="GtkWindow" id="dummy_conf_window">
     <property name="can_focus">False</property>
     <child>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkHBox" id="incall_hbox1">
+                  <object class="GtkVBox" id="in_call_animation">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkVBox" id="in_call_animation">
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="in_call_uri">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">label</property>
+                    <property name="justify">center</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="encryption_box">
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkImage" id="image121">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <child>
-                          <placeholder/>
-                        </child>
+                        <property name="stock">gtk-dialog-authentication</property>
+                        <property name="icon-size">1</property>
                       </object>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="in_call_uri">
+                      <object class="GtkImage" id="encryption_status_icon">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="stock">gtk-apply</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="encryption_label">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="label" translatable="yes">label</property>
-                        <property name="justify">center</property>
                       </object>
                       <packing>
                         <property name="expand">True</property>
                         <property name="fill">True</property>
-                        <property name="position">1</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButton" id="encryption_verify_button">
+                        <property name="label" translatable="yes">Set verified</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="use_action_appearance">False</property>
+                        <signal name="clicked" handler="linphone_gtk_auth_token_verified_clicked" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
-                    <property name="fill">True</property>
-                    <property name="position">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
                 <child>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
-                    <property name="position">1</property>
+                    <property name="position">3</property>
                   </packing>
                 </child>
                 <child>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
-                    <property name="position">2</property>
+                    <property name="position">4</property>
                   </packing>
                 </child>
                 <child>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
-                    <property name="position">3</property>
+                    <property name="position">5</property>
                   </packing>
                 </child>
               </object>
                 <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_Options</property>
                 <property name="use_underline">True</property>
+                <signal name="activate" handler="linphone_gtk_options_activate" swapped="no"/>
                 <child type="submenu">
                   <object class="GtkMenu" id="menu2">
                     <property name="visible">True</property>
                         <signal name="toggled" handler="linphone_gtk_enable_self_view" swapped="no"/>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separatormenuitem2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="quit_item">
+                        <property name="label">gtk-quit</property>
+                        <property name="can_focus">False</property>
+                        <property name="use_action_appearance">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="gtk_main_quit" swapped="no"/>
+                      </object>
+                    </child>
                   </object>
                 </child>
               </object>
                                     <property name="invisible_char">●</property>
                                     <property name="primary_icon_activatable">False</property>
                                     <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
                                     <signal name="activate" handler="linphone_gtk_uri_bar_activate" swapped="no"/>
                                   </object>
                                   <packing>
                                     <property name="invisible_char_set">True</property>
                                     <property name="primary_icon_activatable">False</property>
                                     <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
                                     <signal name="changed" handler="linphone_gtk_show_friends" swapped="no"/>
                                   </object>
                                   <packing>
                               <object class="GtkScrolledWindow" id="scrolledwindow1">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="hscrollbar_policy">automatic</property>
-                                <property name="vscrollbar_policy">automatic</property>
                                 <child>
                                   <object class="GtkTreeView" id="contact_list">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property name="reorderable">True</property>
+                                    <property name="search_column">0</property>
                                     <signal name="button-press-event" handler="linphone_gtk_contact_list_button_pressed" swapped="no"/>
                                     <signal name="cursor-changed" handler="linphone_gtk_contact_clicked" swapped="no"/>
                                     <signal name="row-activated" handler="linphone_gtk_contact_activated" swapped="no"/>
                                     <signal name="popup-menu" handler="linphone_gtk_popup_contact_menu" swapped="no"/>
+                                    <child internal-child="selection">
+                                      <object class="GtkTreeSelection" id="treeview-selection1"/>
+                                    </child>
                                   </object>
                                 </child>
                               </object>
                                         <property name="invisible_char_set">True</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
-                                        <property name="primary_icon_sensitive">True</property>
-                                        <property name="secondary_icon_sensitive">True</property>
                                         <signal name="activate" handler="linphone_gtk_directory_search_activate" swapped="no"/>
                                         <signal name="icon-press" handler="linphone_gtk_directory_search_activate" swapped="no"/>
                                         <signal name="focus-in-event" handler="linphone_gtk_directory_search_focus_in" swapped="no"/>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="hscrollbar_policy">never</property>
-                                <property name="vscrollbar_policy">automatic</property>
                                 <child>
                                   <object class="GtkTreeView" id="logs_view">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="headers_visible">False</property>
+                                    <signal name="cursor-changed" handler="linphone_gtk_history_row_selected" swapped="no"/>
                                     <signal name="row-activated" handler="linphone_gtk_history_row_activated" swapped="no"/>
+                                    <child internal-child="selection">
+                                      <object class="GtkTreeSelection" id="treeview-selection2"/>
+                                    </child>
                                   </object>
                                 </child>
                               </object>
                                         <property name="invisible_char">●</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
-                                        <property name="primary_icon_sensitive">True</property>
-                                        <property name="secondary_icon_sensitive">True</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
                                         <property name="invisible_char">●</property>
                                         <property name="primary_icon_activatable">False</property>
                                         <property name="secondary_icon_activatable">False</property>
-                                        <property name="primary_icon_sensitive">True</property>
-                                        <property name="secondary_icon_sensitive">True</property>
                                       </object>
                                       <packing>
                                         <property name="left_attach">1</property>
index 004e49edd4d293eb29120fc526a2de0ec92e681f..dcea80e264cdd01fcb446122416194787e494e79 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <requires lib="gtk+" version="2.16"/>
+  <requires lib="gtk+" version="2.18"/>
   <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
     <property name="lower">500</property>
@@ -54,6 +54,7 @@
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
   </object>
+  <object class="GtkListStore" id="liststore1"/>
   <object class="GtkListStore" id="model1">
     <columns>
       <!-- column-name gchararray -->
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                         <property name="left_padding">12</property>
                         <child>
-                          <object class="GtkVBox" id="vbox6">
+                          <object class="GtkTable" id="table1">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="n_rows">5</property>
+                            <property name="n_columns">2</property>
                             <child>
-                              <placeholder/>
+                              <object class="GtkComboBox" id="proto_combo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="model">model8</property>
+                                <child>
+                                  <object class="GtkCellRendererText" id="renderer1"/>
+                                  <attributes>
+                                    <attribute name="text">0</attribute>
+                                  </attributes>
+                                </child>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" id="proto_port">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">•</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <property name="adjustment">adjustment7</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkSpinButton" id="video_rtp_port">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
                             </child>
                             <child>
-                              <object class="GtkTable" id="table1">
+                              <object class="GtkSpinButton" id="audio_rtp_port">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="invisible_char">•</property>
+                                <property name="invisible_char_set">True</property>
+                                <property name="primary_icon_activatable">False</property>
+                                <property name="secondary_icon_activatable">False</property>
+                                <property name="primary_icon_sensitive">True</property>
+                                <property name="secondary_icon_sensitive">True</property>
+                                <property name="adjustment">adjustment3</property>
+                                <signal name="value-changed" handler="linphone_gtk_audio_port_changed" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label7">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
                                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                <property name="n_rows">3</property>
-                                <property name="n_columns">2</property>
-                                <child>
-                                  <object class="GtkComboBox" id="proto_combo">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="model">model8</property>
-                                    <child>
-                                      <object class="GtkCellRendererText" id="renderer1"/>
-                                      <attributes>
-                                        <attribute name="text">0</attribute>
-                                      </attributes>
-                                    </child>
-                                  </object>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="proto_port">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="invisible_char">•</property>
-                                    <property name="invisible_char_set">True</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="adjustment">adjustment7</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="video_rtp_port">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="invisible_char">•</property>
-                                    <property name="invisible_char_set">True</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="adjustment">adjustment2</property>
-                                    <signal name="value-changed" handler="linphone_gtk_video_port_changed" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkSpinButton" id="audio_rtp_port">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">True</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="invisible_char">•</property>
-                                    <property name="invisible_char_set">True</property>
-                                    <property name="primary_icon_activatable">False</property>
-                                    <property name="secondary_icon_activatable">False</property>
-                                    <property name="primary_icon_sensitive">True</property>
-                                    <property name="secondary_icon_sensitive">True</property>
-                                    <property name="adjustment">adjustment3</property>
-                                    <signal name="value-changed" handler="linphone_gtk_audio_port_changed" swapped="no"/>
-                                  </object>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label7">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="label" translatable="yes">Video RTP/UDP:</property>
-                                    <property name="justify">right</property>
-                                  </object>
-                                  <packing>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label6">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                                    <property name="label" translatable="yes">Audio RTP/UDP:</property>
-                                    <property name="justify">right</property>
-                                  </object>
-                                  <packing>
-                                    <property name="top_attach">2</property>
-                                    <property name="bottom_attach">3</property>
-                                  </packing>
-                                </child>
+                                <property name="label" translatable="yes">Video RTP/UDP:</property>
+                                <property name="justify">right</property>
                               </object>
                               <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label6">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="label" translatable="yes">Audio RTP/UDP:</property>
+                                <property name="justify">right</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="media_encryption_label">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Media encryption type</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkComboBox" id="media_encryption_combo">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="active">0</property>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="tunnel_label">
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Tunnel</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="tunnel_edit_button">
+                                <property name="label" translatable="yes">edit</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">True</property>
+                                <property name="use_action_appearance">False</property>
+                                <signal name="clicked" handler="linphone_gtk_edit_tunnel" swapped="no"/>
+                              </object>
+                              <packing>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
                               </packing>
                             </child>
                           </object>
index 6db589df6192907e8823270fe87a1d0d05dd4298..ff9d91cf0e875376572d9afb0284b0660495b321 100644 (file)
@@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 
 #include "linphone.h"
+#include "linphone_tunnel.h"
 
 typedef enum {
        CAP_IGNORE,
@@ -803,6 +804,72 @@ void linphone_gtk_ui_level_toggled(GtkWidget *w) {
        linphone_gtk_ui_level_adapt(top);
 }
 
+static void linphone_gtk_media_encryption_changed(GtkWidget *combo){
+       char *selected=gtk_combo_box_get_active_text(GTK_COMBO_BOX(combo));
+       LinphoneCore *lc=linphone_gtk_get_core();
+       if (selected!=NULL){
+               if (strcasecmp(selected,"SRTP")==0)
+                       linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionSRTP);
+               else if (strcasecmp(selected,"ZRTP")==0)
+                       linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionZRTP);
+               else linphone_core_set_media_encryption(lc,LinphoneMediaEncryptionNone);
+               g_free(selected);
+       }else g_warning("gtk_combo_box_get_active_text() returned NULL");
+}
+
+static void linphone_gtk_show_media_encryption(GtkWidget *pb){
+       LinphoneCore *lc=linphone_gtk_get_core();
+       GtkWidget *combo=linphone_gtk_get_widget(pb,"media_encryption_combo");
+       bool_t no_enc=TRUE;
+       int srtp_id=-1,zrtp_id=-1;
+       GtkTreeModel *model;
+       GtkListStore *store;
+       GtkTreeIter iter;
+       GtkCellRenderer *renderer=gtk_cell_renderer_text_new();
+       
+       model=GTK_TREE_MODEL((store=gtk_list_store_new(1,G_TYPE_STRING)));
+       gtk_combo_box_set_model(GTK_COMBO_BOX(combo),model);
+       gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo),renderer,TRUE);
+       gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo),renderer,"text",0,NULL);
+       
+       gtk_list_store_append(store,&iter);
+       gtk_list_store_set(store,&iter,0,_("None"),-1);
+       
+       if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionSRTP)){
+               gtk_list_store_append(store,&iter);
+               gtk_list_store_set(store,&iter,0,_("SRTP"),-1);
+               srtp_id=1;
+               no_enc=FALSE;
+       }
+       if (linphone_core_media_encryption_supported(lc,LinphoneMediaEncryptionZRTP)){
+               gtk_list_store_append(store,&iter);
+               gtk_list_store_set(store,&iter,0,_("ZRTP"),-1);
+               no_enc=FALSE;
+               if (srtp_id!=-1) zrtp_id=2;
+               else zrtp_id=1;
+       }
+       if (no_enc){
+               /*hide this setting*/
+               gtk_widget_hide(combo);
+               gtk_widget_hide(linphone_gtk_get_widget(pb,"media_encryption_label"));
+       }else{
+               LinphoneMediaEncryption menc=linphone_core_get_media_encryption(lc);
+               switch(menc){
+                       case LinphoneMediaEncryptionNone:
+                               gtk_combo_box_set_active(GTK_COMBO_BOX(combo),0);
+                       break;
+                       case LinphoneMediaEncryptionSRTP:
+                               if (srtp_id!=-1) gtk_combo_box_set_active(GTK_COMBO_BOX(combo),srtp_id);
+                       break;
+                       case LinphoneMediaEncryptionZRTP:
+                               if (zrtp_id!=-1) gtk_combo_box_set_active(GTK_COMBO_BOX(combo),zrtp_id);
+                       break;
+               }
+               g_signal_connect(G_OBJECT(combo),"changed",(GCallback)linphone_gtk_media_encryption_changed,NULL);
+       }
+       g_object_unref(G_OBJECT(model));
+}
+
 void linphone_gtk_show_parameters(void){
        GtkWidget *pb=linphone_gtk_create_window("parameters");
        LinphoneCore *lc=linphone_gtk_get_core();
@@ -841,6 +908,8 @@ void linphone_gtk_show_parameters(void){
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"video_rtp_port")),
                                linphone_core_get_video_port(lc));
 
+       linphone_gtk_show_media_encryption(pb);
+       
        tmp=linphone_core_get_nat_address(lc);
        if (tmp) gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(pb,"nat_address")),tmp);
        tmp=linphone_core_get_stun_server(lc);
@@ -918,5 +987,103 @@ void linphone_gtk_show_parameters(void){
 
        g_signal_connect(G_OBJECT(linphone_gtk_get_widget(pb,"proto_port")),"value-changed",(GCallback)linphone_gtk_update_my_port,NULL);
        g_signal_connect(G_OBJECT(linphone_gtk_get_widget(pb,"proto_combo")),"changed",(GCallback)linphone_gtk_proto_changed,NULL);
+
+
+       if (linphone_core_tunnel_available()){
+               gtk_widget_set_visible(GTK_WIDGET(linphone_gtk_get_widget(pb,"tunnel_edit_button")), TRUE);
+               gtk_widget_set_visible(GTK_WIDGET(linphone_gtk_get_widget(pb,"tunnel_label")), TRUE);
+       }
+
        gtk_widget_show(pb);
 }
+
+
+void linphone_gtk_edit_tunnel_closed(GtkWidget *button){
+        GtkWidget *pb=gtk_widget_get_toplevel(button);
+        gtk_widget_destroy(pb);
+}
+
+#ifdef TUNNEL_ENABLED
+static void tunnel_get_server_host_and_port(LinphoneTunnel *tunnel, char *host, int size, int *port){
+       char *colon;
+       char *addresses;
+       char *str1;
+       char *address;
+       const char* configured_addresses;
+
+       configured_addresses=linphone_tunnel_get_server_addresses(tunnel);
+
+       if (configured_addresses==NULL){
+               host[0]=0;
+               *port=0;
+               return;
+       }
+       addresses=ms_strdup(configured_addresses);
+       str1=addresses;
+       address=strtok(str1," "); // Not thread safe
+       if (!address) return;
+       colon=strchr(address, ':');
+       if (!colon) return;
+       *colon++='\0';
+       *port=atoi(colon);
+       strncpy(host,address,size);
+       ms_free(addresses);
+}
+
+#endif
+
+void linphone_gtk_edit_tunnel(GtkButton *button){
+       GtkWidget *w=linphone_gtk_create_window("tunnel_config");
+#ifdef TUNNEL_ENABLED
+       LinphoneCore *lc=linphone_gtk_get_core();
+       LinphoneTunnel *tunnel=linphone_core_get_tunnel(lc);
+       char host[128]={'\0'};
+       int port=0;
+       tunnel_get_server_host_and_port(tunnel, host, sizeof(host), &port);
+       LinphoneTunnelState state=linphone_tunnel_get_state(tunnel);
+
+       gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(w,"host")),host);
+       if (port==0) port=443;
+       gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(w,"port")), port);
+
+       if (state == LinphoneTunnelEnabled){
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"radio_enable")),1);
+       } else{
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"radio_disable")),1);
+       }
+
+       g_object_weak_ref(G_OBJECT(w),(GWeakNotify)linphone_gtk_edit_tunnel_closed,w);
+#endif
+       gtk_widget_show(w);
+}
+
+void linphone_gtk_tunnel_ok(GtkButton *button){
+       GtkWidget *w=gtk_widget_get_toplevel(GTK_WIDGET(button));
+       // Save information to config file
+#ifdef TUNNEL_ENABLED
+       LinphoneCore *lc=linphone_gtk_get_core();
+       char address[128]={'\0'};
+       LinphoneTunnel *tunnel=linphone_core_get_tunnel(lc);
+
+       gint port = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(w,"port")));
+       gboolean enabled=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(w,"radio_enable")));
+       const char *host=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"host")));
+       
+       if (tunnel==NULL) return;
+       
+       snprintf(address, sizeof address, "%s:%i", host, port);
+       linphone_tunnel_set_server_addresses(tunnel, address);
+       if (enabled){
+               linphone_tunnel_set_state(tunnel, LinphoneTunnelEnabled);
+       } else{
+               linphone_tunnel_set_state(tunnel,LinphoneTunnelDisabled);
+       }
+       linphone_tunnel_update(tunnel);
+#endif
+       gtk_widget_destroy(w);
+}
+
+
+void linphone_gtk_tunnel_cancel(GtkButton *button){
+
+}
index 428439e6ab6b19373cc2062c10cc923d2570584a..c9550a09fc59156457b2c8ae97861c661fdec4f3 100644 (file)
@@ -23,7 +23,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 static ms_thread_t pipe_thread;
 static ortp_pipe_t server_pipe=(ortp_pipe_t)-1;
 static gboolean server_pipe_running=TRUE;
-static char *pipe_name;
+static char *pipe_name=NULL;
+
+gchar *make_name(const char *appname){
+       const char *username=getenv("USER");
+       if (username){
+               return g_strdup_printf("%s-%s",appname,username);
+       }
+       return g_strdup(appname);
+}
 
 static gboolean execute_wakeup(char *uri){
        linphone_gtk_show_main_window();
@@ -54,7 +62,6 @@ static void * server_pipe_thread(void *pointer){
 }
 
 static void linphone_gtk_init_pipe(const char *name){
-       pipe_name=g_strdup(name);
        server_pipe=ortp_server_pipe_create(name);
        if (server_pipe==(ortp_pipe_t)-1){
                g_warning("Fail to create server pipe for name %s: %s",name,strerror(errno));
@@ -63,7 +70,8 @@ static void linphone_gtk_init_pipe(const char *name){
 }
 
 bool_t linphone_gtk_init_instance(const char *app_name, const char *addr_to_call){
-       ortp_pipe_t p=ortp_client_pipe_connect(app_name);
+       pipe_name=make_name(app_name);
+       ortp_pipe_t p=ortp_client_pipe_connect(pipe_name);
        if (p!=(ortp_pipe_t)-1){
                uint8_t buf[256]={0};
                g_message("There is already a running instance.");
@@ -78,7 +86,7 @@ bool_t linphone_gtk_init_instance(const char *app_name, const char *addr_to_call
                ortp_client_pipe_close(p);
                return FALSE;
        }else{
-               linphone_gtk_init_pipe(app_name);
+               linphone_gtk_init_pipe(pipe_name);
        }
        return TRUE;
 }
index cbd8d6f41f336c874893b98ba28020cb7a8a56c6..3a1dac376f0fc2012406df6118041677ae10620a 100644 (file)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 2.6 -->
-  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
     <property name="upper">100000</property>
     <property name="value">3600</property>
     <property name="icon">linphone2.png</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox2">
+      <object class="GtkBox" id="dialog-vbox2">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
         <property name="spacing">2</property>
         <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area2">
+          <object class="GtkButtonBox" id="dialog-action_area2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="text" translatable="yes">sip:</property>
                             <property name="primary_icon_activatable">False</property>
                             <property name="secondary_icon_activatable">False</property>
-                            <property name="primary_icon_sensitive">True</property>
-                            <property name="secondary_icon_sensitive">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="text" translatable="yes">sip:</property>
                             <property name="primary_icon_activatable">False</property>
                             <property name="secondary_icon_activatable">False</property>
-                            <property name="primary_icon_sensitive">True</property>
-                            <property name="secondary_icon_sensitive">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="primary_icon_activatable">False</property>
                             <property name="secondary_icon_activatable">False</property>
-                            <property name="primary_icon_sensitive">True</property>
-                            <property name="secondary_icon_sensitive">True</property>
                           </object>
                           <packing>
                             <property name="left_attach">1</property>
                             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                             <property name="primary_icon_activatable">False</property>
                             <property name="secondary_icon_activatable">False</property>
-                            <property name="primary_icon_sensitive">True</property>
-                            <property name="secondary_icon_sensitive">True</property>
                             <property name="adjustment">adjustment1</property>
                           </object>
                           <packing>
                     </child>
                     <child>
                       <object class="GtkCheckButton" id="register">
-                        <property name="label" translatable="yes">Register at startup</property>
+                        <property name="label" translatable="yes">Register</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
diff --git a/gtk/tunnel_config.ui b/gtk/tunnel_config.ui
new file mode 100644 (file)
index 0000000..c10ddf2
--- /dev/null
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.18"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="value">3600</property>
+    <property name="upper">100000</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">10</property>
+  </object>
+  <object class="GtkDialog" id="tunnel_config">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Linphone - Configure a SIP account</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="icon">linphone2.png</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <object class="GtkFrame" id="frame15">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment15">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <object class="GtkVBox" id="vbox11">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <child>
+                      <object class="GtkTable" id="table6">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="n_rows">4</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label38">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Host</property>
+                            <property name="justify">right</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkEntry" id="host">
+                            <property name="width_request">275</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label39">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="label" translatable="yes">Port</property>
+                            <property name="justify">right</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio_enable">
+                            <property name="label" translatable="yes">Enable</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">2</property>
+                            <property name="bottom_attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkRadioButton" id="radio_disable">
+                            <property name="label" translatable="yes">Disable</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">radio_enable</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="port">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="adjustment">adjustment1</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">1</property>
+                            <property name="bottom_attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label42">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">Configure tunnel</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button6">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="linphone_gtk_tunnel_ok"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button7">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="use_stock">True</property>
+                <signal name="clicked" handler="linphone_gtk_proxy_cancel"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">button6</action-widget>
+      <action-widget response="0">button7</action-widget>
+    </action-widgets>
+  </object>
+</interface>
index b4a3866787bed30579594b1820b6ec2568f5fe9d..d0f97130d57b28691bedde3c2c78f2cce5abeeb2 100644 (file)
@@ -220,9 +220,26 @@ public interface LinphoneCall {
         */
        float getAverageQuality();
        
-       
+       /**
+        * Used by ZRTP encryption mechanism.
+        * @return SAS associated to the main stream [voice]
+        */
        String getAuthenticationToken();
+
+       /**
+        * Used by ZRTP encryption mechanism.
+        * SAS can be verified manually by the user or automatically using a previously shared secret.
+        * @return true if the main stream [voice ]SAS was verified.
+        */
        boolean isAuthenticationTokenVerified();
-       boolean areStreamsEncrypted();
+
+       /**
+        * Used by ZRTP encryption mechanism.
+        * @param verified true when displayed SAS is correct
+        */
+       void setAuthenticationTokenVerified(boolean verified);
+
        boolean isInConference();
+       
+       float getPlayVolume();
 }
index 78a63d3fa9fd495fad08b3862af2507d3b275edf..5bf06733717f369069d9adad40a1f370351d7b3a 100644 (file)
@@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 package org.linphone.core;
-
+import org.linphone.core.LinphoneCore.MediaEncryption;
 /**
  * The LinphoneCallParams is an object containing various call related parameters.
  * It can be used to retrieve parameters from a currently running call or modify the call's characteristics
@@ -35,4 +35,15 @@ public interface LinphoneCallParams {
         */
        void setAudioBandwidth(int value);
        
+       /**
+        * return selected media encryption
+        * @return MediaEncryption.None MediaEncryption.SRTP or MediaEncryption.ZRTP
+        */
+       MediaEncryption getMediaEncryption();
+       /**
+        * set media encryption (rtp) to use
+        * @params menc: MediaEncryption.None, MediaEncryption.SRTP or MediaEncryption.ZRTP
+        */
+       void setMediaEnctyption(MediaEncryption menc);
+       
 }
index 249dff5587774f8860fe9160fa6caf34926f5a87..a9629cce1df9a638508e338e487c08ca1681af9a 100644 (file)
@@ -180,6 +180,46 @@ public interface LinphoneCore {
                        this.tls = t.tls;
                }
        }
+       /**
+        * Media (RTP) encryption enum-like.
+        *
+        */
+       static public class MediaEncryption {
+               @SuppressWarnings("unchecked")
+               static private Vector values = new Vector();
+               /**
+                * None
+                */
+               static public MediaEncryption None = new MediaEncryption(0,"None");       
+               /**
+                * SRTP
+                */
+               static public MediaEncryption SRTP = new MediaEncryption(1,"SRTP");
+               /**
+                * ZRTP
+                */
+               static public MediaEncryption ZRTP = new MediaEncryption(2,"ZRTP");
+               protected final int mValue;
+               private final String mStringValue;
+
+               @SuppressWarnings("unchecked")
+               private MediaEncryption(int value,String stringValue) {
+                       mValue = value;
+                       values.addElement(this);
+                       mStringValue=stringValue;
+               }
+               public static MediaEncryption fromInt(int value) {
+
+                       for (int i=0; i<values.size();i++) {
+                               MediaEncryption menc = (MediaEncryption) values.elementAt(i);
+                               if (menc.mValue == value) return menc;
+                       }
+                       throw new RuntimeException("MediaEncryption not found ["+value+"]");
+               }
+               public String toString() {
+                       return mStringValue;
+               }
+       }
        /**
         *      EC Calibrator Status
         */
@@ -433,6 +473,11 @@ public interface LinphoneCore {
         * @return true if echo cancellation is enabled.
         */
        boolean isEchoCancellationEnabled();
+       /**
+        * Get echo limiter status (another method of doing echo suppressionn, more brute force)
+        * @return true if echo limiter is enabled
+        */
+       boolean isEchoLimiterEnabled();
        /**
         * @param transports used for signaling (TCP, UDP and TLS)
         */
@@ -602,7 +647,7 @@ public interface LinphoneCore {
        void enableEchoLimiter(boolean val);
 
        boolean isInConference();
-       void enterConference();
+       boolean enterConference();
        void leaveConference();
 
        void addToConference(LinphoneCall call);
@@ -635,4 +680,44 @@ public interface LinphoneCore {
         * @return
         */
        boolean soundResourcesLocked();
+       /**
+        * Returns whether given media encryption is supported by liblinphone.
+        */
+       boolean mediaEncryptionSupported(MediaEncryption menc);
+       /**
+        * set media encryption (rtp) to use
+        * @params menc: MediaEncryption.None, MediaEncryption.SRTP or MediaEncryption.ZRTP
+        */
+       void setMediaEncryption(MediaEncryption menc);
+       /**
+        * return selected media encryption
+        * @return MediaEncryption.None, MediaEncryption.SRTP or MediaEncryption.ZRTP
+        */
+       MediaEncryption getMediaEncryption();
+/**
+        * Set media encryption required for outgoing calls
+        */
+       void setMediaEncryptionMandatory(boolean yesno);
+       /**
+        * @return if media encryption is required for outgoing calls
+        */
+       boolean isMediaEncryptionMandatory();
+
+       /**
+        * @param path path to music file played to remote side when on hold.
+        */
+       void setPlayFile(String path);
+       void tunnelEnable(boolean enable);
+       void tunnelAutoDetect();
+       void tunnelEnableLogs(boolean enable);
+       void tunnelCleanServers();
+       /**
+        * @param host tunnel server ip address
+        * @param port tunnel server tls port, recommended value is 443
+        * @param udpMirrorPort remote port on the tunnel server side  used to test udp reachability
+        * @param roundTripDelay udp packet round trip delay in ms considered as acceptable. recommended value is 1000 ms
+        */
+       void tunnelAddServerAndMirror(String host, int port, int udpMirrorPort, int roundTripDelay);
+
+       boolean isTunnelAvailable();
 }
index e4a7c307509dc823f358a80811ae8506671effaa..171cb5e39313f22fad27d107621a49af9be32f0d 100644 (file)
@@ -23,10 +23,9 @@ BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildArch:     i686
 %endif
 
-BuildRequires:  gnome-panel-devel libgnomeui-devel glib2-devel alsa-lib-devel
-BuildRequires:  libosip2-devel speex-devel gettext desktop-file-utils
-BuildRequires: readline-devel ncurses-devel
-BuildRequires:  intltool gettext-devel
+BuildRequires: gtk2-devel 
+BuildRequires: libeXosip2-devel speex-devel gettext 
+BuildRequires: intltool gettext-devel 
 %if %{video}
 BuildRequires: ffmpeg-devel SDL-devel
 %endif
@@ -40,58 +39,12 @@ Summary:        Development libraries for linphone
 Group:          Development/Libraries
 Requires:       %{name} = %{version}-%{release}
 Requires:      ortp-devel = @ORTP_VERSION@
+Requires:      mediastreamer2-devel = @MS2_VERSION@
 Requires:      glib2-devel
 
 %description    devel
 Libraries and headers required to develop software with linphone.
 
-%package -n ortp
-Summary:        A C library implementing the RTP protocol (rfc1889)
-Group:          System Environment/Libraries
-Version:        @ORTP_VERSION@
-
-%description -n ortp
-oRTP is a LGPL licensed C library implementing the RTP protocol (rfc1889). It
-is available for most *nix clones (primilarly Linux and HP-UX), and Win32.
-
-%package -n ortp-devel
-Summary:        Development libraries for ortp
-Group:          Development/Libraries
-Version:        @ORTP_VERSION@
-Requires:      ortp = @ORTP_VERSION@
-
-%description -n ortp-devel
-oRTP is a LGPL licensed C library implementing the RTP protocol (rfc1889). It
-is available for most *nix clones (primilarly Linux and HP-UX), and Win32.
-
-This package contains header files and development libraries needed to
-develop programs using the oRTP library.
-
-%package -n mediastreamer2
-Summary:        Audio/Video real-time streaming
-Group:          Development/Libraries
-Version:        @MS2_VERSION@
-
-%description -n mediastreamer2
-Mediastreamer2 is a GPL licensed library to make audio and video
-real-time streaming and processing. Written in pure C, it is based
-upon the oRTP library.
-
-%package -n mediastreamer2-devel
-Summary:        Headers, libraries and docs for the mediastreamer2 library
-Group:          Development/Libraries
-Version:        @MS2_VERSION@
-Requires:      mediastreamer2 = @MS2_VERSION@
-Requires:      ortp-devel = @ORTP_VERSION@
-
-%description -n mediastreamer2-devel
-Mediastreamer2 is a GPL licensed library to make audio and video
-real-time streaming and processing. Written in pure C, it is based
-upon the ortp library.
-
-This package contains header files and development libraries needed to
-develop programs using the mediastreamer2 library.
-
 %prep
 %setup -q
 #%patch -p 1 -b .pkgconfig
@@ -100,25 +53,19 @@ develop programs using the mediastreamer2 library.
 
 %build
 %configure \
-       --with-osip=/usr \
-       --with-speex=/usr \
-       --with-readline=/usr \
-%if %{video}
-       --enable-video \
-       --with-ffmpeg=/usr \
-       --with-sdl=/usr \
+%if !%{video}
+       --disable-video \
 %endif
-       --enable-ipv6
+       --docdir=%{_docdir} --enable-ipv6 --enable-static --enable-external-mediastreamer --enable-external-ortp
 %__make %{?_smp_mflags}
 
 
 %install
 rm -rf $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
-install -p -m 0644 pixmaps/linphone2.png $RPM_BUILD_ROOT%{_datadir}/pixmaps
+install -p -m 0644 pixmaps/linphone.png $RPM_BUILD_ROOT%{_datadir}/pixmaps
 %find_lang %{name}
-rm $RPM_BUILD_ROOT%{_datadir}/gnome/apps/Internet/linphone.desktop
-desktop-file-install --vendor=fedora \
+desktop-file-install \
   --delete-original \
   --dir $RPM_BUILD_ROOT%{_datadir}/applications \
   --add-category X-Fedora \
@@ -133,28 +80,17 @@ rm -rf $RPM_BUILD_ROOT
 
 %postun -p /sbin/ldconfig
 
-%post -n ortp -p /sbin/ldconfig
-
-%postun -n ortp -p /sbin/ldconfig
-
-%post -n mediastreamer2 -p /sbin/ldconfig
-
-%postun -n mediastreamer2 -p /sbin/ldconfig
 
 %files -f %{name}.lang
 %defattr(-,root,root)
 %doc AUTHORS ChangeLog COPYING NEWS README TODO
 %{_bindir}/*
-%{_libdir}/bonobo/servers/*.server
 %{_libdir}/liblinphone.so.*
-%exclude %{_libdir}/libortp*
-%{_libexecdir}/*
 %{_mandir}/*
-%{_datadir}/applications/*%{name}.desktop
-%{_datadir}/gnome/help/linphone
-%{_datadir}/gnome-2.0/ui/*.xml
+%{_datadir}/applications/%{name}.desktop
 %{_datadir}/pixmaps/linphone
-%{_datadir}/pixmaps/linphone2.png
+%{_datadir}/linphone
+%{_datadir}/pixmaps/linphone.png
 %{_datadir}/sounds/linphone
 
 %files devel
@@ -164,33 +100,7 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/liblinphone.la
 %{_libdir}/liblinphone.so
 %{_libdir}/pkgconfig/linphone.pc
-
-%files -n ortp
-%defattr(-,root,root)
-%doc oRTP/AUTHORS oRTP/ChangeLog oRTP/COPYING oRTP/NEWS oRTP/README oRTP/TODO
-%{_libdir}/libortp.so.*
-%exclude %{_libdir}/liblinphone*
-
-%files -n ortp-devel
-%defattr(-,root,root)
-%{_includedir}/ortp
-%{_libdir}/pkgconfig/ortp.pc
-%{_libdir}/libortp.a
-%{_libdir}/libortp.la
-%{_libdir}/libortp.so
-%{_datadir}/gtk-doc/html/ortp
-
-%files -n mediastreamer2
-%defattr(-,root,root)
-%doc mediastreamer2/AUTHORS mediastreamer2/ChangeLog mediastreamer2/COPYING
-%doc mediastreamer2/NEWS mediastreamer2/README
-%{_libdir}/libmediastreamer.so.*
-
-%files -n mediastreamer2-devel
-%{_includedir}/mediastreamer2
-%{_libdir}/pkgconfig/mediastreamer.pc
-%{_libdir}/libmediastreamer.so
-%{_libdir}/libmediastreamer.*a
+%{_docdir}
 
 %changelog
 * Wed Sep 28 2005 Francois-Xavier 'FiX' KOWALSKI <francois-xavier.kowalski@hp.com> - 1.2.0pre3
index 8e469969cdd63638213438a61de8858561721c97..9be357f71a27e5b5e625803d5959b75e4120a212 100644 (file)
@@ -6,13 +6,13 @@ AC_REQUIRE([LP_CHECK_OSIP2])
 
 case $host_alias in
        i386-apple*)
-               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork"
+               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork -lresolv"
        ;;
        armv6-apple*)
-               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork"
+               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork -lresolv"
        ;;
        armv7-apple*)
-               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork"
+               OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation -framework CFNetwork -lresolv"
        ;;
        x86_64-apple*)
                OSIP_LIBS="$OSIP_LIBS  -framework CoreFoundation"
@@ -42,6 +42,10 @@ AC_CHECK_LIB([eXosip2],[eXosip_get_version],
        [AC_DEFINE([HAVE_EXOSIP_GET_VERSION],[1],[Defined when eXosip_get_version is available])],
        [],
        [-losipparser2 -losip2 ])
+AC_CHECK_LIB([eXosip2],[eXosip_tls_verify_certificate],
+       [AC_DEFINE([HAVE_EXOSIP_TLS_VERIFY_CERTIFICATE],[1],[Defined when eXosip_tls_verify_certificate is available])],
+       [AC_MSG_WARN([Could not find eXosip_tls_verify_certificate in eXosip2 !])],
+       [-losipparser2 -losip2 ])
 AC_CHECK_LIB([eXosip2],[eXosip_get_socket],
        [AC_DEFINE([HAVE_EXOSIP_GET_SOCKET],[1],[Defined when eXosip_get_socket is available])],
        [AC_MSG_WARN([Could not find eXosip_get_socket in eXosip2 !])],
index 672a3365cf31dd23c502169301a6994e7ae4b67c..fbc201571d8ea4bdc208e87d2f81a109b8ebe060 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 672a3365cf31dd23c502169301a6994e7ae4b67c
+Subproject commit fbc201571d8ea4bdc208e87d2f81a109b8ebe060
diff --git a/oRTP b/oRTP
index 7606207905bd3dc661e68576097adce471916697..681e777d75b4e04f115034a5a90d3f27b99abe08 160000 (submodule)
--- a/oRTP
+++ b/oRTP
@@ -1 +1 @@
-Subproject commit 7606207905bd3dc661e68576097adce471916697
+Subproject commit 681e777d75b4e04f115034a5a90d3f27b99abe08
index ce473f9be37c8b635edc26594bf808d7f1868bbd..01deec29e3fc8d32150dbbbcd9cd4643deb28fcd 100644 (file)
@@ -1,5 +1,7 @@
 # List of source files containing translatable strings.
+gtk/tunnel_config.ui
 gtk/calllogs.c
+gtk/conference.c
 gtk/logging.c
 gtk/support.c
 gtk/chat.c
index 09993413ddf1f1f658bba511853498bfdf20a9a5..c9c2885de3e11071a8882723a3816d66c3e5b682 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
 # On hold → odložen
 # Pause call → odložit hovor
 # Resume call → obnovit hovor
+# token → klíč
 # Transfer → přepojit
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: linphone-3.4.3\n"
+"Project-Id-Version: linphone-3.4.99.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-10 19:56+0200\n"
-"PO-Revision-Date: 2011-04-10 20:11+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
+"PO-Revision-Date: 2011-11-04 22:30+0100\n"
 "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
 "Language: cs\n"
@@ -26,6 +27,41 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr "–"
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr "Konference"
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr "Já"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -36,23 +72,27 @@ msgstr "Nelze najít soubor s obrázkem: %s"
 msgid "Chat with %s"
 msgstr "Diskuze s %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "Za běhu vypisuje některé ladicí informace na standardní výstup."
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr "Soubor, kam zapisovat protokol."
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "Spustí se pouze do systémové oblasti, nezobrazí hlavní okno."
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "Zavolá právě teď na tuto adresu"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "je-li nastaveno, automaticky zvedne příchozí hovor"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -60,12 +100,12 @@ msgstr ""
 "Zadejte pracovní adresář (měl by být základní instalační adresář, například "
 "c:\\Program Files\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "Hovor s %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -78,7 +118,7 @@ msgstr ""
 "do svého adresáře?\n"
 "Odpovíte-li ne, tato osobo bude dočasně blokována."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -87,24 +127,54 @@ msgstr ""
 "Prosím, zadejte heslo pro uživatele <i>%s</i>\n"
 "v doméně <i>%s</i>:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+msgid "Call error"
+msgstr "Chyba hovoru"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Hovor ukončen"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Příchozí hovor"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr "Odpovědět"
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Odmítnout"
+
+#: ../gtk/main.c:1009
+msgid "Call paused"
+msgstr "Hovor odložen"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr "<span size=\"large\">kým: %s</span>"
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Odkaz na webovou stránku"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Lipnhone – internetový videofon"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (Výchozí)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
-msgstr "Okna"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
+msgstr "Byly jsme přepojeni na %s"
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -112,149 +182,166 @@ msgstr ""
 "Na tomto počítači nebyla objevena žádná zvuková karta.\n"
 "Nebudete moci vytáčet a přijímat a zvukové hovory."
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Volný SIP videofon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Zobrazit adresář"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Jméno"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Stav"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Hledat v adresáři %s"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Neplatný sipový kontakt!"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Volat komu: %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Poslat text komu: %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Upravit kontakt „%s“"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Odstranit kontakt „%s“"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Přidat nový kontakt z adresáře %s"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Kmitočet (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Stav"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Min. rychlost (kb/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametry"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Povoleno"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Zakázáno"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Účet"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "angličtina"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "francouzština"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "švédština"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "italština"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "španělština"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "brazilská portugalština"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "polština"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "němčina"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "ruština"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "japonština"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "dánština"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "maďarština"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "čeština"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "čínština"
 
-#: ../gtk/propertybox.c:664
+#: ../gtk/propertybox.c:707
 msgid "Traditional Chinese"
 msgstr "tradiční čínština"
 
-#: ../gtk/propertybox.c:665
+#: ../gtk/propertybox.c:708
 msgid "Norwegian"
 msgstr "norština"
 
-#: ../gtk/propertybox.c:722
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr "Aby se projevil výběr nového jazyka, je nutné znovu spustit linphone."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Žádná"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr "SRTP"
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr "ZRTP"
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -373,74 +460,99 @@ msgstr "Vytváření účtu"
 msgid "Now ready !"
 msgstr "Připraveno!"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, c-format
 msgid "Call #%i"
 msgstr "Hovor č. %i"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr "Přepojit hovor č. %i s %s"
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr "Přepojit"
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>Volá se…</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00:00:00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 msgid "<b>Incoming call</b>"
 msgstr "<b>Příchozí hovor</b>"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
+msgstr "dobrá"
+
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr "průměrná"
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr "slabá"
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr "velmi slabá"
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr "příliš špatná"
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr "nedostupná"
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
 msgstr ""
-"Odložit všechny hovory\n"
-"a odpovědět"
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
-msgstr "Odpovědět"
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr "Probíhá konference"
+
+#: ../gtk/incall_view.c:480
 msgid "<b>In call</b>"
 msgstr "<b>Probíhá hovor</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 msgid "<b>Paused call</b>"
 msgstr "<b>Odložený hovor</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i:%02i:%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Hovor skončil.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "Nahlas"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "Ztlumit"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr "Obnovit"
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr "Odložit"
 
@@ -502,8 +614,8 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>Přidat kontakty z adresáře</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Seznam kontaktů</b>"
+msgid "<b>Callee name</b>"
+msgstr "<b>Jméno volaného</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -526,25 +638,26 @@ msgid "All users"
 msgstr "všech uživatelích"
 
 #: ../gtk/main.ui.h:21
-msgid "Audio & video"
-msgstr "Zvuk a obraz"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Pouze zvuk"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Přihlašovat mě automaticky"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Volat komu: %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr "Hodnocení kvality hovoru"
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr "Vyhledat akt_ualizace"
@@ -557,10 +670,6 @@ msgstr "Kontakty"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Odmítnout"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "Výchozí"
@@ -570,13 +679,13 @@ msgid "Duration"
 msgstr "Délka"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Délka:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Zobrazovat sám sebe"
 
+#: ../gtk/main.ui.h:33
+msgid "Enable video"
+msgstr "Zapnout video"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Zadejte uživatelské jméno, telefonní číslo nebo plnou sipovou adresu"
@@ -609,18 +718,22 @@ msgstr "Informace o přihlášení"
 msgid "Lookup:"
 msgstr "Hledat:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Moje současná totožnost:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 msgid "Online users"
 msgstr "připojených uživatelích"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Heslo"
 
+#: ../gtk/main.ui.h:46
+msgid "Recent calls"
+msgstr "Nedávné hovory"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "SIP adresa nebo telefonní číslo:"
@@ -629,18 +742,14 @@ msgstr "SIP adresa nebo telefonní číslo:"
 msgid "Search"
 msgstr "Hledat"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr "Zobrazit ladicí okno"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Uživatelské jméno"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr "_Historie volání"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr "Nápo_věda"
@@ -650,18 +759,15 @@ msgid "_Homepage"
 msgstr "_Domovská stránka"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr "V_olby"
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "ve"
 
-#: ../gtk/main.ui.h:57
+# XXX: Do not translate, this is GTK identifier
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -719,14 +825,6 @@ msgstr "SIP adresa"
 msgid "Show this contact presence status"
 msgstr "U tohoto kontaktu zobrazovat stav přítomnosti"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr ""
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Ladicí okno Linphonu"
@@ -780,8 +878,8 @@ msgid "Publish presence information"
 msgstr "Zveřejnit stav přítomnosti"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Zaregistrovat při spuštění"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -807,10 +905,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Odeslat"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr ""
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 znamená „neomezeno“"
@@ -844,8 +938,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT a firewall</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Porty</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr "<b>Síťové protokoly a porty</b>"
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -864,98 +958,114 @@ msgid "<b>Video</b>"
 msgstr "<b>Obraz</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+"<i>Přizpůsobující se řízení rychlosti je technika dynamického odhadu "
+"dostupného pásma během hovoru.</i>"
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "Zvláštní ALSA zařízení (volitelné):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Přidat"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "Zvukový RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 msgid "Audio codecs"
 msgstr "Kodeky zvuku"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Za NAT/firewallem (adresu brány zadejte níže)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Za NAT/firewallem (adresu určí STUN)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Zařízení pro nahrávání:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Kodeky"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Přímé připojení do Internetu"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Zakázat"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Hotovo"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Omezení příchozí rychlosti (kb/s):"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Upravit"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Povolit"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr "Zapnout přizpůsobující řízení rychlosti"
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Zapnout potlačení ozvěny"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Vymazat všechna hesla"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Nastavení SIP účtů"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr "Druh šifrování médií"
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Nastavení multimédií"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Nastavení sítě"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Zařízení pro přehrávání:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Upřednostňované rozlišení obrazu:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Veřejná IP adresa:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -963,95 +1073,99 @@ msgstr ""
 "Zaregistrovat se do\n"
 "virtuální sítě FONICS!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Odstranit"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Zařízení pro vyzvánění:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Vyzvánění:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
-msgstr "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
+msgstr "SIP (TCP)"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
-msgstr "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
+msgstr "SIP (TLS)"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr "SIP (UDP)"
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
-msgstr "Odesílat tóny DTMF jako SIPINFO zprávy"
+msgstr "Odesílat tóny DTMF jako SIP INFO zprávy"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Nastavit MTU (největší přenositelná zpráva):"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Nastavení"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "Zobrazit podrobnější nastavení"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "STUN server:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr "Tento oddíl určuje vaši SIP adresu, když se nepoužívá žádný účet"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Omezení odchozí rychlosti (kb/s):"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Používat IPv6 místo IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Uživatelské rozhraní"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "Obrazový RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 msgid "Video codecs"
 msgstr "Kodeky obrazu"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Vstupní zařízení obrazu:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Vaše zobrazované jméno (např. Jan Novák):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Vaše výsledná SIP adresa:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Vaše uživatelské jméno:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr "zvuková karta"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "implicitní kamera"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "implicitní zvuková karta"
 
@@ -1075,27 +1189,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Prosím, čekejte"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Máte %i zmeškaný hovor."
-msgstr[1] "Máte %i zmeškané hovory."
-msgstr[2] "Máte %i zmeškaných hovorů."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "přerušen"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "dokončen"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "promeškán"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1110,77 +1216,61 @@ msgstr ""
 "Stav: %s\n"
 "Délka: %i min %i s\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Příchozí hovor"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Odchozí hovor"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Připraven."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Vyhledává se umístění čísla…"
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Toto číslo nelze vyhledat."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
 msgstr ""
 "Špatně zadaná SIP adresa. Adresa má mít tento formát <sip:uživatel@doména>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Kontaktuji"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 msgid "Could not call"
 msgstr "Nelze volat"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr "Je nám líto, ale nejprve musíte hovor odložit nebo ukončit!"
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr "Je nám líto, ale byl dosažen maximální počet současných hovorů."
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr "Upravují se parametry hovoru…"
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Připojeno."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 msgid "Call aborted"
 msgstr "Hovor přerušen"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Hovor ukončen"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr "Hovor nebylo možné odložit"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr "Současný hovor se odkládá…"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr "Již probíhá hovor, nejprve jej odložte nebo ukončete."
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1257,7 +1347,7 @@ msgstr "Čeká"
 msgid "Unknown-bug"
 msgstr "Neznámá chyba"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1265,7 +1355,7 @@ msgstr ""
 "Adresa SIP proxy, kterou jste zadali, není platná. Musí začínat na „sip:“ a "
 "pak musí následovat jméno stroje."
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1273,134 +1363,189 @@ msgstr ""
 "SIP identita, kterou jste zadali, není platná.\n"
 "Měla by mít tvar sip:uživatel@proxydoména, například sip:alice@example.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Nelze se přihlásit jako %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "vás volá"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr " a požaduje automatickou zvednutí."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr "."
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "Vyzvání na druhé straně."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 msgid "Remote ringing..."
 msgstr "Vyzvání na druhé straně…"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Časná média."
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr "Hovor s %s je odložen."
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr "Hovor přijat kým: %s – odložen."
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 msgid "Call resumed."
 msgstr "Hovor obnoven."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr "Hovor přijat kým: %s."
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr "Jsme odkládáni…"
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr "Byli jsme obnoveni…"
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr "Hovor byl aktualizován protistranou…"
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Hovor ukončen."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Uživatel je zaneprázdněn."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Uživatel je dočasně nedostupný."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Uživatel si nepřeje být rušen."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Volání odmítnuto."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "Žádná odpověď."
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "Chyba protokolu."
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "Přesměrováno"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "Nenalezeno"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "Žádný společný formát"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "Volání se nezdařilo."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registrace na %s byla úspěšná."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Odregistrování z %s hotovo."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "odpověď nedorazila včas"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registrace na %s selhala: %s"
 
-#: ../coreapi/callbacks.c:619
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
+msgid "Authentication failure"
+msgstr "Selhání ověření totožnosti"
+
+#: ../coreapi/linphonecall.c:128
 #, c-format
-msgid "We are transferred to %s"
-msgstr "Byly jsme přepojeni na %s"
+msgid "Authentication token is %s"
+msgstr "Klíč k ověření totožnosti je %s"
 
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
-msgid "Authentication failure"
-msgstr "Selhání ověření"
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Máte %i zmeškaný hovor."
+msgstr[1] "Máte %i zmeškané hovory."
+msgstr[2] "Máte %i zmeškaných hovorů."
+
+#~ msgid "Register at startup"
+#~ msgstr "Zaregistrovat při spuštění"
+
+#~ msgid "Windows"
+#~ msgstr "Okna"
+
+#~ msgid ""
+#~ "Pause all calls\n"
+#~ "and answer"
+#~ msgstr ""
+#~ "Odložit všechny hovory\n"
+#~ "a odpovědět"
+
+#~ msgid "Unmute"
+#~ msgstr "Nahlas"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Seznam kontaktů</b>"
+
+#~ msgid "Audio & video"
+#~ msgstr "Zvuk a obraz"
+
+#~ msgid "Audio only"
+#~ msgstr "Pouze zvuk"
+
+#~ msgid "Duration:"
+#~ msgstr "Délka:"
+
+#~ msgid "_Call history"
+#~ msgstr "_Historie volání"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Porty</b>"
+
+#~ msgid "Sorry, you have to pause or stop the current call first !"
+#~ msgstr "Je nám líto, ale nejprve musíte hovor odložit nebo ukončit!"
+
+#~ msgid "There is already a call in process, pause or stop it first."
+#~ msgstr "Již probíhá hovor, nejprve jej odložte nebo ukončete."
 
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "Kodér a-law ITU-G.711"
@@ -1781,18 +1926,12 @@ msgstr "Selhání ověření"
 #~ msgid "Go"
 #~ msgstr "Soubor"
 
-#~ msgid "Address book"
-#~ msgstr "Adresář"
-
 #~ msgid "Shows calls"
 #~ msgstr "Zobrazit volání"
 
 #~ msgid "Exit"
 #~ msgstr "Ukončit"
 
-#~ msgid "Shows the address book"
-#~ msgstr "Zobrazit adresář"
-
 #~ msgid "..."
 #~ msgstr "…"
 
@@ -2123,9 +2262,6 @@ msgstr "Selhání ověření"
 #~ msgid "Authentication required for realm %s"
 #~ msgstr "Pro doménu %s je vyžadováno ověření"
 
-#~ msgid "None"
-#~ msgstr "Žádná"
-
 #~ msgid "Wait"
 #~ msgstr "Zdržet"
 
index d826a1ff9c4ee74c9eeedb442c03acd4b7084a07..e6f37d706878a4bc65172cdef198ac28a4a4deb8 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
-"PO-Revision-Date: 2011-05-27 23:45+0200\n"
+"POT-Creation-Date: 2011-12-10 01:18+0100\n"
+"PO-Revision-Date: 2011-12-10 01:28+0100\n"
 "Last-Translator: Gerhard Stengel <gstengel@gmx.net>\n"
 "Language-Team: German <kde-i18n-de@kde.org>\n"
 "Language: \n"
@@ -17,6 +17,41 @@ msgstr ""
 "X-Generator: Lokalize 1.2\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] "%i Minute"
+msgstr[1] "%i Minuten"
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] "%i Sekunde"
+msgstr[1] "%i Sekunden"
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Qualität: %s</i></small>\n"
+"%s\t%s %s\t"
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr "nicht verfügbar"
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr "Konferenz"
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr "Eigenes Telefon"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -27,25 +62,29 @@ msgstr "Pixmapdatei %s kann nicht gefunden werden."
 msgid "Chat with %s"
 msgstr "Chat mit %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "Ausgabe von Debug-Informationen auf stdout während der Laufzeit"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr "Pfad zu einer Datei, in die Protokolle geschrieben werden."
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 "Nur im Systemabschnitt der Kontrollleiste starten, aber das Hauptfenster "
 "nicht zeigen."
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "Im Moment anzurufende Adresse"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "Falls aktiviert, werden eingehende Anrufe automatisch beantwortet"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -53,12 +92,12 @@ msgstr ""
 "Geben Sie einen Arbeitsordner an (sollte der Installationsordner sein, z. B. "
 "C:\\Programme\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "Im Gespräch mit %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -71,7 +110,7 @@ msgstr ""
 "Ihrer Kontaktliste hinzufügen?\n"
 "Wenn Sie mit Nein antworten, wird diese Person vorläufig blockiert."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -80,24 +119,54 @@ msgstr ""
 "Geben Sie bitte Ihr Passwort für den Benutzernamen <i>%s</i>\n"
 " auf der Domäne <i>%s</i> ein:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+msgid "Call error"
+msgstr "Anruf fehlgeschlagen"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Anruf beendet"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Eingehender Anruf"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr "Annehmen"
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Abweisen"
+
+#: ../gtk/main.c:1009
+msgid "Call paused"
+msgstr "Anruf wird gehalten"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr "<span size=\"large\">von %s</span>"
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Website-Verknüpfung"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - ein Internet-Video-Telefon"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (Vorgabe)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
-msgstr ""
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
+msgstr "Vermittlung nach %s"
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -105,151 +174,167 @@ msgstr ""
 "Auf diesem Rechner können keine Soundkarten gefunden werden.\n"
 "Sie können keine Audio-Anrufe tätigen oder entgegennehmen."
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Ein freies SIP-Video-Telefon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr "Zum Adressbuch hinzufügen"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Name"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Anwesenheitsstatus"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Im %s-Verzeichnis suchen"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Ungültiger SIP-Kontakt!"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "„%s“ anrufen"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Text zu „%s“ schicken"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Kontakt „%s“ bearbeiten"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Kontakt „%s“ löschen"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Einen neuen Kontakt aus dem %s-Verzeichnis hinzufügen"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Rate (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Status"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
-msgstr "Min Bitrate (kbit/s)"
+msgstr "Min. Bitrate (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parameter"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Freigegeben"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Gesperrt"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Konto"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "Englisch"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Französisch"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "Schwedisch"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "Italienisch"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "Spanisch"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "Brasilianisches Portugiesisch"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "Polnisch"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "Deutsch"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "Russisch"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "Japanisch"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "Niederländisch"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Ungarisch"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "Tschechisch"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "Chinesisch"
 
-#: ../gtk/propertybox.c:664
+#: ../gtk/propertybox.c:707
 msgid "Traditional Chinese"
 msgstr "Traditionelles Chinesisch"
 
-#: ../gtk/propertybox.c:665
+#: ../gtk/propertybox.c:708
 msgid "Norwegian"
 msgstr "Norwegisch"
 
-#: ../gtk/propertybox.c:722
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 "Linphone muss neu gestartet werden, damit die neue Spracheinstellung wirksam "
 "wird."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Keinen"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -371,74 +456,99 @@ msgstr "Erstellen Ihres Kontos"
 msgid "Now ready !"
 msgstr "Fertig!"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, c-format
 msgid "Call #%i"
 msgstr "Anruf #%i"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr "Vermittlung zum Anruf #%i mit %s"
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr "Vermittlung"
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>Verbindungsaufbau...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 msgid "<b>Incoming call</b>"
 msgstr "<b>Eingehender Anruf</b>"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
-msgstr ""
-"Alle Anrufe halten\n"
-"und annehmen"
+#: ../gtk/incall_view.c:322
+msgid "good"
+msgstr "gut"
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
-msgstr "Annehmen"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr "durchschnittlich"
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr "schlecht"
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr "sehr schlecht"
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr "zu schlecht"
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr "nicht verfügbar"
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr "Gesichert durch SRTP"
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr "Gesichert durch ZRTP - [Auth.-Token: %s]"
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr "Auf „Ungeprüft“ setzen"
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr "Auf „Geprüft“ setzen"
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr "In Konferenz"
+
+#: ../gtk/incall_view.c:480
 msgid "<b>In call</b>"
 msgstr "<b>Im Gespräch</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 msgid "<b>Paused call</b>"
 msgstr "<b>Gehaltener Anruf</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Anruf beendet.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "Stumm aus"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "Stumm"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr "Fortsetzen"
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr "Halten"
 
@@ -500,8 +610,8 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>Kontakte aus einem Verzeichnis hinzufügen</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Kontaktliste</b>"
+msgid "<b>Callee name</b>"
+msgstr "<b>Name des Angerufenen</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -524,25 +634,25 @@ msgid "All users"
 msgstr "Alle Teilnehmer"
 
 #: ../gtk/main.ui.h:21
-msgid "Audio & video"
-msgstr "Audio & Video"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Nur Audio"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Automatisch anmelden"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+msgid "Call"
+msgstr "Anrufen"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr "Bewertung der Verbindungsqualität"
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr "Auf _Aktualisierungen überprüfen"
@@ -555,10 +665,6 @@ msgstr "Kontakte"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Abweisen"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "Vorgabe"
@@ -568,13 +674,13 @@ msgid "Duration"
 msgstr "Dauer"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Dauer:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Selbstansicht ein"
 
+#: ../gtk/main.ui.h:33
+msgid "Enable video"
+msgstr "Video ein"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Teilnehmer, Telefonnummer oder vollständige SIP-Adresse eingeben"
@@ -607,18 +713,22 @@ msgstr "Anmeldeinformationen"
 msgid "Lookup:"
 msgstr "Suchen:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Aktuelle Identität:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 msgid "Online users"
 msgstr "Angemeldete Teilnehmer"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Passwort"
 
+#: ../gtk/main.ui.h:46
+msgid "Recent calls"
+msgstr "Letzte Gespräche"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "SIP-Adresse oder Telefonnummer:"
@@ -627,18 +737,14 @@ msgstr "SIP-Adresse oder Telefonnummer:"
 msgid "Search"
 msgstr "Suchen"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr "Debug-Fenster anzeigen"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Benutzername"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr "Anrufchronik"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr "_Hilfe"
@@ -648,18 +754,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr ""
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr "_Optionen"
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "in"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -720,14 +822,6 @@ msgstr "SIP-Adresse"
 msgid "Show this contact presence status"
 msgstr "Anwesenheitsstatus dieses Kontakts zeigen"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr ""
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone Debug-Fenster"
@@ -750,7 +844,7 @@ msgstr "Benutzer-ID"
 
 #: ../gtk/call_logs.ui.h:1
 msgid "Call back"
-msgstr "Zurückrufen"
+msgstr "Anrufen"
 
 #: ../gtk/call_logs.ui.h:2
 msgid "Call history"
@@ -781,8 +875,8 @@ msgid "Publish presence information"
 msgstr "Anwesenheitsstatus veröffentlichen"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Beim Starten registrieren"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -808,10 +902,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Senden"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr ""
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 bedeutet „unbegrenzt“"
@@ -845,8 +935,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT und Firewall</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Ports</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr "<b>Netzwerkprotokoll und Ports</b>"
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -865,98 +955,114 @@ msgid "<b>Video</b>"
 msgstr "<b>Video</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+"<i>Adaptive Ratenregelung ist eine Technik zur dynamischen Abschätzung der "
+"zur Verfügung stehenden Bandbreite während eines Anrufs.</i>"
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "Spezielles ALSA-Gerät (optional):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 msgid "Audio codecs"
 msgstr "Audio-Codecs"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Hinter NAT / Firewall (IP-Gateway unten angeben)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Hinter NAT / Firewall (mit STUN auflösen)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Aufnahmegerät:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Codecs"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Direkte Verbindung ins Internet"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Sperren"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Fertig"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Download-Bandbreite (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Freigeben"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr "Adaptive Ratenregelung ein"
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Echounterdrückung ein"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Alle Passwörter löschen"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "SIP-Konten verwalten"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr "Verschlüsselungstyp der Medien"
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Multimedia-Einstellungen"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Netzwerkeinstellungen"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Wiedergabegerät:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Bevorzugte Video-Auflösung:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Öffentliche IP-Adresse:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -964,97 +1070,101 @@ msgstr ""
 "Am virtuellen FONICS\n"
 "Netzwerk anmelden!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Entfernen"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Gerät für Klingelton:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Klingelton:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "DTMFs als SIP-Info senden"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Maximum Transmission Unit setzen:"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Einstellungen"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "Fortgeschrittene Einstellungen anzeigen"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "STUN-Server:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 "In diesem Bereich legen Sie Ihre SIP-Adresse fest, wenn Sie kein SIP-Konto "
 "verwenden."
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Upload-Bandbreite (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "IPv6 statt IPv4 verwenden"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Benutzeroberfläche"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 msgid "Video codecs"
 msgstr "Video-Codecs"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Video-Aufnahmegerät:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Ihr angezeigter Name (z. B. Heinz Müller):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Sich ergebende SIP-Adresse:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Ihr Benutzername:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr "eine Soundkarte"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "Standard-Kamera"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "Standard-Soundkarte"
 
@@ -1078,26 +1188,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Bitte warten"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Sie haben %i Anruf in Abwesenheit."
-msgstr[1] "Sie haben %i Anrufe in Abwesenheit."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "abgebrochen"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "beendet"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "entgangen"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1112,27 +1215,23 @@ msgstr ""
 "Status: %s\n"
 "Dauer: %i min %i sec\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Eingehender Anruf"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Abgehender Anruf"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Bereit"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Telefonnummernziel wird gesucht..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Diese Nummer kann nicht aufgelöst werden."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1140,51 +1239,38 @@ msgstr ""
 "SIP-Adresse kann nicht eingelesen werden. Eine SIP-Adresse hat folgenden "
 "Aufbau <sip:benutzername@domainname>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Verbindungsaufbau"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 msgid "Could not call"
 msgstr "Anruf kann nicht getätigt werden."
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr "Sie müssen zuerst den aktuellen Anruf halten oder beenden!"
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr "Die maximale Anzahl der gleichzeitigen Anrufe ist erreicht."
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr "Die Anrufparameter werden verändert..."
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Verbunden."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 msgid "Call aborted"
 msgstr "Anruf abgebrochen"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Anruf beendet"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr "Anruf kann nicht gehalten werden"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr "Aktueller Anruf wird gehalten..."
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-"Es wird bereits ein Anruf verarbeitet. Halten oder beenden Sie ihn zuerst."
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1261,7 +1347,7 @@ msgstr "Ausstehend"
 msgid "Unknown-bug"
 msgstr "Unbekannter Fehler"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1269,7 +1355,7 @@ msgstr ""
 "Die von Ihnen eingegebene SIP-Proxy-Adresse ist ungültig, sie muss mit "
 "„sip:“ gefolgt vom Hostnamen beginnen."
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1278,135 +1364,184 @@ msgstr ""
 "Sie sollte wie sip:benutzername@proxydomain aussehen, also z.B. sip:"
 "alice@beispiel.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Anmeldung als %s fehlgeschlagen"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "ruft Sie an"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr " und fragt nach automatischer Antwort."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "Klingeln bei der Gegenseite."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 msgid "Remote ringing..."
 msgstr "Klingeln bei der Gegenseite..."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr "Anruf mit %s wird gehalten."
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr "Der von %s entgegengenommene Anruf wird gehalten."
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 msgid "Call resumed."
 msgstr "Anruf fortgesetzt."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr "Anruf wird von %s entgegengenommen."
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr "Anruf wird gehalten..."
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
-msgstr "Wir werden fortgesetzt..."
+msgstr "Anruf wird fortgesetzt..."
+
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr "Anruf ist von der Gegenseite aktualisiert worden..."
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Anruf beendet."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Teilnehmer ist besetzt."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Teilnehmer zur Zeit nicht verfügbar."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Teilnehmer möchte nicht gestört werden."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Anruf abgewiesen"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "Keine Antwort."
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "Protokollfehler"
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "Umgeleitet"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "Nicht gefunden"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "Keine gemeinsamen Codecs"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "Anruf fehlgeschlagen."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registrierung auf %s erfolgreich."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Abmeldung von %s ist erfolgt."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "Zeitüberschreitung bei der Antwort"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registrierung auf %s fehlgeschlagen: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr "Vermittlung nach %s"
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 msgid "Authentication failure"
 msgstr "Authentifikation fehlgeschlagen"
 
+#: ../coreapi/linphonecall.c:128
+#, c-format
+msgid "Authentication token is %s"
+msgstr "Authentifizierungs-Token ist %s"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Sie haben %i Anruf in Abwesenheit."
+msgstr[1] "Sie haben %i Anrufe in Abwesenheit."
+
+#~ msgid "Register at startup"
+#~ msgstr "Beim Starten registrieren"
+
+#~ msgid ""
+#~ "Pause all calls\n"
+#~ "and answer"
+#~ msgstr ""
+#~ "Alle Anrufe halten\n"
+#~ "und annehmen"
+
+#~ msgid "Unmute"
+#~ msgstr "Stumm aus"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Kontaktliste</b>"
+
+#~ msgid "Audio & video"
+#~ msgstr "Audio & Video"
+
+#~ msgid "Audio only"
+#~ msgstr "Nur Audio"
+
+#~ msgid "Duration:"
+#~ msgstr "Dauer:"
+
+#~ msgid "_Call history"
+#~ msgstr "Anrufchronik"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Ports</b>"
+
+#~ msgid "Sorry, you have to pause or stop the current call first !"
+#~ msgstr "Sie müssen zuerst den aktuellen Anruf halten oder beenden!"
+
+#~ msgid "There is already a call in process, pause or stop it first."
+#~ msgstr ""
+#~ "Es wird bereits ein Anruf verarbeitet. Halten oder beenden Sie ihn zuerst."
+
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "ITU-G.711 alaw Encoder"
 
@@ -2031,9 +2166,6 @@ msgstr "Authentifikation fehlgeschlagen"
 #~ msgid "Authentication required for realm %s"
 #~ msgstr "Authentifikation erforderlich für Bereich %s"
 
-#~ msgid "None"
-#~ msgstr "Keinen"
-
 #~ msgid "Wait"
 #~ msgstr "Warten"
 
@@ -2112,12 +2244,6 @@ msgstr "Authentifikation fehlgeschlagen"
 #~ msgid "Timeout..."
 #~ msgstr "Zeitüberschreitung..."
 
-#, fuzzy
-#~ msgid ""
-#~ "Add address\n"
-#~ "book"
-#~ msgstr "Adressbuch"
-
 #~ msgid "Toggle this if you want to be registered on a remote server."
 #~ msgstr ""
 #~ "Bitte ankreuzen, wenn Sie auf einem Sip-Server registriert werden wollen."
index 60ea5a65f53c1d6b064c4b3d9f0acd8592ebcfb4..f87483dee0a500002ab6569eacee4d97153198e8 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Linphone 0.9.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2002-10-15 HO:MI+ZONE\n"
 "Last-Translator: Nelson Benitez <gnelson@inMail.sk>\n"
 "Language-Team: es <es@li.org>\n"
@@ -16,6 +16,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -26,34 +59,38 @@ msgstr "No se pudo encontrar el archivo pixmap: %s"
 msgid "Chat with %s"
 msgstr ""
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr ""
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -62,172 +99,232 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Llamada cancelada."
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+#, fuzzy
+msgid "Call ended"
+msgstr "Llamada cancelada."
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr ""
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "linea"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "Llamada cancelada."
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr ""
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Agenda"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Nombre"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 #, fuzzy
 msgid "Presence status"
 msgstr "Estado"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "(Ninguna informacion de contacto !)"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr ""
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Estado"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr ""
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametros"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Activado"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Desactivado"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr ""
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr ""
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr ""
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+#, fuzzy
+msgid "None"
+msgstr "Ninguno."
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -345,77 +442,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Llamada cancelada."
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "Contactando "
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Contactando "
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "Contactando "
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "Contactando "
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "Llamada cancelada."
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -479,8 +603,8 @@ msgstr "Informacion de codec"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "Contactando "
+msgid "<b>Callee name</b>"
+msgstr "Llamada cancelada."
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -505,27 +629,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "Propiedades del codec de Audio"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "Propiedades del codec de Audio"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr ""
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Llamada cancelada."
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -539,11 +662,6 @@ msgstr "Contactando "
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "linea"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -556,12 +674,12 @@ msgstr "Informacion"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "Informacion"
+msgid "Enable self-view"
+msgstr "Activado"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
+msgid "Enable video"
 msgstr "Activado"
 
 #: ../gtk/main.ui.h:34
@@ -598,21 +716,26 @@ msgstr "Informacion de codec"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "Identidad"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "linea"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "Tu Contraseña:"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Contactando "
+
 #: ../gtk/main.ui.h:47
 #, fuzzy
 msgid "SIP address or phone number:"
@@ -622,20 +745,16 @@ msgstr "La direccion SIP del servidor de registro."
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 #, fuzzy
 msgid "Show debug window"
 msgstr "Linphone esta terminando..."
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "Manual de Usuario"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr ""
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -645,19 +764,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-#, fuzzy
-msgid "_Linphone"
-msgstr "linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -707,16 +821,6 @@ msgstr "Direccion"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Conectado."
-
-#: ../gtk/contact.ui.h:7
-#, fuzzy
-msgid "gtk-ok"
-msgstr "Borrar"
-
 #: ../gtk/log.ui.h:1
 #, fuzzy
 msgid "Linphone debug window"
@@ -774,7 +878,7 @@ msgid "Publish presence information"
 msgstr "Informacion de codec"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -805,11 +909,6 @@ msgstr "SIP:"
 msgid "Send"
 msgstr "Sonido"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Conectado."
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -849,9 +948,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "Contactando "
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "Contactando "
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -874,207 +972,225 @@ msgid "<b>Video</b>"
 msgstr "Contactando "
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Añadir"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "Propiedades del codec de Audio"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "Usar dispositivo de sonido:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "Codecs"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Desactivado"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "Ninguno."
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Activado"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "Red"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "Usar dispositivo de sonido:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "Direccion SIP"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Borrar"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "Usar dispositivo de sonido:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "Fuente de grabacion:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "Servidor de Redireccionamiento"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "Manual de Usuario"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "Propiedades del codec de Audio"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "Usar dispositivo de sonido:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "Tu direccion SIP:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "Manual de Usuario"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1101,26 +1217,19 @@ msgstr "linphone"
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1130,28 +1239,24 @@ msgid ""
 "Duration: %i mn %i sec\n"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 #, fuzzy
 msgid "Ready"
 msgstr "Preparado."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 #, fuzzy
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
@@ -1159,54 +1264,41 @@ msgid ""
 msgstr ""
 "Direccion SIP mal escrita. Una direccion SIP es <sip:username@domainname>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 #, fuzzy
 msgid "Contacting"
 msgstr "Contactando "
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "No se pudo encontrar el archivo pixmap: %s"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Conectado."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "Llamada cancelada."
 
-#: ../coreapi/linphonecore.c:2374
-#, fuzzy
-msgid "Call ended"
-msgstr "Llamada cancelada."
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1287,156 +1379,203 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "No se pudo encontrar el archivo pixmap: %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "le esta llamando."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Registrando..."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Registrando..."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr ""
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Llamada cancelada."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Llamar o\n"
 "Responder"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 #, fuzzy
 msgid "Call terminated."
 msgstr "Llamada cancelada."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "El usuario esta ocupado."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "El usuario le dice que volvera enseguida."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "El usuario no quiere que lo molesten."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Llamada cancelada."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr ""
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr ""
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Llamada cancelada."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, fuzzy, c-format
 msgid "Registration on %s successful."
 msgstr "Se ha registrado con exito."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "Se ha registrado con exito."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr ""
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, fuzzy, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Se ha registrado con exito."
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Informacion de codec"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Informacion de codec"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "Contactando "
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Propiedades del codec de Audio"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "Propiedades del codec de Audio"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "Informacion"
+
+#, fuzzy
+#~ msgid "_Linphone"
+#~ msgstr "linphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Conectado."
+
+#, fuzzy
+#~ msgid "gtk-ok"
+#~ msgstr "Borrar"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Conectado."
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "Contactando "
+
 #, fuzzy
 #~ msgid "_Modes"
 #~ msgstr "Codecs"
@@ -1649,10 +1788,6 @@ msgstr "Informacion de codec"
 #~ msgid "Name:"
 #~ msgstr "Nombre"
 
-#, fuzzy
-#~ msgid "None"
-#~ msgstr "Ninguno."
-
 #, fuzzy
 #~ msgid "Bad sip address: a sip address looks like sip:user@domain"
 #~ msgstr ""
@@ -1715,12 +1850,6 @@ msgstr "Informacion de codec"
 #~ msgid "Timeout..."
 #~ msgstr "Tiempo agotado."
 
-#, fuzzy
-#~ msgid ""
-#~ "Add address\n"
-#~ "book"
-#~ msgstr "Agenda"
-
 #~ msgid "Toggle this if you want to be registered on a remote server."
 #~ msgstr "Marcar opcion si desea registrarse en un servidor remoto."
 
index b1cf01dcb537ca5b38c9b0e6a888ad0c86e19328..44a3b46e9e4d27d10ebaf67e5d497dd952a23ae0 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Linphone 0.9.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2002-12-06 17:33+0100\n"
 "Last-Translator: Simon Morlat <simon.morlat@linphone.org>\n"
 "Language-Team: french <fr@li.org>\n"
@@ -15,6 +15,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr "inconnu"
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr "Conférence"
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr "Moi"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -25,23 +58,27 @@ msgstr "Icone non trouvée: %s"
 msgid "Chat with %s"
 msgstr "Chat avec %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "affiche des informations de debogage"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "Démarre iconifié, sans interface principale."
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "addresse à appeler maintenant"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "si positionné, répond automatiquement aux appels entrants"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -49,12 +86,12 @@ msgstr ""
 "Spécifie un répertoire de travail (qui devrait être le répertoire "
 "d'installation, par exemple c:\\Program Files\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "Appel avec %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -68,7 +105,7 @@ msgstr ""
 "Si vous répondez non, cette personne sera mise temporairement sur liste "
 "noire."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -77,24 +114,54 @@ msgstr ""
 "Entrez le mot de passe pour <i>%s</i>\n"
 " sur le domaine <i>%s</i>:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+msgid "Call error"
+msgstr "Erreur lors de l'appel"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Appel terminé."
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Appel entrant"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr "Répondre"
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Refuser"
+
+#: ../gtk/main.c:1009
+msgid "Call paused"
+msgstr "Appel en pause"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Lien site web"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - un téléphone video pour l'internet"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (par défaut)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
-msgstr ""
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
+msgstr "Transfert vers %s"
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -102,143 +169,167 @@ msgstr ""
 "Aucune carte son n'a été détectée sur cet ordinateur.\n"
 "Vous ne pourrez pas effectuer d'appels audio."
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Un visiophone libre"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Nom"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Info de présence"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Rechercher dans l'annuaire de %s"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Contact sip invalide !"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Appeler %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Chatter avec %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Editer le contact '%s'"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Supprimer le contact '%s'"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Ajouter un contact depuis l'annuaire %s"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Fréquence (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Etat"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Débit min. (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Paramètres"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Activé"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Désactivé"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Compte"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Français"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "日本語"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "简体中文"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 "La nouvelle selection de langue prendra effet au prochain démarrage de "
 "linphone."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -333,9 +424,8 @@ msgid "Account setup assistant"
 msgstr ""
 
 #: ../gtk/setupwizard.c:236
-#, fuzzy
 msgid "Choosing a username"
-msgstr "Votre nom d'utilisateur"
+msgstr "Choix du nom d'utilisateur"
 
 #: ../gtk/setupwizard.c:240
 msgid "Verifying"
@@ -354,74 +444,99 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
-#, fuzzy, c-format
+#: ../gtk/incall_view.c:69
+#, c-format
 msgid "Call #%i"
-msgstr "Appeler %s"
+msgstr "Appel #%i"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
-msgstr ""
+msgstr "Transférer vers l'appel #%i avec %s"
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr "Transfert"
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
-msgstr "<b>Appel en cours</b>"
+msgstr "<b>Tentative d'appel...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 msgid "<b>Incoming call</b>"
 msgstr "<b>Appel entrant</b>"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
-msgstr ""
-"Pauser les appels en cours\n"
-"et répondre"
+#: ../gtk/incall_view.c:322
+msgid "good"
+msgstr "bon"
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
-msgstr "Répondre"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr "moyen"
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr "faible"
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr "très faible"
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr "nulle"
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr "indisponible"
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr "Sécurisé par SRTP"
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr "Sécurisé par ZRTP- [jeton: %s]"
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr "Marquer comme non vérifié"
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr "Marquer comme vérifié"
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr "En conférence"
+
+#: ../gtk/incall_view.c:480
 msgid "<b>In call</b>"
 msgstr "<b>Appel en cours</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 msgid "<b>Paused call</b>"
 msgstr "<b>Appel en attente</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Appel terminé.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr "Reprendre"
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr "Pause"
 
@@ -483,8 +598,8 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>Ajouter un contact depuis l'annuaire</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Liste de contacts</b>"
+msgid "<b>Callee name</b>"
+msgstr "<b>Nom du correspondant</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -507,25 +622,25 @@ msgid "All users"
 msgstr "Tous"
 
 #: ../gtk/main.ui.h:21
-msgid "Audio & video"
-msgstr "Audio et video"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Audio seul"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Me connecter automatiquement"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+msgid "Call"
+msgstr "Appeler"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr "Qualité de l'appel"
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -538,10 +653,6 @@ msgstr "Contacts"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Refuser"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "Par défaut"
@@ -551,13 +662,13 @@ msgid "Duration"
 msgstr "Durée"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Durée:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Se voir"
 
+#: ../gtk/main.ui.h:33
+msgid "Enable video"
+msgstr "Activer la video"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr ""
@@ -591,18 +702,22 @@ msgstr "Information de login"
 msgid "Lookup:"
 msgstr "Rechercher:"
 
-#: ../gtk/main.ui.h:43
-msgid "My current default identity:"
-msgstr "Mon identité sip par défaut :"
+#: ../gtk/main.ui.h:42
+msgid "My current identity:"
+msgstr "Mon identité sip:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 msgid "Online users"
 msgstr "En ligne"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Mot de passe"
 
+#: ../gtk/main.ui.h:46
+msgid "Recent calls"
+msgstr "Appels récents"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "Addresse SIP ou numéro"
@@ -611,19 +726,14 @@ msgstr "Addresse SIP ou numéro"
 msgid "Search"
 msgstr "Rechercher"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr "Fenêtre de débogage"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Nom d'utilisateur"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Historique des appels"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr "_Aide"
@@ -633,18 +743,14 @@ msgid "_Homepage"
 msgstr "_Site web"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "dans"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -691,14 +797,6 @@ msgstr "Adresse SIP"
 msgid "Show this contact presence status"
 msgstr "Voir l'état de présence de ce contact"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr ""
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Fenêtre de débogage de linphone"
@@ -752,8 +850,8 @@ msgid "Publish presence information"
 msgstr "Publier la présence"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "S'enregistrer au démarrage"
+msgid "Register"
+msgstr "S'enregistrer"
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -779,10 +877,6 @@ msgstr ""
 msgid "Send"
 msgstr "Envoyer"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr ""
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "Indiquez 0 pour ne pas mettre de limite"
@@ -816,8 +910,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>Paramètres liés au pare-feu</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Ports utilisés</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr "<b>Protocoles réseaux et ports</b>"
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -836,194 +930,215 @@ msgid "<b>Video</b>"
 msgstr "<b>Video</b>"
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
+"<i>Le control de débit adaptatif est une technique pour adapter la qualité "
+"de l'audio et de la video en fonction de la bande passante disponible, "
+"durant l'appel.</i>"
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Ajouter"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 msgid "Audio codecs"
 msgstr "Codecs audio"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Derrière un pare-feu (spécifier la passerelle ci dessous)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Derrière un pare-feu (utiliser STUN)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Périphérique de capture:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Connection directe à l'Internet"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Désactiver"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Fermer"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Limite de débit descendant en kbits/sec:"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Editer"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Activer"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr "Activer le control de débit adaptatif."
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Activer l'annulation d'écho"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Effacer tous les mots de passe"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Gérer mes comptes SIP"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr "Type d'encryption media"
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Paramètres multimedia"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Paramètres réseau"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Périphérique d'écoute:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Résolution video préférée:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Addresse IP publique:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Enlever"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Périphérique de sonnerie:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Sonnerie:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "Envoyer les digits en tant que SIP INFO"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Spécifier la Maximum Transmission Unit"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Réglages"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "Montrer les réglages avancés"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "Serveur STUN:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 "Cette rubrique permet de définir son addresse SIP lorsqu'on ne possède pas "
 "de compte SIP"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Limite de débit montant en kbits/sec:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Utiliser l'IPv6 au lieu d'IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Interface utilisateur"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 msgid "Video codecs"
 msgstr "Codecs video"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Périphérique d'entrée video"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Votre nom d'affichage (ex: John Doe)"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Votre addresse SIP:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Votre nom d'utilisateur:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr "une carte son"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "camera par défaut"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "Carte son par défaut"
 
@@ -1047,26 +1162,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "En attente"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Vous avez manqué %i appel"
-msgstr[1] "Vous avez manqué %i appels"
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "abandonné"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "terminé"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "manqué"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1081,79 +1189,61 @@ msgstr ""
 "Etat: %s\n"
 "Durée: %i mn %i sec\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Appel entrant"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Appel sortant"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Prêt."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Recherche de la destination du numéro de téléphone..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "La destination n'a pu être trouvée."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
 msgstr ""
 "Adresse SIP mal formulée. Une address sip ressemble à <sip:nom@domaine>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Appel de"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 msgid "Could not call"
 msgstr "Echec de l'appel"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr "Désolé, vous devez d'abord mettre en attente l'appel en cours."
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
-msgstr ""
+msgstr "Désolé, le nombre maximum d'appels simultanés est atteint."
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr "Modifications des paramètres d'appels..."
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "En ligne."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 msgid "Call aborted"
 msgstr "Appel abandonné"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Appel terminé."
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr "La mise en attente a échoué"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr "Mise en attente de l'appel..."
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-"Il y a déjà un appel en cours, veuillez d'abord le mettre en attente ou le "
-"raccrocher."
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1231,7 +1321,7 @@ msgstr "En attente"
 msgid "Unknown-bug"
 msgstr "Bug inconnu"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1239,7 +1329,7 @@ msgstr ""
 "L'addresse SIP du proxy est invalide. Elle doit commencer par \"sip:\" "
 "suivie par un nom de domaine."
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1248,131 +1338,182 @@ msgstr ""
 "Elle doit être de la forme sip:username@domain, comme par example sip:"
 "alice@example.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Echec de la connexion en tant que %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "vous appelle"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr "et sollicite un décrochage automatique."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "Sonnerie distante."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 msgid "Remote ringing..."
 msgstr "Sonnerie distante..."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Prise d'appel anticipée"
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr "%s est maintenant en attente."
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr "Appel répondu par %s - en attente"
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 msgid "Call resumed."
 msgstr "Appel repris."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr "Appel répondu par %s."
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr "Mise en attente..."
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr "Reprise..."
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr "L'appel a été repris par le correspondant."
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Appel terminé."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Occupé..."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "L'usager est temporairement indisponible."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "L'usager ne souhaite pas être dérangé"
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Appel décliné."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "Pas de réponse."
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "Erreur de protocole"
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "Redirection"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "Non trouvé"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "Pas de codecs commun"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "L'appel a échoué."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Enregistrement sur %s effectué."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Désenregistrement sur %s effectué."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "Pas de réponse"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Echec de l'enregistrement sur %s: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr "Transfert vers %s"
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 msgid "Authentication failure"
 msgstr "Echec d'authentification"
+
+#: ../coreapi/linphonecall.c:128
+#, c-format
+msgid "Authentication token is %s"
+msgstr "Le jeton d'authentification est %s"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Vous avez manqué %i appel"
+msgstr[1] "Vous avez manqué %i appels"
+
+#~ msgid ""
+#~ "Pause all calls\n"
+#~ "and answer"
+#~ msgstr ""
+#~ "Pauser les appels en cours\n"
+#~ "et répondre"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Liste de contacts</b>"
+
+#~ msgid "Audio & video"
+#~ msgstr "Audio et video"
+
+#~ msgid "Audio only"
+#~ msgstr "Audio seul"
+
+#~ msgid "Duration:"
+#~ msgstr "Durée:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Historique des appels"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "Register at startup"
+#~ msgstr "S'enregistrer au démarrage"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Ports utilisés</b>"
+
+#~ msgid "Sorry, you have to pause or stop the current call first !"
+#~ msgstr "Désolé, vous devez d'abord mettre en attente l'appel en cours."
+
+#~ msgid "There is already a call in process, pause or stop it first."
+#~ msgstr ""
+#~ "Il y a déjà un appel en cours, veuillez d'abord le mettre en attente ou "
+#~ "le raccrocher."
index 184a34e84db69bd17301259d6252dcdb946c73d8..c654c370d834291a7875667b5166088ac0c01ea6 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2007-12-14 11:12+0100\n"
 "Last-Translator: \n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,6 +16,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -26,34 +59,38 @@ msgstr "Nemtalálható a pixmap fájl: %s"
 msgid "Chat with %s"
 msgstr "Chat-elés %s -el"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, fuzzy, c-format
 msgid "Call with %s"
 msgstr "Chat-elés %s -el"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -62,171 +99,229 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Linphone - Híváselőzmények"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Hívás vége"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Beérkező hívás"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "line"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "megszakítva"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Egy ingyenes SIP video-telefon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Címjegyzék"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Név"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Jelenlét státusz"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, fuzzy, c-format
 msgid "Call %s"
 msgstr "Hivás előzmények"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "Kapcsolatinformációk szerkesztése"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Érték (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Állapot"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Min bitrate (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Paraméterek"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Engedélyezve"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Tiltva"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Hozzáférés"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr ""
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr ""
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Nincs"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -345,78 +440,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Hivás előzmények"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "Kapcsolatilista"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Beérkező hívás"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "Kapcsolatilista"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "Kapcsolatilista"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "Hívás vége"
 
-#: ../gtk/incall_view.c:309
-#, fuzzy
-msgid "Unmute"
-msgstr "Korlátlan"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -480,8 +601,8 @@ msgstr "Kapcsolatiinformáció"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "Kapcsolatilista"
+msgid "<b>Callee name</b>"
+msgstr "Hívás vége"
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -507,27 +628,26 @@ msgstr ""
 
 #: ../gtk/main.ui.h:21
 #, fuzzy
-msgid "Audio & video"
-msgstr "Audio kodekek"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "Audio kodekek"
-
-#: ../gtk/main.ui.h:23
-#, fuzzy
 msgid "Automatically log me in"
 msgstr "Automatikus valós hostnév megállapítása"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Hivás előzmények"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -541,11 +661,6 @@ msgstr "Kapcsolódás"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "line"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -558,13 +673,13 @@ msgstr "Információk"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "Információk"
+msgid "Enable self-view"
+msgstr "Video engedélyezés"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
-msgstr "Video engedélyezés"
+msgid "Enable video"
+msgstr "Engedélyezve"
 
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
@@ -600,21 +715,26 @@ msgstr "Kapcsolatiinformáció"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "SIP azonosító:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "Elérhető"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "jelszó:"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Beérkező hívás"
+
 #: ../gtk/main.ui.h:47
 #, fuzzy
 msgid "SIP address or phone number:"
@@ -624,20 +744,15 @@ msgstr "Gépeld ide a sip címet vagy a telefonszámot"
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr ""
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "felhasználónév:"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Linphone - Híváselőzmények"
-
 #: ../gtk/main.ui.h:52
 #, fuzzy
 msgid "_Help"
@@ -648,19 +763,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-#, fuzzy
-msgid "_Linphone"
-msgstr "Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -710,16 +820,6 @@ msgstr "Sip cím:"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Kapcsolódva."
-
-#: ../gtk/contact.ui.h:7
-#, fuzzy
-msgid "gtk-ok"
-msgstr "Eltávolítás"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr ""
@@ -778,7 +878,7 @@ msgid "Publish presence information"
 msgstr "Jelenléti információ közlése:"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -809,11 +909,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Hang"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Kapcsolódva."
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -853,9 +948,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "Kapcsolatilista"
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "Kapcsolatilista"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -878,209 +972,227 @@ msgid "<b>Video</b>"
 msgstr "Kapcsolatilista"
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
-msgid "Add"
+msgid "ALSA special device (optional):"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:16
-msgid "Audio RTP/UDP:"
+msgid "Add"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:17
+msgid "Audio RTP/UDP:"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "Audio kodekek"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "Felvevő hang eszköz:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "Kodekek"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Tiltás"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "Elveszítve"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 #, fuzzy
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Letöltési sávszélesség (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Szerkesztés"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Engedélyezés"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "Hálózat"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "Lejátszó hang eszköz:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "Sip cím:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Eltávolítás"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "Csengőhang forrás:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "Csengőhang:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "Hang eszköz"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 #, fuzzy
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Feltöltési sávszélesség (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "felhasználónév:"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "Audio kodekek"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "Hang eszköz"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "Saját sip cím:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "felhasználónév:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1106,26 +1218,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, fuzzy, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Van %i elhibázott hivás."
-msgstr[1] "Van %i elhibázott hivás."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "megszakítva"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "befejezve"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "elhibázva"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1140,81 +1245,65 @@ msgstr ""
 "Állapot: %s\n"
 "Időtartam: %i perc %i másodperc\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Beérkező hívás"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Kimenő hívás"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Kész"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Telefonszám-cél keresése..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Nem sikkerült értelmezni a számot."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
 msgstr ""
 "Az adott szám nem értelmezhető. Egy sip cím általában így néz ki: user@domain"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Kapcsolódás"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "nem sikerült hívni"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Kapcsolódva."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "megszakítva"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Hívás vége"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "nem sikerült hívni"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 #, fuzzy
 msgid "Pausing the current call..."
 msgstr "nem sikerült hívni"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1296,157 +1385,212 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "Nemtalálható a pixmap fájl: %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "kapcsolatba lép veled."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Távoli szolgáltatások"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Távoli szolgáltatások"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Korai médiák."
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Chat-elés %s -el"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Hívás vége"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Hívás vagy\n"
 "Válasz"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "A hívás befejezve."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "A felhasználó foglalt."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "A felhasználó ideiglenesen nem elérhető"
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "A felhasználó nem akarja, hogy zavarják."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Hívás elutasítva"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 #, fuzzy
 msgid "No response."
 msgstr "időtúllépés után nincs válasz"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Átirányítva idw %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Hívás elutasítva"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "A regisztáció a %s -n sikerült."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "A regisztáció a %s -n sikerült."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "időtúllépés után nincs válasz"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "A regisztáció a %s -n nem sikerült: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Hitelesítési információ"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Hitelesítési információ"
+
+#: ../coreapi/linphonecall.c:1560
+#, fuzzy, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Van %i elhibázott hivás."
+msgstr[1] "Van %i elhibázott hivás."
+
+#, fuzzy
+#~ msgid "Unmute"
+#~ msgstr "Korlátlan"
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "Kapcsolatilista"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Audio kodekek"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "Audio kodekek"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "Információk"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Linphone - Híváselőzmények"
+
+#, fuzzy
+#~ msgid "_Linphone"
+#~ msgstr "Linphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Kapcsolódva."
+
+#, fuzzy
+#~ msgid "gtk-ok"
+#~ msgstr "Eltávolítás"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Kapcsolódva."
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "Kapcsolatilista"
+
 #~ msgid ""
 #~ "Your machine appears to be connected to an IPv6 network. By default "
 #~ "linphone always uses IPv4. Please update your configuration if you want "
@@ -1577,9 +1721,6 @@ msgstr "Hitelesítési információ"
 #~ msgid "Go"
 #~ msgstr "Ugrás"
 
-#~ msgid "Address book"
-#~ msgstr "Címjegyzék"
-
 #~ msgid "Exit"
 #~ msgstr "Kilépés"
 
@@ -1907,9 +2048,6 @@ msgstr "Hitelesítési információ"
 #~ msgid "Authentication required for realm %s"
 #~ msgstr "Hitelesítési kérelem ebből a tartományból %s"
 
-#~ msgid "None"
-#~ msgstr "Nincs"
-
 #~ msgid "Wait"
 #~ msgstr "Várakozás"
 
index cd3e0e5f2557709eca2bf462f43667b1152af78b..e1c1b3e310114abc5446cd4292180ea920c6f93a 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Linphone 3.2.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2002-10-15 HO:MI+ZONE\n"
 "Last-Translator: Matteo Piazza <matteo.piazza@trentinonetwork.it>\n"
 "Language-Team: it <it@li.org>\n"
@@ -15,6 +15,42 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr ""
+"Chiudi\n"
+"microfono"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -25,34 +61,38 @@ msgstr ""
 msgid "Chat with %s"
 msgstr "Chat con %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, fuzzy, c-format
 msgid "Call with %s"
 msgstr "Chat con %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -64,171 +104,227 @@ msgstr ""
 "veda il tuo stato o aggiungerlo alla tua lista dei contatti Se rispondi no "
 "questo utente sarà momentaneamente bloccato."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr "Prego inserire la password per username <i>%s</i> e dominio <i>%s<i>"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Cronologia"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Chiamata terminata"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Chimata in entrata"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Rifiuta"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "annullato"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (Default)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr ""
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Nome"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Presenza"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Cerca contatti nella directory %s"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Contatto SIP non valido"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Chiamata %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Invia testo a %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Modifica contatto %s"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Elimina contatto %s"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Aggiungi nuovo contatto dalla directory %s"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr ""
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Stato"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Bitrate Min (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametri"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Attivato"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Disattivato"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Account"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "Inglese"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Francese"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "Svedese"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "Italiano"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "Spagnolo"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "Polacco"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "Tedesco"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "Russo"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "Giapponese"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "Olandese"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Ungherese"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "Ceco"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr "Riavviare il software per utilizzare la nuova lingua selezionata"
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -346,80 +442,103 @@ msgstr "Creazione account"
 msgid "Now ready !"
 msgstr "Pronto !"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Chiamata %s"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "<b>Linguaggio</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Chimata in entrata"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "<b>In chiamata con</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "<b>Termina chiamata</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Chiamata terminata.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-"Attiva\n"
-"microfono"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-"Chiudi\n"
-"microfono"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -482,8 +601,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "Aggiungi nuovo contatto dalla directory %s"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Lista contatti</b>"
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>Chiamata terminata.</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -507,26 +627,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "Audio & Video"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Solo Audio"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Login Automatico"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Chiamata %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -540,10 +660,6 @@ msgstr "In connessione"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Rifiuta"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "Default"
@@ -553,13 +669,14 @@ msgid "Duration"
 msgstr "Durata"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Durata:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Self-view abilitato"
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "Attivato"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Inserisci username, numero o indirizzo sip"
@@ -595,21 +712,26 @@ msgstr "Credenziali di accesso"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Identità corrente"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr ""
 "Tutti gli utenti\n"
 "Utenti Online"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Password"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "In chiamata"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "Indirizzo sip o numero."
@@ -618,20 +740,15 @@ msgstr "Indirizzo sip o numero."
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 #, fuzzy
 msgid "Show debug window"
 msgstr "Linphone debug window"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Username"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Cronologia"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -641,18 +758,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "in"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "etichetta"
 
@@ -700,14 +813,6 @@ msgstr "Rubrica"
 msgid "Show this contact presence status"
 msgstr "Mostra lo stato di presenza del contatto"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr ""
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone debug window"
@@ -763,8 +868,8 @@ msgid "Publish presence information"
 msgstr "Pubblica stato della presenza"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Registra all'avvio"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -790,10 +895,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Invia"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr ""
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 sta per illimitato"
@@ -828,8 +929,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT and Firewall</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Porte</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -848,101 +949,115 @@ msgid "<b>Video</b>"
 msgstr "<b>Video</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "Dispositivo ALSA (optional):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Aggiungi"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "Audio RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr ""
 "Audio codecs\n"
 "Video codecs"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Dietro NAT / Firewall (IP del gateway)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Dietro NAT / Firewall (utilizza STUN)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Dispositivo microfono:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Codec"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Connessione diretta a internet"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Disattivato"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Fatto"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Velocita massima in Dowload Kbit/sec"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Edita"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Attivato"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Attiva cancellazione eco"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Cancella tutte le password"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Gestici SIP Account"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Impostazioni multimediali"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Impostazioni di rete"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Dispositivo uscita audio:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Risoluzione video preferita"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Indirizzo ip pubblico:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -950,101 +1065,107 @@ msgstr ""
 "Registrati a  FONICS\n"
 "virtual network !"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Rimuovi"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Dispositivo squillo:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Suoneria:"
 
-#: ../gtk/parameters.ui.h:43
+#: ../gtk/parameters.ui.h:46
 #, fuzzy
-msgid "SIP (TCP):"
+msgid "SIP (TCP)"
 msgstr "SIP (UDP)"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+#, fuzzy
+msgid "SIP (TLS)"
 msgstr "SIP (UDP)"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+#, fuzzy
+msgid "SIP (UDP)"
+msgstr "SIP (UDP)"
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "Invia DTMF come SIP info"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Imposta Maximum Transmission Unit:"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Preferenze"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "Stun server:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 "questa sezione definisce il tuo indirizzo SIP se non hai account attivi"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Velocità massima in upload Kbit/sec:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Usa IPv6 invece che IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Interfaccia utente"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "Video RTP/UDP"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr ""
 "Audio codecs\n"
 "Video codecs"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Dispositivo Video:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Nome visualizzato (es: Mario Rossi):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Il tuo indirizzo sip:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Username"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 #, fuzzy
 msgid "a sound card"
 msgstr "una scheda audio\n"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "default videocamera"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "default scheda audio"
 
@@ -1068,26 +1189,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Prego attendere"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "annullato"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "comletato"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "mancante"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1102,27 +1216,23 @@ msgstr ""
 "Stato: %s\n"
 "Durata: %i mn %i sec\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Chimata in entrata"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Chiamata in uscita"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Pronto"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Ricerca numero destinazione..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Impossibile risolvere il numero."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1130,54 +1240,42 @@ msgstr ""
 "Errore nel formato del contatto sip. Usualmente un indirizzo appare sip:"
 "user@domain"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "In connessione"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "chiamata fallita"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Connessione"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "annullato"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Chiamata terminata"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "chiamata fallita"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 #, fuzzy
 msgid "Pausing the current call..."
 msgstr "Mostra chiamata corrente"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1254,7 +1352,7 @@ msgstr "Pendente"
 msgid "Unknown-bug"
 msgstr "Bug-sconosciuto"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1262,7 +1360,7 @@ msgstr ""
 "L'indirizzo sip proxy utilizzato è invalido, deve iniziare con  \"sip:\" "
 "seguito dall' hostaname."
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1270,141 +1368,183 @@ msgstr ""
 "L'identità sip utilizza è invalida.\n"
 "Dovrebbre essere sip:username@proxydomain, esempio: sip:alice@example.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "impossibile login come %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "ti sta conttatando."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr ""
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 msgid "Remote ringing..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Chat con %s"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Chiamata terminata"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr ""
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Chiamata terminata."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Utente occupato"
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Utente non disponibile"
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "L'utente non vuole essere disturbato"
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Chiamata rifiutata"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 #, fuzzy
 msgid "No response."
 msgstr "timeout no risposta"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Rediretto verso %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Chiamata rifiutata"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registrazione su %s attiva"
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Unregistrazione su %s"
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "timeout no risposta"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registrazione su %s fallita: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Linphone - Autenticazione richiesta"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Linphone - Autenticazione richiesta"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] ""
+msgstr[1] ""
+
+#~ msgid "Unmute"
+#~ msgstr ""
+#~ "Attiva\n"
+#~ "microfono"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Lista contatti</b>"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Audio & Video"
+
+#~ msgid "Audio only"
+#~ msgstr "Solo Audio"
+
+#~ msgid "Duration:"
+#~ msgstr "Durata:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Cronologia"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "Register at startup"
+#~ msgstr "Registra all'avvio"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Porte</b>"
+
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "ITU-G.711 alaw encoder"
 
index 1ba1a1d848d2eb98363441a8b371982fe17dac3f..7d95f60870dad7051c84ab9efc636ff4a53e03fb 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 0.10\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2003-01-21 00:05+9000\n"
 "Last-Translator: YAMAGUCHI YOSHIYA <yushiya@anet.ne.jp>\n"
 "Language-Team: <ja@li.org>\n"
@@ -17,6 +17,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -27,34 +60,38 @@ msgstr "pixmapファイルが見つかりません %s"
 msgid "Chat with %s"
 msgstr ""
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr ""
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -63,172 +100,232 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "通話はキャンセルされました。"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+#, fuzzy
+msgid "Call ended"
+msgstr "通話は拒否されました。"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr ""
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "ライン入力"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "通話はキャンセルされました。"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr ""
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "電話帳"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "名前"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 #, fuzzy
 msgid "Presence status"
 msgstr "状態"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "(接続するための情報がありません!)"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr ""
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "状態"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "最低限のビットレート (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "パラメーター"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "使用する"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "使用しない"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr ""
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Français"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "日本語"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Magyar"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "čeština"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "简体中文"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+#, fuzzy
+msgid "None"
+msgstr "ありません。"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -346,77 +443,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "通話はキャンセルされました。"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "接続中"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "接続中"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "接続中"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "接続中"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "通話は拒否されました。"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -480,8 +604,8 @@ msgstr "コーデックの情報"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "接続中"
+msgid "<b>Callee name</b>"
+msgstr "通話は拒否されました。"
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -506,27 +630,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "オーディオコーデックのプロパティー"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "オーディオ"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr ""
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "通話はキャンセルされました。"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -540,11 +663,6 @@ msgstr "接続中"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "ライン入力"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -557,12 +675,12 @@ msgstr "情報"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "情報"
+msgid "Enable self-view"
+msgstr "使用する"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
+msgid "Enable video"
 msgstr "使用する"
 
 #: ../gtk/main.ui.h:34
@@ -599,21 +717,26 @@ msgstr "コーデックの情報"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "個人情報"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "ライン入力"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "パスワード"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "接続中"
+
 #: ../gtk/main.ui.h:47
 #, fuzzy
 msgid "SIP address or phone number:"
@@ -623,19 +746,15 @@ msgstr "レジストラサーバーのSIPアドレス"
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr ""
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "ユーザーマニュアル"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr ""
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -645,19 +764,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-#, fuzzy
-msgid "_Linphone"
-msgstr "Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -707,16 +821,6 @@ msgstr "アドレス"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "接続しました。"
-
-#: ../gtk/contact.ui.h:7
-#, fuzzy
-msgid "gtk-ok"
-msgstr "削除する"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr ""
@@ -773,7 +877,7 @@ msgid "Publish presence information"
 msgstr "コーデックの情報"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -804,11 +908,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "サウンド"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "接続しました。"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -848,9 +947,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "接続中"
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "接続中"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -873,207 +971,225 @@ msgid "<b>Video</b>"
 msgstr "接続中"
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "追加する"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "オーディオコーデックのプロパティー"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "使用するサウンドデバイス"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "コーデック"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "使用しない"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "ありません。"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "使用する"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "ネットワーク"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "使用するサウンドデバイス"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "Sipアドレス:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "削除する"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "使用するサウンドデバイス"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "録音する音源"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "使用するサウンドデバイス"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "ユーザーマニュアル"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "オーディオコーデックのプロパティー"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "使用するサウンドデバイス"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "あなたのSIPアドレス"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "ユーザーマニュアル"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1100,26 +1216,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1129,28 +1238,24 @@ msgid ""
 "Duration: %i mn %i sec\n"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 #, fuzzy
 msgid "Ready"
 msgstr "準備完了。"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 #, fuzzy
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
@@ -1159,54 +1264,41 @@ msgstr ""
 "SIPアドレスの形式エラーです。SIPアドレスは、<sip:username@domainname>のような"
 "形式です。"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 #, fuzzy
 msgid "Contacting"
 msgstr "接続中"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "pixmapファイルが見つかりません %s"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "接続しました。"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "通話はキャンセルされました。"
 
-#: ../coreapi/linphonecore.c:2374
-#, fuzzy
-msgid "Call ended"
-msgstr "通話は拒否されました。"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1287,156 +1379,203 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "pixmapファイルが見つかりません %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "から電話です。"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "登録中……"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "登録中……"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr ""
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "通話は拒否されました。"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "電話をかける\n"
 "電話に出る"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 #, fuzzy
 msgid "Call terminated."
 msgstr "通話は拒否されました。"
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "ユーザーはビジーです"
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "ユーザーは、今出られません。"
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "ユーザーは手が離せないようです。"
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "通話は拒否されました。"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr ""
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr ""
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "通話はキャンセルされました。"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, fuzzy, c-format
 msgid "Registration on %s successful."
 msgstr "登録しました。"
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "登録しました。"
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr ""
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, fuzzy, c-format
 msgid "Registration on %s failed: %s"
 msgstr "登録しました。"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "コーデックの情報"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "コーデックの情報"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "接続中"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "オーディオコーデックのプロパティー"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "オーディオ"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "情報"
+
+#, fuzzy
+#~ msgid "_Linphone"
+#~ msgstr "Linphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "接続しました。"
+
+#, fuzzy
+#~ msgid "gtk-ok"
+#~ msgstr "削除する"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "接続しました。"
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "接続中"
+
 #, fuzzy
 #~ msgid "_Modes"
 #~ msgstr "コーデック"
@@ -1630,10 +1769,6 @@ msgstr "コーデックの情報"
 #~ msgid "Name:"
 #~ msgstr "名前"
 
-#, fuzzy
-#~ msgid "None"
-#~ msgstr "ありません。"
-
 #, fuzzy
 #~ msgid "Bad sip address: a sip address looks like sip:user@domain"
 #~ msgstr ""
@@ -1690,12 +1825,6 @@ msgstr "コーデックの情報"
 #~ msgid "Timeout..."
 #~ msgstr "時間切れです。"
 
-#, fuzzy
-#~ msgid ""
-#~ "Add address\n"
-#~ "book"
-#~ msgstr "電話帳"
-
 #~ msgid "Toggle this if you want to be registered on a remote server."
 #~ msgstr "リモートサーバーに登録するときは、チェックして下さい。"
 
index 9af125dc3606bb83dd5bd411b97f7bc18d0876bb..906742cb21e54f57f1510ba59d13f671c8b416a1 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2011-04-05 01:56+0200\n"
 "Last-Translator: Øyvind Sæther <oyvinds@everdot.org>\n"
 "Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
@@ -17,6 +17,40 @@ msgstr ""
 "X-Generator: Lokalize 1.2\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr "Skru mikrofonen av"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -27,23 +61,27 @@ msgstr "Fant ikke pixmap fli: %s"
 msgid "Chat with %s"
 msgstr "Chat med %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "skriv logg-informasjon under kjøring"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "Start skjult i systemkurven, ikke vis programbildet."
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "address som skal ringes nå"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "besvarer innkommende samtaler automatisk om valgt"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -51,12 +89,12 @@ msgstr ""
 "Spesifiser arbeidsmappe (bør være base for installasjonen, f.eks: c:"
 "\\Programfiler\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "Ring med %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -69,7 +107,7 @@ msgstr ""
 "din kontaktliste?\n"
 "Hvis du svarer nei vil personen bli svartelyst midlertidig."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -78,24 +116,56 @@ msgstr ""
 "Skriv inn ditt passord for brukernavn <i>%s</i>\n"
 " på domene <i>%s</i>:i>:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Samtalehistorikk"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Samtale avsluttet"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Innkommende samtale"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr "Svarer"
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Avvis"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "Samtale avbrutt"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Peker til nettsted"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - en video Internet telefon"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (Standard)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
-msgstr "Vinduer"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
+msgstr "Vi er overført til %s"
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -103,141 +173,165 @@ msgstr ""
 "Klarte ikke å finne noe lydkort på denne datamaskinen.\n"
 "Du vil ikke kunne sende eller motta lydsamtaler."
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "En gratis SIP video-telefon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Navn"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Tilstedestatus"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Søk i %s katalogen"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Ugyldig SIP kontakt !"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Ring %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Send tekst til %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Rediger kontakt '%s'"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Slett kontakt '%s'"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Legg til kontakt fra %s katalogen"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Frekvens (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Status"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Min. datahastighet (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametere"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "På"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Av"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Konto"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "Engelsk"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Fransk"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "Svensk"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "Italisensk"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "Spansk"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "Portugisisk"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "Polsk"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "Tysk"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "Russisk"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "Japansk"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "Nederlandsk"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Ungarsk"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "Tjekkisk"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "Kinesisk"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr "Du må restarte linphone for at det nye språkvalget skal iverksettes."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -355,74 +449,99 @@ msgstr "Lager brukerkontoen din"
 msgid "Now ready !"
 msgstr "Klar nå!"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Ring %s"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr "Overfører"
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>Ringer...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00:00:00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 msgid "<b>Incoming call</b>"
 msgstr "Innkommende samtale"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
-"Pauser alle samtaler\n"
-"og svarer"
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
-msgstr "Svarer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 msgid "<b>In call</b>"
 msgstr "<b>I samtale med</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 msgid "<b>Paused call</b>"
 msgstr "<b>Pauset samtale</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i:%02i:%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Samtale avsluttet.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "Skru mikrofonen på"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "Skru mikrofonen av"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr "Fortsett"
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr "Pause"
 
@@ -484,8 +603,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>Legg til kontakter fra katalogen</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Kontaktliste</b>"
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>Samtale avsluttet.</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -508,25 +628,26 @@ msgid "All users"
 msgstr "Alle brukere"
 
 #: ../gtk/main.ui.h:21
-msgid "Audio & video"
-msgstr "Lyd og Video"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Kun lyd"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Logg meg på automatisk"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Ring %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr "Sjekk _Oppdateringer"
@@ -539,10 +660,6 @@ msgstr "Kontakter"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Avvis"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "Standard"
@@ -552,13 +669,14 @@ msgid "Duration"
 msgstr "Varighet"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Varighet:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Vis video av deg selv"
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "På"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Skriv inn brukernavn, telefonnummer eller full SIP-addresse"
@@ -591,18 +709,23 @@ msgstr "Innlogginsinformasjon"
 msgid "Lookup:"
 msgstr "Slå opp:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Min nåværende identitet:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 msgid "Online users"
 msgstr "Tilkoblede brukere"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Passord"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "I samtale"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "Sip adresse eller telefonnummer:"
@@ -611,19 +734,14 @@ msgstr "Sip adresse eller telefonnummer:"
 msgid "Search"
 msgstr "Søk"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr "Vis avlusningsvindu"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Brukernavn"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Samtalehistorikk"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr "_Hjelp"
@@ -633,18 +751,14 @@ msgid "_Homepage"
 msgstr "H_jemmeside"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr "_Alternativer"
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "i"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "etikett"
 
@@ -704,14 +818,6 @@ msgstr "SIP Addresse"
 msgid "Show this contact presence status"
 msgstr "Vis kontaktens tilstedestatus"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr "gtk-avbryt"
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr "gtk-ok"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone avlusningsvindu"
@@ -765,8 +871,8 @@ msgid "Publish presence information"
 msgstr "Publiser tilstedestatus"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Registrer ved oppstart"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -792,10 +898,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Send"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr "gtk-lukk"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 betyr \"ubegrenset\""
@@ -829,8 +931,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT og Brannvegg</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Porter</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -849,98 +951,112 @@ msgid "<b>Video</b>"
 msgstr "<b>Video</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "Spesiell ALSA enhet (valgfritt):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Legg til"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "Lyd RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 msgid "Audio codecs"
 msgstr "Lyd kodek"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Bak NAT / Brannmur (spesifiser gateway IP under)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Bak NAT / Brannmur (bruk STUN for å avgjøre)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Mikrofonenhet:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Kodek"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Tilkoblet Internett direkte"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Deaktiver"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Ferdig"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Nedlastningsbegrensning i Kbit/sek:"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Rediger"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Aktiver"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Bruk ekko-kansellering"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Slett alle passord"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Behandle SIP-kontoer"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Multimediainnstillinger"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Nettverksinnstillinger"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Avspillingsenhet:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Foretrukke video-oppløsning:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Offentlig IP-addresse:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -948,95 +1064,102 @@ msgstr ""
 "Registrer hos FONICS\n"
 "virtuelle nettverk !"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Fjern"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Ringe-enhet:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Ringelyd:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+#, fuzzy
+msgid "SIP (TCP)"
 msgstr "SIP (TCP):"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+#, fuzzy
+msgid "SIP (TLS)"
+msgstr "SIP (TCP):"
+
+#: ../gtk/parameters.ui.h:48
+#, fuzzy
+msgid "SIP (UDP)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "Send DTMF som SIP-info"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Velg MTU (Maximum Transmission Unit):"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Innstillinger"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "Vis avanserte innstillinger"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "STUN tjener:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr "Denne seksjonen velger SIP-addresse når du ikke bruker en SIP-konto"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Maks opplastningshastighet i Kbit/sek:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Bruk IPv6 istedet for IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Brukergrensesnitt"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "Video RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 msgid "Video codecs"
 msgstr "Video kodek"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Videoenhet:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Vist navn (eks: Ola Nordmann):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Din resulterende SIP addresse:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Ditt brukernavn:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr "ett lydkort"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "standard kamera"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "standard lydkort"
 
@@ -1060,26 +1183,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Vennligst vent"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Du har %i ubesvarte anrop."
-msgstr[1] "Du har %i missade samtal"
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "avbrutt"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "Fullført"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "ubesvart"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1094,27 +1210,23 @@ msgstr ""
 "Status: %s\n"
 "Lengde: %i min %i sek\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Innkommende samtale"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Utgående samtale"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Klar"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Ser etter telefonnummer for destinasjonen..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Kan ikke tilkoble dette nummeret."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1122,50 +1234,38 @@ msgstr ""
 "Klarer ikke å tolke angitt SIP-adresse. En SIP-adresse er vanligvis ut som "
 "sip: brukernavn@domenenavn"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Tilknytter"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 msgid "Could not call"
 msgstr "Kunne ikke ringe"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr "Beklager, du må pause eller avslutte den nåværende samtalen først !"
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr "Beklager, du har nådd maksimalt antall samtidige samtaler"
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr "Endrer ringeparametre..."
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Tilkoblet"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 msgid "Call aborted"
 msgstr "Samtale avbrutt"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Samtale avsluttet"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr "Kunne ikke pause samtalen"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr "Pauser nåværende samtale"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr "Det er allerede en samtale igang, pause eller avslutt den først."
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1244,7 +1344,7 @@ msgstr "Pågående"
 msgid "Unknown-bug"
 msgstr "Ukjent feil"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1252,7 +1352,7 @@ msgstr ""
 "SIP proxy adressen du har angitt er ugyldig, den må begynne med \"sip:\" "
 "etterfult av vertsnavn."
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1260,136 +1360,200 @@ msgstr ""
 "SIP adressen du har angitt er feil. Adressen bør se ut som sip: "
 "brukernavn@domenenavn, f.eks sip:ola@eksempel.no"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Ikke ikke logge inn som %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "Kontakter deg."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr " og ba om autosvar."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr "."
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "Ringer hos motparten."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Ringer hos motparten."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Tidlig media"
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr "Samtalen med %s er pauset."
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr "Samtale besvart av %s - på vent."
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 msgid "Call resumed."
 msgstr "Samtale gjenopptatt."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr "Samtale besvart av %s."
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr "Vi er satt på vent..."
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr "Vi har blitt gjenopptatt..."
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Samtale avsluttet."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Brukeren er opptatt."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Brukeren er midlertidig ikke tilgjengelig."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Brukeren vil ikke bli forstyrret."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Samtale avvist."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "Ikke noe svar."
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "Protokollfeil."
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "Omdirigert"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "Ikke funnet"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "Ingen felles kodek"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "Samtale feilet."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registrering hos %s lykkes."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Avregistrering hos %s lykkes."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "ingen svar innen angitt tid"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registrering hos %s mislykkes: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr "Vi er overført til %s"
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 msgid "Authentication failure"
 msgstr "Autorisering kreves"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Autorisering kreves"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Du har %i ubesvarte anrop."
+msgstr[1] "Du har %i missade samtal"
+
+#~ msgid "Windows"
+#~ msgstr "Vinduer"
+
+#~ msgid ""
+#~ "Pause all calls\n"
+#~ "and answer"
+#~ msgstr ""
+#~ "Pauser alle samtaler\n"
+#~ "og svarer"
+
+#~ msgid "Unmute"
+#~ msgstr "Skru mikrofonen på"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Kontaktliste</b>"
+
+#~ msgid "Audio & video"
+#~ msgstr "Lyd og Video"
+
+#~ msgid "Audio only"
+#~ msgstr "Kun lyd"
+
+#~ msgid "Duration:"
+#~ msgstr "Varighet:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Samtalehistorikk"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-avbryt"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
+
+#~ msgid "Register at startup"
+#~ msgstr "Registrer ved oppstart"
+
+#~ msgid "gtk-close"
+#~ msgstr "gtk-lukk"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Porter</b>"
+
+#~ msgid "Sorry, you have to pause or stop the current call first !"
+#~ msgstr "Beklager, du må pause eller avslutte den nåværende samtalen først !"
+
+#~ msgid "There is already a call in process, pause or stop it first."
+#~ msgstr "Det er allerede en samtale igang, pause eller avslutt den først."
+
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "ITU-G.711 alaw enkoder"
 
index cc6a4a47c8c7fc9e29e0dc16a3345faf179b21f5..9926ab14bcfb7a24711b0dbc48397cd393d4a975 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: nl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2007-09-05 10:40+0200\n"
 "Last-Translator: Hendrik-Jan Heins <hjheins@gmail.com>\n"
 "Language-Team: Nederlands <vertaling@nl.linux.org>\n"
@@ -19,6 +19,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -29,34 +62,38 @@ msgstr "Kon pixmap bestand %s niet vinden"
 msgid "Chat with %s"
 msgstr "Chat met %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, fuzzy, c-format
 msgid "Call with %s"
 msgstr "Chat met %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -65,171 +102,229 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Linphone - Oproepgeschiedenis"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Oproep beeindigd"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Inkomende oproep"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "lijn"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "afgebroken"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Een Vrije SIP video-telefoon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Adresboek"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Naam"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Aanwezigheidsstatus"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, fuzzy, c-format
 msgid "Call %s"
 msgstr "Oproepgeschiedenis"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "Bewerk contactgegevens"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Frequentie (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Status"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Minimale bitrate (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parameters"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Aan"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Uit"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Account"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr ""
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr ""
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Geen"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -348,78 +443,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Oproepgeschiedenis"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "Contactlijst"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Inkomende oproep"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "Contactlijst"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "Contactlijst"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "Oproep beeindigd"
 
-#: ../gtk/incall_view.c:309
-#, fuzzy
-msgid "Unmute"
-msgstr "Ongelimiteerd"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -483,8 +604,8 @@ msgstr "Contact informatie"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "Contactlijst"
+msgid "<b>Callee name</b>"
+msgstr "Oproep beeindigd"
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -510,27 +631,26 @@ msgstr ""
 
 #: ../gtk/main.ui.h:21
 #, fuzzy
-msgid "Audio & video"
-msgstr "Audio codecs"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "Audio codecs"
-
-#: ../gtk/main.ui.h:23
-#, fuzzy
 msgid "Automatically log me in"
 msgstr "Automatisch een geldige hostnaam raden"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Oproepgeschiedenis"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -544,11 +664,6 @@ msgstr "Verbinden"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "lijn"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -561,13 +676,13 @@ msgstr "Informatie"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "Informatie"
+msgid "Enable self-view"
+msgstr "Video aan"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
-msgstr "Video aan"
+msgid "Enable video"
+msgstr "Aan"
 
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
@@ -603,21 +718,26 @@ msgstr "Contact informatie"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "SIP-identiteit:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "Aanwezig"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "wachtwoord:"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Inkomende oproep"
+
 #: ../gtk/main.ui.h:47
 #, fuzzy
 msgid "SIP address or phone number:"
@@ -627,20 +747,15 @@ msgstr "Geef het SIP adres of telefoonnummer in"
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr ""
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "gebruikersnaam:"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Linphone - Oproepgeschiedenis"
-
 #: ../gtk/main.ui.h:52
 #, fuzzy
 msgid "_Help"
@@ -651,19 +766,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-#, fuzzy
-msgid "_Linphone"
-msgstr "linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -713,16 +823,6 @@ msgstr "Adres"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Verbonden."
-
-#: ../gtk/contact.ui.h:7
-#, fuzzy
-msgid "gtk-ok"
-msgstr "Verwijderen"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr ""
@@ -781,7 +881,7 @@ msgid "Publish presence information"
 msgstr "Toon informatie over aanwezigheid:"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -812,11 +912,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Geluid"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Verbonden."
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -856,9 +951,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "Contactlijst"
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "Contactlijst"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -881,210 +975,228 @@ msgid "<b>Video</b>"
 msgstr "Contactlijst"
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 #, fuzzy
 msgid "Add"
 msgstr "Adres"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "Video codecs"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "Geluidsapparaat gebruiken:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "Codecs"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Uit"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "Weg"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 #, fuzzy
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Download bandbreedte (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Bewerken"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Aan"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "Netwerk"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "Geluidsapparaat gebruiken:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "SIP-adres:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Verwijderen"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "Geluidsapparaat gebruiken:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "Belgeluid:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "Geluidsapparaat"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 #, fuzzy
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Upload bandbreedte (kbit/sec):"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "gebruikersnaam:"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "Video codecs"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "Geluidsapparaat"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "Uw SIP-adres:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "gebruikersnaam:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1111,26 +1223,19 @@ msgstr "linphone"
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, fuzzy, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "U heeft %i oproep(en) gemist."
-msgstr[1] "U heeft %i oproep(en) gemist."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "afgebroken"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "voltooid"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "gemist"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1145,27 +1250,23 @@ msgstr ""
 "Status: %s\n"
 "Tijdsduur: %i mins %i secs\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Inkomende oproep"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Uitgaande oproep"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Gereed."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Zoekt de lokatie van het telefoonnummer..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Kon dit nummer niet vinden."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1173,54 +1274,42 @@ msgstr ""
 "Slecht geformuleerd SIP-adres. Een SIP-adres ziet er uit als sip:"
 "gebruikersnaam@domeinnaam"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Verbinden"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "Kon niet oproepen"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Verbonden."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "afgebroken"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Oproep beeindigd"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "Kon niet oproepen"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 #, fuzzy
 msgid "Pausing the current call..."
 msgstr "Kon niet oproepen"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1302,156 +1391,211 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "Kon pixmap bestand %s niet vinden"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "belt u."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Externe diensten"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Externe diensten"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Chat met %s"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Oproep beeindigd"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Oproepen of\n"
 "beantwoorden"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Oproep beeindigd."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Gebruiker is bezet."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Gebruiker is tijdelijk niet beschikbaar."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "De gebruiker wenst niet gestoord te worden."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Oproep geweigerd."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr ""
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Doorgeschakeld naar %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Oproep geannuleerd."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registratie op %s gelukt."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "Registratie op %s gelukt."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr ""
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, fuzzy, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registratie op %s mislukt (time-out)."
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Authorisatie gegevens"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Authorisatie gegevens"
+
+#: ../coreapi/linphonecall.c:1560
+#, fuzzy, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "U heeft %i oproep(en) gemist."
+msgstr[1] "U heeft %i oproep(en) gemist."
+
+#, fuzzy
+#~ msgid "Unmute"
+#~ msgstr "Ongelimiteerd"
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "Contactlijst"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Audio codecs"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "Audio codecs"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "Informatie"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Linphone - Oproepgeschiedenis"
+
+#, fuzzy
+#~ msgid "_Linphone"
+#~ msgstr "linphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Verbonden."
+
+#, fuzzy
+#~ msgid "gtk-ok"
+#~ msgstr "Verwijderen"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Verbonden."
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "Contactlijst"
+
 #~ msgid ""
 #~ "Your machine appears to be connected to an IPv6 network. By default "
 #~ "linphone always uses IPv4. Please update your configuration if you want "
@@ -1580,9 +1724,6 @@ msgstr "Authorisatie gegevens"
 #~ msgid "Go"
 #~ msgstr "Ga"
 
-#~ msgid "Address book"
-#~ msgstr "Adresboek"
-
 #~ msgid "Exit"
 #~ msgstr "Einde"
 
@@ -1915,9 +2056,6 @@ msgstr "Authorisatie gegevens"
 #~ msgid "Authentication required for realm %s"
 #~ msgstr "Authorisatie benodigd voor gebied %s"
 
-#~ msgid "None"
-#~ msgstr "Geen"
-
 #~ msgid "Wait"
 #~ msgstr "Wachten"
 
index f52259199349dcf699d823f3a936285e7725d06e..b9bb368e02f9119d902628a065731baeacd1e9d1 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2003-08-22 12:50+0200\n"
 "Last-Translator: Robert Nasiadek <darkone@darkone.pl>\n"
 "Language-Team: Polski <pl@li.org>\n"
@@ -15,6 +15,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -25,34 +58,38 @@ msgstr "Nie można znaleźć pixmapy: %s"
 msgid "Chat with %s"
 msgstr ""
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr ""
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -61,172 +98,232 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Połączenie odwołane."
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+#, fuzzy
+msgid "Call ended"
+msgstr "Rozmowa odrzucona."
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr ""
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "linia"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "Połączenie odwołane."
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr ""
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Książka adresowa"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Nazwa"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 #, fuzzy
 msgid "Presence status"
 msgstr "Obecność"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "(Brak informacji kontaktowych !)"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Jakość (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Status"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Min przepustowość (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametr"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Włączone"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Wyłączone"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr ""
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr ""
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr ""
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+#, fuzzy
+msgid "None"
+msgstr "Brak."
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -344,77 +441,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Połączenie odwołane."
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "Dzwonie do "
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Dzwonie do "
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "Dzwonie do "
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "Dzwonie do "
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "Rozmowa odrzucona."
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -478,8 +602,8 @@ msgstr "Informacje o kodeku"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "Dzwonie do "
+msgid "<b>Callee name</b>"
+msgstr "Rozmowa odrzucona."
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -504,27 +628,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "Kodeki audio"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "Kodeki audio"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr ""
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Połączenie odwołane."
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -538,11 +661,6 @@ msgstr "Dzwonie do "
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "linia"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -555,12 +673,12 @@ msgstr "Informacja"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "Informacja"
+msgid "Enable self-view"
+msgstr "Włączone"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
+msgid "Enable video"
 msgstr "Włączone"
 
 #: ../gtk/main.ui.h:34
@@ -597,21 +715,26 @@ msgstr "Informacje o kodeku"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "Tożsamość"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "linia"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "Twoje hasło:"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Dzwonie do "
+
 #: ../gtk/main.ui.h:47
 #, fuzzy
 msgid "SIP address or phone number:"
@@ -621,19 +744,15 @@ msgstr "Adres serwera rejestracji sip"
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr ""
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "Podręcznik"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr ""
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -643,19 +762,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-#, fuzzy
-msgid "_Linphone"
-msgstr "linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -705,15 +819,6 @@ msgstr "Adres"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Połączony"
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr ""
@@ -770,7 +875,7 @@ msgid "Publish presence information"
 msgstr "Informacje o kodeku"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -801,11 +906,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Dźwięk"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Połączony"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -845,9 +945,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "Dzwonie do "
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "Dzwonie do "
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -870,208 +969,226 @@ msgid "<b>Video</b>"
 msgstr "Dzwonie do "
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 #, fuzzy
 msgid "Add"
 msgstr "Adres"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "Kodeki audio"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "Użyj tego urządzenia dźwięku:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "Kodeki"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Wyłącz"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "Brak."
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Włączony"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "Sieć"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "Użyj tego urządzenia dźwięku:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "Adres sip:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "Użyj tego urządzenia dźwięku:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "Źródło nagrywania:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "Dźwięk"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "Podręcznik"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "Kodeki audio"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "Dźwięk"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "Twój adres sip:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "Podręcznik"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1098,26 +1215,19 @@ msgstr "linphone"
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] ""
-msgstr[1] ""
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1127,82 +1237,65 @@ msgid ""
 "Duration: %i mn %i sec\n"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 #, fuzzy
 msgid "Ready"
 msgstr "Gotowy."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 #, fuzzy
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
 msgstr "Nie poprawny adres sip. Adres sip wygląda tak <sip:osoba@serwer>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 #, fuzzy
 msgid "Contacting"
 msgstr "Dzwonie do "
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "Nie można znaleźć pixmapy: %s"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Połączony"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "Połączenie odwołane."
 
-#: ../coreapi/linphonecore.c:2374
-#, fuzzy
-msgid "Call ended"
-msgstr "Rozmowa odrzucona."
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1283,156 +1376,199 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "Nie można znaleźć pixmapy: %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "dzwoni do Ciebie."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Rejestruje..."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Rejestruje..."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr ""
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Rozmowa odrzucona."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Zadzwoń lub\n"
 "Odpowiedz"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 #, fuzzy
 msgid "Call terminated."
 msgstr "Rozmowa odrzucona."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Osoba jest zajęta."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Osoba jest tymczasowo niedostępna."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Osoba nie chce, aby jej przeszkadzać."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Rozmowa odrzucona."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr ""
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr ""
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Połączenie odwołane."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, fuzzy, c-format
 msgid "Registration on %s successful."
 msgstr "Rejestracja powiodła się."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "Rejestracja powiodła się."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr ""
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, fuzzy, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Rejestracja powiodła się."
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Informacje o kodeku"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Informacje o kodeku"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] ""
+msgstr[1] ""
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "Dzwonie do "
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Kodeki audio"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "Kodeki audio"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "Informacja"
+
+#, fuzzy
+#~ msgid "_Linphone"
+#~ msgstr "linphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Połączony"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Połączony"
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "Dzwonie do "
+
 #, fuzzy
 #~ msgid "_Modes"
 #~ msgstr "Kodeki"
@@ -1637,10 +1773,6 @@ msgstr "Informacje o kodeku"
 #~ msgid "Name:"
 #~ msgstr "Nazwa"
 
-#, fuzzy
-#~ msgid "None"
-#~ msgstr "Brak."
-
 #, fuzzy
 #~ msgid "Bad sip address: a sip address looks like sip:user@domain"
 #~ msgstr "Nie poprawny adres sip. Adres sip wygląda tak <sip:osoba@serwer>"
@@ -1702,12 +1834,6 @@ msgstr "Informacje o kodeku"
 #~ msgid "Timeout..."
 #~ msgstr "Upłynął limit czasu."
 
-#, fuzzy
-#~ msgid ""
-#~ "Add address\n"
-#~ "book"
-#~ msgstr "Książka adresowa"
-
 #~ msgid "Toggle this if you want to be registered on a remote server."
 #~ msgstr "Włącz to, jeżeli chcesz się zarejestrować na zdalnym serwerze."
 
index 811b22b01cd513015638a9fb9fd2e73db72229f1..a95bd71a540eca0099fcefa6d626a8c7b251ffda 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone-1.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2006-07-11 23:30+0200\n"
 "Last-Translator: Rafael Caesar Lenzi <rc_lenzi@yahoo.com.br>\n"
 "Language-Team: pt_BR <pt_BR@li.org>\n"
@@ -17,6 +17,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+msgid "Me"
+msgstr ""
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -27,34 +60,38 @@ msgstr "Não é possível achar arquivo pixmap: %s"
 msgid "Chat with %s"
 msgstr "Bate-papo com %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr ""
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr ""
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr ""
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr ""
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, fuzzy, c-format
 msgid "Call with %s"
 msgstr "Bate-papo com %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -63,172 +100,231 @@ msgid ""
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr ""
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Linphone - Histórico de chamadas"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+#, fuzzy
+msgid "Call ended"
+msgstr "Chamada cancelada."
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Camadas recebidas"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+#, fuzzy
+msgid "Decline"
+msgstr "linha"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "Abortado"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr ""
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr ""
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr ""
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr ""
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Catálogo de endereços"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Nome"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Status de presença"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr ""
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr ""
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, fuzzy, c-format
 msgid "Call %s"
 msgstr "Histórico de chamadas"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr ""
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, fuzzy, c-format
 msgid "Edit contact '%s'"
 msgstr "Edicar informação de contato"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr ""
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr ""
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Taxa (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr ""
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Bitrate mínimo (kbits/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parâmetros"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Ativado"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Desativado"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 #, fuzzy
 msgid "Account"
 msgstr "Aceitar"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr ""
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr ""
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr ""
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr ""
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr ""
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr ""
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr ""
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr ""
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr ""
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr ""
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr ""
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr ""
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr ""
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr ""
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Nenhum"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -347,77 +443,104 @@ msgstr ""
 msgid "Now ready !"
 msgstr ""
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Histórico de chamadas"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 #, fuzzy
 msgid "<b>Calling...</b>"
 msgstr "Contatando "
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr ""
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Camadas recebidas"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "Contatando "
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "Contatando "
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr ""
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 #, fuzzy
 msgid "<b>Call ended.</b>"
 msgstr "Chamada cancelada."
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr ""
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr ""
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -481,8 +604,8 @@ msgstr "Informação de contato"
 
 #: ../gtk/main.ui.h:14
 #, fuzzy
-msgid "<b>Contact list</b>"
-msgstr "Contatando "
+msgid "<b>Callee name</b>"
+msgstr "Chamada cancelada."
 
 #: ../gtk/main.ui.h:15
 #, fuzzy
@@ -508,27 +631,26 @@ msgstr ""
 
 #: ../gtk/main.ui.h:21
 #, fuzzy
-msgid "Audio & video"
-msgstr "Codec's de áudio"
-
-#: ../gtk/main.ui.h:22
-#, fuzzy
-msgid "Audio only"
-msgstr "Codec's de áudio"
-
-#: ../gtk/main.ui.h:23
-#, fuzzy
 msgid "Automatically log me in"
 msgstr "Adquirir automaticamente um nome de servidor válido."
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Histórico de chamadas"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -542,11 +664,6 @@ msgstr "Contatando "
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-#, fuzzy
-msgid "Decline"
-msgstr "linha"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -559,12 +676,12 @@ msgstr "Informações"
 
 #: ../gtk/main.ui.h:32
 #, fuzzy
-msgid "Duration:"
-msgstr "Informações"
+msgid "Enable self-view"
+msgstr "Ativado"
 
 #: ../gtk/main.ui.h:33
 #, fuzzy
-msgid "Enable self-view"
+msgid "Enable video"
 msgstr "Ativado"
 
 #: ../gtk/main.ui.h:34
@@ -601,21 +718,26 @@ msgstr "Informação de contato"
 msgid "Lookup:"
 msgstr ""
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 #, fuzzy
 msgid "My current identity:"
 msgstr "Identificação SIP:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr "linha"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 #, fuzzy
 msgid "Password"
 msgstr "Senha:"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Camadas recebidas"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr ""
@@ -624,20 +746,15 @@ msgstr ""
 msgid "Search"
 msgstr ""
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr ""
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 #, fuzzy
 msgid "Username"
 msgstr "Usuário"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Linphone - Histórico de chamadas"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -647,18 +764,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr ""
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr ""
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr ""
 
@@ -707,16 +820,6 @@ msgstr "Endereço"
 msgid "Show this contact presence status"
 msgstr ""
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Conectado."
-
-#: ../gtk/contact.ui.h:7
-#, fuzzy
-msgid "gtk-ok"
-msgstr "Remover"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr ""
@@ -775,7 +878,7 @@ msgid "Publish presence information"
 msgstr "Informar informação de presença"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
+msgid "Register"
 msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
@@ -806,11 +909,6 @@ msgstr ""
 msgid "Send"
 msgstr "Som"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Conectado."
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr ""
@@ -850,9 +948,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "Contatando "
 
 #: ../gtk/parameters.ui.h:9
-#, fuzzy
-msgid "<b>Ports</b>"
-msgstr "Contatando "
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 #, fuzzy
@@ -875,208 +972,226 @@ msgid "<b>Video</b>"
 msgstr "Contatando "
 
 #: ../gtk/parameters.ui.h:14
-msgid "ALSA special device (optional):"
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
 msgstr ""
 
 #: ../gtk/parameters.ui.h:15
+msgid "ALSA special device (optional):"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:16
 #, fuzzy
 msgid "Add"
 msgstr "Endereço"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr "Codec's de áudio"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 #, fuzzy
 msgid "Capture device:"
 msgstr "Dispositivo de captura de som:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 #, fuzzy
 msgid "Codecs"
 msgstr "Codec's de áudio"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Desativar"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 #, fuzzy
 msgid "Done"
 msgstr "Nenhum"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Editar"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Ativado"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 #, fuzzy
 msgid "Network settings"
 msgstr "Rede"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 #, fuzzy
 msgid "Playback device:"
 msgstr "Dispositivo de som:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 #, fuzzy
 msgid "Public IP address:"
 msgstr "Endereço sip:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Remover"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 #, fuzzy
 msgid "Ring device:"
 msgstr "Dispositivo de som"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 #, fuzzy
 msgid "Ring sound:"
 msgstr "Som do toque:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 #, fuzzy
 msgid "Stun server:"
 msgstr "Dispositivo de som"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 #, fuzzy
 msgid "User interface"
 msgstr "Usuário"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr "Codec's de áudio"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 #, fuzzy
 msgid "Video input device:"
 msgstr "Dispositivo de som"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 #, fuzzy
 msgid "Your resulting SIP address:"
 msgstr "Seu endereço SIP:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 #, fuzzy
 msgid "Your username:"
 msgstr "Usuário"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr ""
 
@@ -1102,26 +1217,19 @@ msgstr ""
 msgid "Please wait"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:165
-#, fuzzy, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Você perdeu %i ligação(ões)."
-msgstr[1] "Você perdeu %i ligação(ões)."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "Abortado"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "Competado"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "Perdido"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, fuzzy, c-format
 msgid ""
 "%s at %s\n"
@@ -1135,81 +1243,64 @@ msgstr ""
 "Status: %s\n"
 "Duração: %i min %i seg\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Camadas recebidas"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Chamadas efetuadas"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 #, fuzzy
 msgid "Ready"
 msgstr "Pronto."
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Procurando por telefone de destino..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Não foi possível encontrar este número."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 #, fuzzy
 msgid "Contacting"
 msgstr "Contatando "
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "Não é possível achar arquivo pixmap: %s"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Conectado."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "Abortado"
 
-#: ../coreapi/linphonecore.c:2374
-#, fuzzy
-msgid "Call ended"
-msgstr "Chamada cancelada."
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1280,156 +1371,203 @@ msgstr ""
 msgid "Unknown-bug"
 msgstr ""
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr ""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
 msgstr ""
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, fuzzy, c-format
 msgid "Could not login as %s"
 msgstr "Não é possível achar arquivo pixmap: %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "está chamado você."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Serviços remotos"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Serviços remotos"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Bate-papo com %s"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Chamada cancelada."
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Ligar ou\n"
 "atender"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr ""
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Usuário está ocupado."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Usuário está temporáriamente indisponível."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr ""
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr ""
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr ""
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Redirecionado para %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Histórico de chamadas"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, fuzzy, c-format
 msgid "Registration on %s successful."
 msgstr "Registro em %s efetuado."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, fuzzy, c-format
 msgid "Unregistration on %s done."
 msgstr "Registro em %s efetuado."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr ""
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, fuzzy, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registro falhou (tempo esgotado)."
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Informações de autenticação"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Informações de autenticação"
+
+#: ../coreapi/linphonecall.c:1560
+#, fuzzy, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Você perdeu %i ligação(ões)."
+msgstr[1] "Você perdeu %i ligação(ões)."
+
+#, fuzzy
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "Contatando "
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Codec's de áudio"
+
+#, fuzzy
+#~ msgid "Audio only"
+#~ msgstr "Codec's de áudio"
+
+#, fuzzy
+#~ msgid "Duration:"
+#~ msgstr "Informações"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Linphone - Histórico de chamadas"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Conectado."
+
+#, fuzzy
+#~ msgid "gtk-ok"
+#~ msgstr "Remover"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Conectado."
+
+#, fuzzy
+#~ msgid "<b>Ports</b>"
+#~ msgstr "Contatando "
+
 #~ msgid ""
 #~ "Your machine appears to be connected to an IPv6 network. By default "
 #~ "linphone always uses IPv4. Please update your configuration if you want "
@@ -1507,9 +1645,6 @@ msgstr "Informações de autenticação"
 #~ msgid "Go"
 #~ msgstr "Ir"
 
-#~ msgid "Address book"
-#~ msgstr "Catálogo de endereços"
-
 #, fuzzy
 #~ msgid "Exit"
 #~ msgstr "Editar"
@@ -1674,9 +1809,6 @@ msgstr "Informações de autenticação"
 #~ msgid "linphone - receiving call from %s"
 #~ msgstr "Linphone - Recebendo chamada de %s"
 
-#~ msgid "None"
-#~ msgstr "Nenhum"
-
 #~ msgid "User manual"
 #~ msgstr "Manual do usuário"
 
index 9b3107602111cb2006f53296dc60ba5909d52de7..8467df8497c1c6def8e575e7dba9d56345f9d710 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 0.7.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2010-01-22 18:43+0300\n"
 "Last-Translator: Maxim Prokopyev <jazzelastic@gmail.com>\n"
 "Language-Team: Russian <greg@dial.com.ru>\n"
@@ -15,6 +15,40 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr "Приглушить"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -25,25 +59,29 @@ msgstr "Невозможно найти графический файл: %s"
 msgid "Chat with %s"
 msgstr "Обмен сообщениями с %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr ""
 "Вывод некоторой отладочной информации на устройство стандартного вывода во "
 "время работы "
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "Показывать только в системном лотке, не запуская главное окно"
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "адрес для звонка"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "если установлен автоматический прием входящих вызовов"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -51,12 +89,12 @@ msgstr ""
 "Определить рабочий каталог (относительно каталога установки, например: c:"
 "\\Program Files\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, fuzzy, c-format
 msgid "Call with %s"
 msgstr "Обмен сообщениями с %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -69,7 +107,7 @@ msgstr ""
 "контактный лист?\n"
 "Если вы ответите Нет, эта персона будет временно заблокирована."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -78,167 +116,224 @@ msgstr ""
 "Пожалуйста, введите пароль для пользователя <i>%s</i>\n"
 " в домене <i>%s</i>:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "История звонков"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Разговор окончен"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Входящий вызов"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Отклонить"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "отмененный"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Домашняя страница"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - Интернет видео телефон"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (По умолчанию)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "Свободный SIP видео-телефон"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+#, fuzzy
+msgid "Add to addressbook"
+msgstr "Adressbuch"
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Имя"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Статус присутствия"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Поиск в директории %s"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "Неверный sip контакт"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Звонк %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Послать текст %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Редактировать контакт '%s'"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Удалить контакт '%s'"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Добавить новый контакт из директории '%s'"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Частота (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Статус"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Минимальный битрейт (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Параметры"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "Включен"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Отключен"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Учетная запись"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "Английский"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Французский"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "Шведский"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "Итальянский"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "Испанский"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 #, fuzzy
 msgid "Brazilian Portugese"
 msgstr "Португальский"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "Польский"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "Немецкий"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "Русский"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "Японский"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "Датский"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Венгерский"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "Чешский"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "Китайский"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr ""
 "Вы должны перезагрузить Linphone для того чтобы языковые настройки вступили "
 "в силу."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr "Нет"
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -356,76 +451,102 @@ msgstr "Создание аккаунта"
 msgid "Now ready !"
 msgstr "Готово !"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Звонк %s"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>Вызов...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00::00::00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Входящий вызов"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "<b>Соединен с</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "<b>Завершить вызов</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i::%02i::%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Звонок закончен.</b>"
 
-#: ../gtk/incall_view.c:309
-#, fuzzy
-msgid "Unmute"
-msgstr "Безлимитный"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "Приглушить"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -488,8 +609,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "Добавить новый контакт из директории '%s'"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Список контактов</b>"
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>Звонок закончен.</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -513,26 +635,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "Аудио и Видео"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Только Аудио"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Входить автоматически"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Звонк %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr ""
@@ -546,10 +668,6 @@ msgstr "Соединение"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Отклонить"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "По умолчанию"
@@ -559,13 +677,14 @@ msgid "Duration"
 msgstr "Продолжительность"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Продолжительность:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Включить видео "
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "Включен"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Введите имя пользователя, "
@@ -601,21 +720,26 @@ msgstr "Информация "
 msgid "Lookup:"
 msgstr "Поиск:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Текущий идентификатор:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr ""
 "Все пользователи\n"
 "Пользователи в сети"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Пароль"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "Входящий звонок"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "SIP-адрес или номер телефона."
@@ -625,20 +749,15 @@ msgstr "SIP-адрес или номер телефона."
 msgid "Search"
 msgstr "Поиск:"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 #, fuzzy
 msgid "Show debug window"
 msgstr "Linphone окно отладки"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Имя пользователя"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "История звонков"
-
 #: ../gtk/main.ui.h:52
 #, fuzzy
 msgid "_Help"
@@ -649,18 +768,14 @@ msgid "_Homepage"
 msgstr ""
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "в"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "метка"
 
@@ -720,14 +835,6 @@ msgstr "SIP Адрес"
 msgid "Show this contact presence status"
 msgstr "Показывать этому контакту статус присутствия"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr "Отмена"
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr "Ок"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone окно отладки"
@@ -782,8 +889,8 @@ msgid "Publish presence information"
 msgstr "Показывать статус присутствия"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Регистрация при запуске"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -809,10 +916,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Отправить"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr "Закрыть"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 означает \"безлимитный\""
@@ -847,8 +950,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT и брандмауэр</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Порты</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -867,101 +970,115 @@ msgid "<b>Video</b>"
 msgstr "<b>Видео</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "Специальное устройство ALSA (необязательно)"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Добавить"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "Аудио RTP/UDP"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr ""
 "Аудио кодеки\n"
 "Видео кодеки"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "За NAT / брандмауэр (указать IP-адрес шлюза ниже)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "За NAT / брандмауэр (исползовать STUN)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Устройство захвата:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Кодеки"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Прямое подключение к Интернет"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Выключить"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Готово"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Ограничение скорости входящего потока kbit/sec"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Редактировать"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Включить"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Включить подавление эхо"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Стереть все пароли"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Управление учетными записями SIP"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Настройка мультимедиа"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Настройки сети"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Устройство воспроизведения"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Предпочтительное разрешение видео:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Выделенный IP-адрес"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -969,100 +1086,106 @@ msgstr ""
 "Регистрация в \n"
 "виртуальной сети FONICS!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Удалить"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Устройство звонка:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Звук звонка:"
 
-#: ../gtk/parameters.ui.h:43
+#: ../gtk/parameters.ui.h:46
 #, fuzzy
-msgid "SIP (TCP):"
+msgid "SIP (TCP)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+#, fuzzy
+msgid "SIP (TLS)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+#, fuzzy
+msgid "SIP (UDP)"
+msgstr "SIP (UDP):"
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "Отправить DTFM как SIP-инфо"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Установка MTU (Максимально Передаваемый Блок)"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Настройки:"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "Stun сервер:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr "Поле определяет ваш SIP адрес когда вы не используете SIP аккаунт"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Ограничение исходящего потока kbit/sec:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Использовать IPv6 вместо IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Интерфейс:"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "Видео RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr ""
 "Аудио кодеки\n"
 "Видео кодеки"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Видео устройство вывода:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Отображаемое имя (Иван Сидоров):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Результирующий sip адрес:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Имя пользователя:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 #, fuzzy
 msgid "a sound card"
 msgstr "звуковая карта\n"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "камера по умолчаию"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "звуковая карта по умолчанию"
 
@@ -1086,26 +1209,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Подождите"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "У вас пропущено %i звонков."
-msgstr[1] "У вас пропущено %i звонков."
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "отмененный"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "заверщённый"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "пропущенный"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1120,27 +1236,23 @@ msgstr ""
 "Статус: %s\n"
 "Длительность: %i мн %i сек\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Входящий вызов"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Исходящий звонок"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Готов"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Поиск назначения для телефонного номера.."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Не может принять решение по этому номеру."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1148,54 +1260,42 @@ msgstr ""
 "Не могу опознать sip адрес. SIP url обычно выглядит как: <sip:"
 "username@domainname>"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Соединение"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "невозможно позвонить"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Соединён."
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "отмененный"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Разговор окончен"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "невозможно позвонить"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 #, fuzzy
 msgid "Pausing the current call..."
 msgstr "Показать текущий звонок"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1274,7 +1374,7 @@ msgstr "В ожидании"
 msgid "Unknown-bug"
 msgstr "Неизвестная ошибка"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1282,7 +1382,7 @@ msgstr ""
 "Введеный SIP-адрес прокси является недействительным, он должен начинаться с "
 "\"sip:имя_хоста\""
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1290,145 +1390,195 @@ msgstr ""
 "Неверные параметры идентификации\n"
 "Должно выглядеть как sip:username@proxydomain"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Невозможно зайти как: %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "контактирует с вами."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 #, fuzzy
 msgid "Remote ringing."
 msgstr "Registrierung"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Registrierung"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Early media"
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Обмен сообщениями с %s"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Разговор окончен"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, fuzzy, c-format
 msgid "Call answered by %s."
 msgstr ""
 "Позвонить\n"
 "или ответить"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Звонок прерван."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Пользователь занят."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Пользователь временно недоступен."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Пользователь не хочет чтоб его беспокоили."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Звонок отклонён."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 #, fuzzy
 msgid "No response."
 msgstr "время ожидания истекло"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Переадресован на %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Anruf annulliert"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Регистрация на %s прошла успешно."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Отмена регистрации на %s завершена."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "время ожидания истекло"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Регистрация на %s не удалась: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Информация аунтефикации"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Информация аунтефикации"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "У вас пропущено %i звонков."
+msgstr[1] "У вас пропущено %i звонков."
+
+#, fuzzy
+#~ msgid "Unmute"
+#~ msgstr "Безлимитный"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Список контактов</b>"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Аудио и Видео"
+
+#~ msgid "Audio only"
+#~ msgstr "Только Аудио"
+
+#~ msgid "Duration:"
+#~ msgstr "Продолжительность:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "История звонков"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "Отмена"
+
+#~ msgid "gtk-ok"
+#~ msgstr "Ок"
+
+#~ msgid "Register at startup"
+#~ msgstr "Регистрация при запуске"
+
+#~ msgid "gtk-close"
+#~ msgstr "Закрыть"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Порты</b>"
+
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "ITU-G.711 alaw кодировщик"
 
@@ -2037,9 +2187,6 @@ msgstr "Информация аунтефикации"
 #~ msgid "Authentication required for realm %s"
 #~ msgstr "Регистрация для %s"
 
-#~ msgid "None"
-#~ msgstr "Нет"
-
 #~ msgid "Wait"
 #~ msgstr "Подождать"
 
@@ -2115,12 +2262,6 @@ msgstr "Информация аунтефикации"
 #~ msgid "Timeout..."
 #~ msgstr "Zeitberschreitung..."
 
-#, fuzzy
-#~ msgid ""
-#~ "Add address\n"
-#~ "book"
-#~ msgstr "Adressbuch"
-
 #~ msgid "Toggle this if you want to be registered on a remote server."
 #~ msgstr ""
 #~ "Bitte ankreuzen, wenn Sie auf einem Sip-Server registriert werden wollen."
index 6fd2d76cf44a8f4c647c1b81e8872510847a58ac..2d7e136459c8667e1ab4cadd779e3ca2ae1e94af 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2009-02-17 15:22+0100\n"
 "Last-Translator: Emmanuel Frécon <emmanuel.frecon@myjoice.com>\n"
 "Language-Team: SWEDISH <SE@li.org>\n"
@@ -16,6 +16,40 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr "Mikrofon av"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -26,23 +60,27 @@ msgstr "Kunde inte hitta pixmap filen: %s"
 msgid "Chat with %s"
 msgstr "Chatta med %s"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "skriv loggning information under körning"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "Starta ikonifierat, visa inte huvudfönstret"
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "Samtalsmottagare"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "Om på, besvara automatisk alla inkommande samtal"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
@@ -50,12 +88,12 @@ msgstr ""
 "Välj en arbetskatalog som ska vara basen för installationen, såsom C:"
 "\\Program\\Linphone"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "Samtal med %s"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -68,7 +106,7 @@ msgstr ""
 "henne till din kontaktlista?\n"
 "Om du svarar nej, personen kommer att vara bannlyst."
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -77,164 +115,220 @@ msgstr ""
 "Mata in ditt lösenord för användaren <i>%s</i>\n"
 "vid domänen <i>%s</i>:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "Samtalshistorik"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "Samtalet slut"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "Inkommande samtal"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "Avböj"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "avbrytade"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "Webbsajt"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - en video Internet telefon"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (Default)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
 msgstr ""
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "En gratis SIP video-telefon"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "Namn"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "Närvarostatus"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "Sök i %s katalogen"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "ogiltig SIP kontakt!"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "Ringer %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "Skicka text till %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "Ändra kontakt '%s'"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "Ta bort kontakt '%s'"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "Lägg till kontakt ifrån %s katalogen"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "Frekvens (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "Status"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "Min. datahastighet (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "Parametrar"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "På"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "Av"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "Konto"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "Engelska"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "Fransk"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "Svenska"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "Italiensk"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "Spanska"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "Portugisiska"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "Polska"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "Tyska"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "Ryska"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "Japanska"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "Nederländksa"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "Hungerska"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "Tjekiska"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "Kinesiska"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr "Du behöver starta om programmet för att det nya språket ska synas."
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -352,75 +446,102 @@ msgstr "Skapar ditt konto"
 msgid "Now ready !"
 msgstr "Klar nu!"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "Ringer %s"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>Ringer...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00:00:00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "Inkommande samtal"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "<b>I samtal med</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "<b>Lägg på</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i:%02i:%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>Samtalet slut.</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "Mikrofon på"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "Mikrofon av"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -482,8 +603,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>Lägg till kontakt ifrån katalogen</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>Kontaktlista</b>"
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>Samtalet slut.</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -507,26 +629,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "Audio & Video"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "Enbart audio"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "Logga mig automatiskt"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr ""
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr ""
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "Ringer %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 #, fuzzy
 msgid "Check _Updates"
@@ -541,10 +663,6 @@ msgstr "Kontaktar"
 msgid "D"
 msgstr ""
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "Avböj"
-
 #: ../gtk/main.ui.h:30
 #, fuzzy
 msgid "Default"
@@ -555,13 +673,14 @@ msgid "Duration"
 msgstr "Förlopp"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "Förlopp:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "Själv bild"
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "På"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "Mata in användarnamn, telefonnummer eller SIP adress"
@@ -597,21 +716,26 @@ msgstr "Login information"
 msgid "Lookup:"
 msgstr "Sök:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "Min nuvarande identitet"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr ""
 "Alla användare\n"
 "Online användare"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "Lösenord"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "I samtal"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "Användarnamn"
@@ -620,20 +744,15 @@ msgstr "Användarnamn"
 msgid "Search"
 msgstr "Sök"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 #, fuzzy
 msgid "Show debug window"
 msgstr "Linphone debug fönster"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "Användarnamn"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "Samtalshistorik"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -644,18 +763,14 @@ msgid "_Homepage"
 msgstr "Hemsidan"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_inphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "i"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "etikett"
 
@@ -702,15 +817,6 @@ msgstr "SIP Adress"
 msgid "Show this contact presence status"
 msgstr "Visa kontaktens närvarostatus"
 
-#: ../gtk/contact.ui.h:6
-#, fuzzy
-msgid "gtk-cancel"
-msgstr "Kopplad"
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone debug fönster"
@@ -766,8 +872,8 @@ msgid "Publish presence information"
 msgstr "Publicera närvaro information"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "Registrera vid start"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -793,11 +899,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "Skicka"
 
-#: ../gtk/chatroom.ui.h:2
-#, fuzzy
-msgid "gtk-close"
-msgstr "Kopplad"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 står för \"utan begränsning\""
@@ -831,8 +932,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT och Brandvägg</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>Portar</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -851,101 +952,115 @@ msgid "<b>Video</b>"
 msgstr "<b>Video</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "ALSA speciell enhet (tillval):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "Lägg till"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr ""
 "Audio codecs\n"
 "Video codecs"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "Bakom en NAT / brandvägg (specificera gatewap IP adress nedan)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "Bakom en NAT / brandvägg (använd STUN för att avgöra adressen)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "Mikrofon enhet:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "Codecs"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "Direkt förbindelse till Internet"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "Inaktivera"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "Klar"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "Max downstream bandbreddshastighet i kbit/sek:"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "Editera"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "Möjliggör"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "Tillåta ekokancellering"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "Glöm alla lösenord"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "Hantera SIP konton"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "Multimedia inställningar"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "Nätverksinställningar"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "Uppspelningsenhet:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "Video upplösning:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "Publik IP adress:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -953,100 +1068,104 @@ msgstr ""
 "Registrera hos FONICS\n"
 "virtuella nätverk!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "Ta bort"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "Ringning enhet:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "Ring signal:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+msgid "SIP (TCP)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+msgid "SIP (TLS)"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+msgid "SIP (UDP)"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "Kicka DTMF koder som SIP info"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "Välj MTU (Maximum Transmission Unit):"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "Inställningar"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "Visa avancerade inställningar"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "STUN server:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr ""
 "Denna sektion specificerar din SIP adress när du inte använder ett SIP konto"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "Max upstream bandbreddshastighet i kbit/sek:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "Använd IPv6 istället av IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "Användarinterface"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr ""
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr ""
 "Audio codecs\n"
 "Video codecs"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "Video ingångsenhet:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "Ditt synliga namn, e.g. Kalle Karlsson:"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "Din SIP adress:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "Ditt användarnamn:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 #, fuzzy
 msgid "a sound card"
 msgstr "ett ljud kort\n"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "default kamera"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "default ljudkort"
 
@@ -1070,26 +1189,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "Vänta"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "Du har %i missat samtal"
-msgstr[1] "Du har %i missade samtal"
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "avbrytade"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "avslutade"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "missade"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1104,27 +1216,23 @@ msgstr ""
 "Status: %s\n"
 "Längd: %i min %i sek\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "Inkommande samtal"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "Utgående samtal"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "Redo"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "Leta efter telefonnummer för destinationen..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "Kan inte nå dett nummer."
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1132,54 +1240,42 @@ msgstr ""
 "Kan inte förstå angiven SIP adress. En SIP adress vanligen ser ut som sip:"
 "användare@domänen"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "Kontaktar"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "Kunde inte ringa"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "Kopplad"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "avbrytade"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "Samtalet slut"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "Kunde inte ringa"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 #, fuzzy
 msgid "Pausing the current call..."
 msgstr "Nuvarande samtal"
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1256,7 +1352,7 @@ msgstr "Pågående"
 msgid "Unknown-bug"
 msgstr "Okänd bug"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
@@ -1264,7 +1360,7 @@ msgstr ""
 "SIP proxy adressen som du matade in är inte rätt, adressen måste starta med "
 "\"sip:\", följd av ett hostnamn"
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1272,142 +1368,190 @@ msgstr ""
 "SIP adressen som du matade in är inte rätt. Adressen borde se ut som sip:"
 "namn@domän, såsom sip:peter@exempel.se"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "Kunde inte logga in som %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 #, fuzzy
 msgid "is contacting you"
 msgstr "kontaktar dig."
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr ""
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr ""
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "Ringer hos motparten."
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "Ringer hos motparten."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "Tidig media"
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "Samtal med %s"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "Samtalet slut"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr ""
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "Samtalet slut."
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "Användare upptagen."
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "Användaren temporärt inte tillgänglig."
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "Användaren vill inte bli störd."
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "Samtalet avböjdes."
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 #, fuzzy
 msgid "No response."
 msgstr "Inget svar inom angiven tid"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr ""
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 #, fuzzy
 msgid "Redirected"
 msgstr "Omdirigerat till %s..."
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr ""
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr ""
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 #, fuzzy
 msgid "Call failed."
 msgstr "Samtalet avböjdes."
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "Registrering hos %s lyckades."
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "Avregistrering hos %s lyckades."
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "Inget svar inom angiven tid"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "Registrering hos %s mislyckades: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Linphone - Autentisering krävs"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Linphone - Autentisering krävs"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "Du har %i missat samtal"
+msgstr[1] "Du har %i missade samtal"
+
+#~ msgid "Unmute"
+#~ msgstr "Mikrofon på"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>Kontaktlista</b>"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "Audio & Video"
+
+#~ msgid "Audio only"
+#~ msgstr "Enbart audio"
+
+#~ msgid "Duration:"
+#~ msgstr "Förlopp:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "Samtalshistorik"
+
+#~ msgid "_Linphone"
+#~ msgstr "_inphone"
+
+#, fuzzy
+#~ msgid "gtk-cancel"
+#~ msgstr "Kopplad"
+
+#~ msgid "Register at startup"
+#~ msgstr "Registrera vid start"
+
+#, fuzzy
+#~ msgid "gtk-close"
+#~ msgstr "Kopplad"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>Portar</b>"
+
 #~ msgid "Alsa sound source"
 #~ msgstr "Alsa ljud ingång"
 
index ef2d044b7a2077ba1035f4058c7f6bc283427261..42c4818908bdbacc58bfb5126dbcb72795d1bd73 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 3.3.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-08 22:32+0200\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2011-01-08 23:51+0800\n"
 "Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr "静音"
+
 #: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
@@ -28,34 +60,38 @@ msgstr "无法打开位图文件:%s"
 msgid "Chat with %s"
 msgstr "与 %s 通话"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "运行时向标准输出记录调试信息。"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "启动到系统托盘,不显示主界面。"
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "现在呼叫的地址"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "是否设置呼叫自动应答"
 
-#: ../gtk/main.c:102
+#: ../gtk/main.c:118
 msgid ""
 "Specifiy a working directory (should be the base of the installation, eg: c:"
 "\\Program Files\\Linphone)"
 msgstr "指定工作目录(应为安装目录例如 C:\\Program Files\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "与 %s 通话"
 
-#: ../gtk/main.c:826
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
@@ -67,31 +103,63 @@ msgstr ""
 "您是否允许他看到您的在线状态或者将它加为您的联系人允许?\n"
 "如果您回答否,则会将该人临时性的放入黑名单"
 
-#: ../gtk/main.c:904
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
 " at domain <i>%s</i>:"
 msgstr "请输入 %s@%s 的密码:"
 
-#: ../gtk/main.c:1040
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "呼叫历史"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "呼叫结束"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "呼入"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr ""
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "拒绝"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "中断"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "网站"
 
-#: ../gtk/main.c:1076
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - 互联网视频电话"
 
-#: ../gtk/main.c:1095
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (默认)"
 
-#: ../gtk/main.c:1187
-msgid "Windows"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
 msgstr ""
 
-#: ../gtk/main.c:1364
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -99,141 +167,165 @@ msgstr ""
 "未在此计算机上检测到声卡。\n"
 "您无法发送或接收音频呼叫。"
 
-#: ../gtk/main.c:1423
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "免费的 SIP 视频电话"
 
-#: ../gtk/friendlist.c:192 ../gtk/propertybox.c:271 ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "名称"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "在线状态"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "在 %s 目录中查找 "
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "无效的 SIP 联系人!"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "呼叫 %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "发送消息给 %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "编辑联系人 %s"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "删除联系人 %s"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "从 %s 目录增加联系人 "
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "采样率(Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "状态"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "最小比特率(kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "参数"
 
-#: ../gtk/propertybox.c:326 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "启用"
 
-#: ../gtk/propertybox.c:327 ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "禁用"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "帐户"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "英语"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "法语"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "瑞典语"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "意大利语"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "西班牙语"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "巴西葡萄牙语"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "波兰语"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "德语"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "俄语"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "日语"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "荷兰语"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "匈牙利语"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "捷克语"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "中文"
 
-#: ../gtk/propertybox.c:720
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
 msgid ""
 "You need to restart linphone for the new language selection to take effect."
 msgstr "您需要重启 linphone 以使语言选择生效。"
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -350,75 +442,102 @@ msgstr "正在创建您的帐户"
 msgid "Now ready !"
 msgstr "就绪!"
 
-#: ../gtk/incall_view.c:61
+#: ../gtk/incall_view.c:69
 #, fuzzy, c-format
 msgid "Call #%i"
 msgstr "呼叫 %s"
 
-#: ../gtk/incall_view.c:87
+#: ../gtk/incall_view.c:127
 #, c-format
 msgid "Transfer to call #%i with %s"
 msgstr ""
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr ""
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>正在呼叫...</b>"
 
-#: ../gtk/incall_view.c:190 ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00::00::00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 #, fuzzy
 msgid "<b>Incoming call</b>"
 msgstr "呼入"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
 
-#: ../gtk/incall_view.c:217 ../gtk/main.ui.h:20
-msgid "Answer"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
 msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
+
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 #, fuzzy
 msgid "<b>In call</b>"
 msgstr "<b>正在呼叫</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 #, fuzzy
 msgid "<b>Paused call</b>"
 msgstr "<b>正在呼叫</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i::%02i::%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>通话结束。</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "取消静音"
-
-#: ../gtk/incall_view.c:316 ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "静音"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr ""
 
-#: ../gtk/incall_view.c:347 ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr ""
 
@@ -480,8 +599,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>从目录增加联系人</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>联系人列表</b>"
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>通话结束。</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -505,26 +625,26 @@ msgid "All users"
 msgstr ""
 
 #: ../gtk/main.ui.h:21
-#, fuzzy
-msgid "Audio & video"
-msgstr "音频和视频"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "音频"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "自动登录"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25 ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "呼叫 %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 #, fuzzy
 msgid "Check _Updates"
@@ -538,10 +658,6 @@ msgstr "联系人"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "拒绝"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "默认"
@@ -551,13 +667,14 @@ msgid "Duration"
 msgstr "通话时间"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "通话计时:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "启用自视"
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "启用"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "请输入用户名、电话号码或完整的 SIP 地址"
@@ -593,21 +710,26 @@ msgstr "登录信息"
 msgid "Lookup:"
 msgstr "查找:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "当前地址:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 #, fuzzy
 msgid "Online users"
 msgstr ""
 "全部用户\n"
 "在线用户"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "密码"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "呼入"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "SIP 地址或电话号码:"
@@ -616,20 +738,15 @@ msgstr "SIP 地址或电话号码:"
 msgid "Search"
 msgstr "搜索"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 #, fuzzy
 msgid "Show debug window"
 msgstr "Linphone 调试窗口"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "用户名"
 
-#: ../gtk/main.ui.h:51
-#, fuzzy
-msgid "_Call history"
-msgstr "呼叫历史"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr ""
@@ -640,18 +757,14 @@ msgid "_Homepage"
 msgstr "主页"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr ""
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "于"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "标签"
 
@@ -710,14 +823,6 @@ msgstr "SIP 地址"
 msgid "Show this contact presence status"
 msgstr "显示该联系人的在线状态"
 
-#: ../gtk/contact.ui.h:6
-msgid "gtk-cancel"
-msgstr ""
-
-#: ../gtk/contact.ui.h:7
-msgid "gtk-ok"
-msgstr ""
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone 调试窗口"
@@ -773,8 +878,8 @@ msgid "Publish presence information"
 msgstr "发布在线状态"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "在启动时注册"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -800,10 +905,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "发送"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr ""
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 表示 “没有限制”"
@@ -837,8 +938,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT 及防火墙</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>端口</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -857,101 +958,115 @@ msgid "<b>Video</b>"
 msgstr "<b>视频</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "ALSA 特殊设备(可选):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "添加"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "音频 RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 #, fuzzy
 msgid "Audio codecs"
 msgstr ""
 "音频编解码器\n"
 "视频编解码器"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "在 NAT 或防火墙后(填写网关 IP)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "在 NAT 或防火墙后(使用 STUN 解决)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "录音设备:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "编解码器"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "直接连接到互联网"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "禁用"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "完成"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "下载速率限制 kbit/s:"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "编辑"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "启用"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "启用回声抑制"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "清除所有密码"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "SIP 帐户管理"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "音视频设置"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "网络设置"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "回放设备:"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "视频分辨率:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "公网 IP 地址:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -959,100 +1074,106 @@ msgstr ""
 "注册到 FONICS\n"
 "虚拟网络!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "移除"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "响铃设备:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "铃声文件:"
 
-#: ../gtk/parameters.ui.h:43
+#: ../gtk/parameters.ui.h:46
 #, fuzzy
-msgid "SIP (TCP):"
+msgid "SIP (TCP)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+#, fuzzy
+msgid "SIP (TLS)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:48
+#, fuzzy
+msgid "SIP (UDP)"
+msgstr "SIP (UDP):"
+
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "以 SIP 消息发送 DTMF"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "设置最大传输单元(MTU):"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "设置"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "显示高级设置"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "Stun 服务器:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr "该段在您不使用SIP帐户时的SIP地址"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "上传速率限制 kbit/s:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "使用 IPv6 而非 IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "用户界面"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "视频 RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 #, fuzzy
 msgid "Video codecs"
 msgstr ""
 "音频编解码器\n"
 "视频编解码器"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "视频输入设备:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "您的显示名:"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "您的 SIP 地址结果:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "您的用户名:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 #, fuzzy
 msgid "a sound card"
 msgstr "声卡\n"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "默认摄像头"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "默认声卡"
 
@@ -1076,25 +1197,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "请稍候"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "您错过了 %i 个呼叫。"
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "中断"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "完成"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "丢失"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1109,27 +1224,23 @@ msgstr ""
 "状态:%s\n"
 "状态:%i 分 %i 秒\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "呼入"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "呼出"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "就绪"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "查询电话号码目的地..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "该号码无法解析。"
 
-#: ../coreapi/linphonecore.c:1820
+#: ../coreapi/linphonecore.c:1878
 msgid ""
 "Could not parse given sip address. A sip url usually looks like sip:"
 "user@domain"
@@ -1137,53 +1248,41 @@ msgstr ""
 "无法解析给定的 SIP 地址,SIP 地址应有如下格式:\n"
 "sip:用户名@域名"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "联系中"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 #, fuzzy
 msgid "Could not call"
 msgstr "无法呼叫"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr ""
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "已连接。"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 #, fuzzy
 msgid "Call aborted"
 msgstr "中断"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "呼叫结束"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 #, fuzzy
 msgid "Could not pause the call"
 msgstr "无法呼叫"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr ""
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr ""
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1258,13 +1357,13 @@ msgstr "挂起"
 msgid "Unknown-bug"
 msgstr "未知错误"
 
-#: ../coreapi/proxy.c:187
+#: ../coreapi/proxy.c:192
 msgid ""
 "The sip proxy address you entered is invalid, it must start with \"sip:\" "
 "followed by a hostname."
 msgstr "您输入的 SIP 代理地址无效,它必须是以“sip:”开头,并紧随一个主机名。"
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1272,138 +1371,177 @@ msgstr ""
 "您输入的地址无效。\n"
 "它应具有“sip:用户名@代理域”的形式,例如 sip:alice@example.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "无法登录为 %s"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "正在联系您"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr " 并询问了自动回答。"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr "."
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "响铃。"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 #, fuzzy
 msgid "Remote ringing..."
 msgstr "响铃。"
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr ""
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, fuzzy, c-format
 msgid "Call with %s is paused."
 msgstr "与 %s 通话"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr ""
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 #, fuzzy
 msgid "Call resumed."
 msgstr "呼叫结束"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr ""
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr ""
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "通话结束。"
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "被叫正忙。"
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "您呼叫的用户暂时无法接通。"
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "用户已开启免打扰功能。"
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "呼叫被拒绝。"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "没有响应。"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "协议错误。"
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "已重定向"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "未找到"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "未找到常用编解码器"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "呼叫失败。"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "成功注册到 %s"
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "已在 %s 解除注册。"
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "没有响应,超时"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "注册到 %s 失败: %s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr ""
-
-#: ../coreapi/sal_eXosip2.c:815 ../coreapi/sal_eXosip2.c:817
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 #, fuzzy
 msgid "Authentication failure"
 msgstr "Linphone - 需要认证"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "Linphone - 需要认证"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "您错过了 %i 个呼叫。"
+
+#~ msgid "Unmute"
+#~ msgstr "取消静音"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>联系人列表</b>"
+
+#, fuzzy
+#~ msgid "Audio & video"
+#~ msgstr "音频和视频"
+
+#~ msgid "Audio only"
+#~ msgstr "音频"
+
+#~ msgid "Duration:"
+#~ msgstr "通话计时:"
+
+#, fuzzy
+#~ msgid "_Call history"
+#~ msgstr "呼叫历史"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "Register at startup"
+#~ msgstr "在启动时注册"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>端口</b>"
+
 #~ msgid "ITU-G.711 alaw encoder"
 #~ msgstr "ITU-G.711 alaw 编码器"
 
index 0c16dafc191bbb03c59f9858977ced2b9f66e987..220a3436dc035a64887313af216a4e829bbe48e9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: linphone 3.4\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-06 14:41+0800\n"
+"POT-Creation-Date: 2011-12-05 12:41+0100\n"
 "PO-Revision-Date: 2011-04-06 21:24+0800\n"
 "Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
 "Language-Team: \n"
@@ -17,9 +17,39 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../gtk/support.c:49
-#: ../gtk/support.c:73
-#: ../gtk/support.c:102
+#: ../gtk/calllogs.c:71
+#, c-format
+msgid "%i minute"
+msgid_plural "%i minutes"
+msgstr[0] ""
+
+#: ../gtk/calllogs.c:74
+#, c-format
+msgid "%i second"
+msgid_plural "%i seconds"
+msgstr[0] ""
+
+#: ../gtk/calllogs.c:77
+#, c-format
+msgid ""
+"<big><b>%s</b></big>\t<small><i>%s</i>\t<i>Quality: %s</i></small>\n"
+"%s\t%s %s\t"
+msgstr ""
+
+#: ../gtk/calllogs.c:79
+msgid "n/a"
+msgstr ""
+
+#: ../gtk/conference.c:33 ../gtk/incall_view.c:183
+msgid "Conference"
+msgstr ""
+
+#: ../gtk/conference.c:41
+#, fuzzy
+msgid "Me"
+msgstr "靜音"
+
+#: ../gtk/support.c:49 ../gtk/support.c:73 ../gtk/support.c:102
 #, c-format
 msgid "Couldn't find pixmap file: %s"
 msgstr "找不到 pixmap 檔:%s"
@@ -29,43 +59,51 @@ msgstr "找不到 pixmap 檔:%s"
 msgid "Chat with %s"
 msgstr "和 %s 聊天"
 
-#: ../gtk/main.c:74
+#: ../gtk/main.c:83
 msgid "log to stdout some debug information while running."
 msgstr "執行時將一些除錯資訊記錄到標準輸出。"
 
-#: ../gtk/main.c:81
+#: ../gtk/main.c:90
+msgid "path to a file to write logs into."
+msgstr ""
+
+#: ../gtk/main.c:97
 msgid "Start only in the system tray, do not show the main interface."
 msgstr "只在系統匣啟動,不要顯示主要介面。"
 
-#: ../gtk/main.c:88
+#: ../gtk/main.c:104
 msgid "address to call right now"
 msgstr "現在要打電話的位址"
 
-#: ../gtk/main.c:95
+#: ../gtk/main.c:111
 msgid "if set automatically answer incoming calls"
 msgstr "如啟用此項,將會自動接聽來電"
 
-#: ../gtk/main.c:102
-msgid "Specifiy a working directory (should be the base of the installation, eg: c:\\Program Files\\Linphone)"
-msgstr "指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)"
+#: ../gtk/main.c:118
+msgid ""
+"Specifiy a working directory (should be the base of the installation, eg: c:"
+"\\Program Files\\Linphone)"
+msgstr ""
+"指定一個工作目錄(應該為安裝的根目錄,例如:c:\\Program Files\\Linphone)"
 
-#: ../gtk/main.c:442
+#: ../gtk/main.c:464
 #, c-format
 msgid "Call with %s"
 msgstr "和 %s 通話"
 
-#: ../gtk/main.c:825
+#: ../gtk/main.c:815
 #, c-format
 msgid ""
 "%s would like to add you to his contact list.\n"
-"Would you allow him to see your presence status or add him to your contact list ?\n"
+"Would you allow him to see your presence status or add him to your contact "
+"list ?\n"
 "If you answer no, this person will be temporarily blacklisted."
 msgstr ""
 "%s 想要加您加入他的連絡人清單。\n"
 "您是否要允許他看見您的上線狀態或將他加入您的連絡人清單?\n"
 "如果您回答否,這個人會被暫時列入黑名單。"
 
-#: ../gtk/main.c:903
+#: ../gtk/main.c:893
 #, c-format
 msgid ""
 "Please enter your password for username <i>%s</i>\n"
@@ -74,24 +112,56 @@ msgstr ""
 "請輸入您使用者名稱 <i>%s</i>\n"
 "於網域 <i>%s</i> 的密碼:"
 
-#: ../gtk/main.c:1039
+#: ../gtk/main.c:993
+#, fuzzy
+msgid "Call error"
+msgstr "通話紀錄"
+
+#: ../gtk/main.c:996 ../coreapi/linphonecore.c:2406
+msgid "Call ended"
+msgstr "通話已結束"
+
+#: ../gtk/main.c:999 ../coreapi/linphonecore.c:199
+msgid "Incoming call"
+msgstr "來電"
+
+#: ../gtk/main.c:1001 ../gtk/incall_view.c:292 ../gtk/main.ui.h:20
+msgid "Answer"
+msgstr "接聽"
+
+#: ../gtk/main.c:1003 ../gtk/main.ui.h:29
+msgid "Decline"
+msgstr "拒接"
+
+#: ../gtk/main.c:1009
+#, fuzzy
+msgid "Call paused"
+msgstr "通話已放棄"
+
+#: ../gtk/main.c:1009
+#, c-format
+msgid "<span size=\"large\">by %s</span>"
+msgstr ""
+
+#: ../gtk/main.c:1165
 msgid "Website link"
 msgstr "網站連結"
 
-#: ../gtk/main.c:1075
+#: ../gtk/main.c:1205
 msgid "Linphone - a video internet phone"
 msgstr "Linphone - 網路視訊電話"
 
-#: ../gtk/main.c:1094
+#: ../gtk/main.c:1295
 #, c-format
 msgid "%s (Default)"
 msgstr "%s (預設值)"
 
-#: ../gtk/main.c:1186
-msgid "Windows"
-msgstr "視窗"
+#: ../gtk/main.c:1566 ../coreapi/callbacks.c:700
+#, c-format
+msgid "We are transferred to %s"
+msgstr "我們被轉接到 %s"
 
-#: ../gtk/main.c:1363
+#: ../gtk/main.c:1576
 msgid ""
 "No sound cards have been detected on this computer.\n"
 "You won't be able to send or receive audio calls."
@@ -99,144 +169,165 @@ msgstr ""
 "在這臺電腦中偵測不到音效卡。\n"
 "您將無法傳送或接收語音電話。"
 
-#: ../gtk/main.c:1422
+#: ../gtk/main.c:1663
 msgid "A free SIP video-phone"
 msgstr "自由的 SIP 視訊電話"
 
-#: ../gtk/friendlist.c:192
-#: ../gtk/propertybox.c:271
-#: ../gtk/contact.ui.h:3
+#: ../gtk/friendlist.c:203
+msgid "Add to addressbook"
+msgstr ""
+
+#: ../gtk/friendlist.c:258 ../gtk/propertybox.c:296 ../gtk/contact.ui.h:3
 msgid "Name"
 msgstr "名稱"
 
-#: ../gtk/friendlist.c:205
+#: ../gtk/friendlist.c:271
 msgid "Presence status"
 msgstr "上線狀態"
 
-#: ../gtk/friendlist.c:242
+#: ../gtk/friendlist.c:308
 #, c-format
 msgid "Search in %s directory"
 msgstr "在 %s 目錄中搜尋"
 
-#: ../gtk/friendlist.c:450
+#: ../gtk/friendlist.c:568
 msgid "Invalid sip contact !"
 msgstr "無效的 sip 連絡人!"
 
-#: ../gtk/friendlist.c:495
+#: ../gtk/friendlist.c:613
 #, c-format
 msgid "Call %s"
 msgstr "播打給 %s"
 
-#: ../gtk/friendlist.c:496
+#: ../gtk/friendlist.c:614
 #, c-format
 msgid "Send text to %s"
 msgstr "傳送文字給 %s"
 
-#: ../gtk/friendlist.c:497
+#: ../gtk/friendlist.c:615
 #, c-format
 msgid "Edit contact '%s'"
 msgstr "編輯連絡人「%s」"
 
-#: ../gtk/friendlist.c:498
+#: ../gtk/friendlist.c:616
 #, c-format
 msgid "Delete contact '%s'"
 msgstr "刪除連絡人「%s」"
 
-#: ../gtk/friendlist.c:540
+#: ../gtk/friendlist.c:658
 #, c-format
 msgid "Add new contact from %s directory"
 msgstr "從 %s 目錄加入新的連絡人"
 
-#: ../gtk/propertybox.c:277
+#: ../gtk/propertybox.c:302
 msgid "Rate (Hz)"
 msgstr "頻率 (Hz)"
 
-#: ../gtk/propertybox.c:283
+#: ../gtk/propertybox.c:308
 msgid "Status"
 msgstr "狀態"
 
-#: ../gtk/propertybox.c:289
+#: ../gtk/propertybox.c:314
 msgid "Min bitrate (kbit/s)"
 msgstr "最小頻寬 (kbit/s)"
 
-#: ../gtk/propertybox.c:296
+#: ../gtk/propertybox.c:321
 msgid "Parameters"
 msgstr "參數"
 
-#: ../gtk/propertybox.c:326
-#: ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:364 ../gtk/propertybox.c:507
 msgid "Enabled"
 msgstr "已啟用"
 
-#: ../gtk/propertybox.c:327
-#: ../gtk/propertybox.c:465
+#: ../gtk/propertybox.c:366 ../gtk/propertybox.c:507
 msgid "Disabled"
 msgstr "已停用"
 
-#: ../gtk/propertybox.c:510
+#: ../gtk/propertybox.c:553
 msgid "Account"
 msgstr "帳號"
 
-#: ../gtk/propertybox.c:650
+#: ../gtk/propertybox.c:693
 msgid "English"
 msgstr "英語"
 
-#: ../gtk/propertybox.c:651
+#: ../gtk/propertybox.c:694
 msgid "French"
 msgstr "法語"
 
-#: ../gtk/propertybox.c:652
+#: ../gtk/propertybox.c:695
 msgid "Swedish"
 msgstr "瑞典語"
 
-#: ../gtk/propertybox.c:653
+#: ../gtk/propertybox.c:696
 msgid "Italian"
 msgstr "義大利語"
 
-#: ../gtk/propertybox.c:654
+#: ../gtk/propertybox.c:697
 msgid "Spanish"
 msgstr "西班牙語"
 
-#: ../gtk/propertybox.c:655
+#: ../gtk/propertybox.c:698
 msgid "Brazilian Portugese"
 msgstr "巴西葡萄牙語"
 
-#: ../gtk/propertybox.c:656
+#: ../gtk/propertybox.c:699
 msgid "Polish"
 msgstr "波蘭語"
 
-#: ../gtk/propertybox.c:657
+#: ../gtk/propertybox.c:700
 msgid "German"
 msgstr "德語"
 
-#: ../gtk/propertybox.c:658
+#: ../gtk/propertybox.c:701
 msgid "Russian"
 msgstr "俄語"
 
-#: ../gtk/propertybox.c:659
+#: ../gtk/propertybox.c:702
 msgid "Japanese"
 msgstr "日語"
 
-#: ../gtk/propertybox.c:660
+#: ../gtk/propertybox.c:703
 msgid "Dutch"
 msgstr "荷蘭語"
 
-#: ../gtk/propertybox.c:661
+#: ../gtk/propertybox.c:704
 msgid "Hungarian"
 msgstr "匈牙利語"
 
-#: ../gtk/propertybox.c:662
+#: ../gtk/propertybox.c:705
 msgid "Czech"
 msgstr "捷克語"
 
-#: ../gtk/propertybox.c:663
+#: ../gtk/propertybox.c:706
 msgid "Chinese"
 msgstr "中文"
 
-#: ../gtk/propertybox.c:720
-msgid "You need to restart linphone for the new language selection to take effect."
+#: ../gtk/propertybox.c:707
+msgid "Traditional Chinese"
+msgstr ""
+
+#: ../gtk/propertybox.c:708
+msgid "Norwegian"
+msgstr ""
+
+#: ../gtk/propertybox.c:765
+msgid ""
+"You need to restart linphone for the new language selection to take effect."
 msgstr "您需要重新啟動 linphone 才能讓新選擇的語言生效。"
 
+#: ../gtk/propertybox.c:835
+msgid "None"
+msgstr ""
+
+#: ../gtk/propertybox.c:839
+msgid "SRTP"
+msgstr ""
+
+#: ../gtk/propertybox.c:845
+msgid "ZRTP"
+msgstr ""
+
 #: ../gtk/update.c:80
 #, c-format
 msgid ""
@@ -305,8 +396,7 @@ msgstr "使用者名稱:"
 msgid "Checking if '%s' is available..."
 msgstr "檢查「%s」是否可用…"
 
-#: ../gtk/setupwizard.c:97
-#: ../gtk/setupwizard.c:164
+#: ../gtk/setupwizard.c:97 ../gtk/setupwizard.c:164
 msgid "Please wait..."
 msgstr "請稍候..."
 
@@ -314,13 +404,11 @@ msgstr "請稍候..."
 msgid "Sorry this username already exists. Please try a new one."
 msgstr "很抱歉這個使用者名稱已經存在。請嘗試新的名稱。"
 
-#: ../gtk/setupwizard.c:103
-#: ../gtk/setupwizard.c:168
+#: ../gtk/setupwizard.c:103 ../gtk/setupwizard.c:168
 msgid "Ok !"
 msgstr "確定!"
 
-#: ../gtk/setupwizard.c:106
-#: ../gtk/setupwizard.c:171
+#: ../gtk/setupwizard.c:106 ../gtk/setupwizard.c:171
 msgid "Communication problem, please try again later."
 msgstr "連線問題,請稍後再試一次。"
 
@@ -356,68 +444,99 @@ msgstr "正在建立您的帳號"
 msgid "Now ready !"
 msgstr "現在已就緒!"
 
-#: ../gtk/incall_view.c:113
+#: ../gtk/incall_view.c:69
+#, fuzzy, c-format
+msgid "Call #%i"
+msgstr "播打給 %s"
+
+#: ../gtk/incall_view.c:127
+#, c-format
+msgid "Transfer to call #%i with %s"
+msgstr ""
+
+#: ../gtk/incall_view.c:155
 msgid "Transfer"
 msgstr "轉接"
 
-#: ../gtk/incall_view.c:187
+#: ../gtk/incall_view.c:271
 msgid "<b>Calling...</b>"
 msgstr "<b>播打...</b>"
 
-#: ../gtk/incall_view.c:190
-#: ../gtk/incall_view.c:246
+#: ../gtk/incall_view.c:274 ../gtk/incall_view.c:482
 msgid "00::00::00"
 msgstr "00::00::00"
 
-#: ../gtk/incall_view.c:206
+#: ../gtk/incall_view.c:285
 msgid "<b>Incoming call</b>"
 msgstr "<b>來電</b>"
 
-#: ../gtk/incall_view.c:216
-msgid ""
-"Pause all calls\n"
-"and answer"
+#: ../gtk/incall_view.c:322
+msgid "good"
 msgstr ""
-"暫停所有播打\n"
-"與接聽"
 
-#: ../gtk/incall_view.c:217
-#: ../gtk/main.ui.h:20
-msgid "Answer"
-msgstr "接聽"
+#: ../gtk/incall_view.c:324
+msgid "average"
+msgstr ""
+
+#: ../gtk/incall_view.c:326
+msgid "poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:328
+msgid "very poor"
+msgstr ""
+
+#: ../gtk/incall_view.c:330
+msgid "too bad"
+msgstr ""
+
+#: ../gtk/incall_view.c:331 ../gtk/incall_view.c:347
+msgid "unavailable"
+msgstr ""
 
-#: ../gtk/incall_view.c:244
+#: ../gtk/incall_view.c:447
+msgid "Secured by SRTP"
+msgstr ""
+
+#: ../gtk/incall_view.c:453
+#, c-format
+msgid "Secured by ZRTP - [auth token: %s]"
+msgstr ""
+
+#: ../gtk/incall_view.c:459
+msgid "Set unverified"
+msgstr ""
+
+#: ../gtk/incall_view.c:459 ../gtk/main.ui.h:49
+msgid "Set verified"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
+msgid "In conference"
+msgstr ""
+
+#: ../gtk/incall_view.c:480
 msgid "<b>In call</b>"
 msgstr "<b>通話中</b>"
 
-#: ../gtk/incall_view.c:260
+#: ../gtk/incall_view.c:499
 msgid "<b>Paused call</b>"
 msgstr "<b>暫停通話</b>"
 
-#: ../gtk/incall_view.c:272
+#: ../gtk/incall_view.c:511
 #, c-format
 msgid "%02i::%02i::%02i"
 msgstr "%02i::%02i::%02i"
 
-#: ../gtk/incall_view.c:288
+#: ../gtk/incall_view.c:527
 msgid "<b>Call ended.</b>"
 msgstr "<b>通話結束。</b>"
 
-#: ../gtk/incall_view.c:309
-msgid "Unmute"
-msgstr "取消靜音"
-
-#: ../gtk/incall_view.c:316
-#: ../gtk/main.ui.h:42
-msgid "Mute"
-msgstr "靜音"
-
-#: ../gtk/incall_view.c:340
+#: ../gtk/incall_view.c:584
 msgid "Resume"
 msgstr "繼續"
 
-#: ../gtk/incall_view.c:347
-#: ../gtk/main.ui.h:46
+#: ../gtk/incall_view.c:591 ../gtk/main.ui.h:45
 msgid "Pause"
 msgstr "暫停"
 
@@ -479,8 +598,9 @@ msgid "<b>Add contacts from directory</b>"
 msgstr "<b>從目錄加入連絡人</b>"
 
 #: ../gtk/main.ui.h:14
-msgid "<b>Contact list</b>"
-msgstr "<b>連絡人清單</b> "
+#, fuzzy
+msgid "<b>Callee name</b>"
+msgstr "<b>通話結束。</b>"
 
 #: ../gtk/main.ui.h:15
 msgid "<b>Welcome !</b>"
@@ -503,26 +623,26 @@ msgid "All users"
 msgstr "所有使用者"
 
 #: ../gtk/main.ui.h:21
-msgid "Audio & video"
-msgstr "語音 & 視訊"
-
-#: ../gtk/main.ui.h:22
-msgid "Audio only"
-msgstr "只有語音"
-
-#: ../gtk/main.ui.h:23
 msgid "Automatically log me in"
 msgstr "將我自動登入"
 
-#: ../gtk/main.ui.h:24
+#: ../gtk/main.ui.h:22
 msgid "B"
 msgstr "B"
 
-#: ../gtk/main.ui.h:25
-#: ../gtk/parameters.ui.h:20
+#: ../gtk/main.ui.h:23 ../gtk/parameters.ui.h:21
 msgid "C"
 msgstr "C"
 
+#: ../gtk/main.ui.h:24
+#, fuzzy
+msgid "Call"
+msgstr "播打給 %s"
+
+#: ../gtk/main.ui.h:25
+msgid "Call quality rating"
+msgstr ""
+
 #: ../gtk/main.ui.h:26
 msgid "Check _Updates"
 msgstr "檢查更新(_U)"
@@ -535,10 +655,6 @@ msgstr "連絡人"
 msgid "D"
 msgstr "D"
 
-#: ../gtk/main.ui.h:29
-msgid "Decline"
-msgstr "拒接"
-
 #: ../gtk/main.ui.h:30
 msgid "Default"
 msgstr "預設值"
@@ -548,13 +664,14 @@ msgid "Duration"
 msgstr "時間長度"
 
 #: ../gtk/main.ui.h:32
-msgid "Duration:"
-msgstr "時間長度:"
-
-#: ../gtk/main.ui.h:33
 msgid "Enable self-view"
 msgstr "啟用自拍檢視"
 
+#: ../gtk/main.ui.h:33
+#, fuzzy
+msgid "Enable video"
+msgstr "已啟用"
+
 #: ../gtk/main.ui.h:34
 msgid "Enter username, phone number, or full sip address"
 msgstr "輸入使用者名稱、電話號碼或完整的 sip 位址"
@@ -587,18 +704,23 @@ msgstr "登入資訊"
 msgid "Lookup:"
 msgstr "查詢:"
 
-#: ../gtk/main.ui.h:43
+#: ../gtk/main.ui.h:42
 msgid "My current identity:"
 msgstr "我目前的使用者識別:"
 
-#: ../gtk/main.ui.h:44
+#: ../gtk/main.ui.h:43
 msgid "Online users"
 msgstr "線上使用者"
 
-#: ../gtk/main.ui.h:45
+#: ../gtk/main.ui.h:44
 msgid "Password"
 msgstr "密碼"
 
+#: ../gtk/main.ui.h:46
+#, fuzzy
+msgid "Recent calls"
+msgstr "通話中"
+
 #: ../gtk/main.ui.h:47
 msgid "SIP address or phone number:"
 msgstr "SIP 位址或電話號碼:"
@@ -607,18 +729,14 @@ msgstr "SIP 位址或電話號碼:"
 msgid "Search"
 msgstr "搜尋"
 
-#: ../gtk/main.ui.h:49
+#: ../gtk/main.ui.h:50
 msgid "Show debug window"
 msgstr "顯示除錯視窗"
 
-#: ../gtk/main.ui.h:50
+#: ../gtk/main.ui.h:51
 msgid "Username"
 msgstr "使用者名稱"
 
-#: ../gtk/main.ui.h:51
-msgid "_Call history"
-msgstr "通話紀錄(_C)"
-
 #: ../gtk/main.ui.h:52
 msgid "_Help"
 msgstr "求助(_H)"
@@ -628,18 +746,14 @@ msgid "_Homepage"
 msgstr "官方網頁(_H)"
 
 #: ../gtk/main.ui.h:54
-msgid "_Linphone"
-msgstr "_Linphone"
-
-#: ../gtk/main.ui.h:55
 msgid "_Options"
 msgstr "選項(_O)"
 
-#: ../gtk/main.ui.h:56
+#: ../gtk/main.ui.h:55
 msgid "in"
 msgstr "於"
 
-#: ../gtk/main.ui.h:57
+#: ../gtk/main.ui.h:56
 msgid "label"
 msgstr "標籤"
 
@@ -697,16 +811,6 @@ msgstr "SIP 位址"
 msgid "Show this contact presence status"
 msgstr "顯示這個連絡人的上線狀態"
 
-#: ../gtk/contact.ui.h:6
-#: ../gtk/password.ui.h:5
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
-
-#: ../gtk/contact.ui.h:7
-#: ../gtk/password.ui.h:6
-msgid "gtk-ok"
-msgstr "gtk-ok"
-
 #: ../gtk/log.ui.h:1
 msgid "Linphone debug window"
 msgstr "Linphone 除錯視窗"
@@ -760,8 +864,8 @@ msgid "Publish presence information"
 msgstr "發布上線資訊"
 
 #: ../gtk/sip_account.ui.h:6
-msgid "Register at startup"
-msgstr "啟動時註冊"
+msgid "Register"
+msgstr ""
 
 #: ../gtk/sip_account.ui.h:7
 msgid "Registration duration (sec):"
@@ -787,10 +891,6 @@ msgstr "sip:"
 msgid "Send"
 msgstr "傳送"
 
-#: ../gtk/chatroom.ui.h:2
-msgid "gtk-close"
-msgstr "gtk-close"
-
 #: ../gtk/parameters.ui.h:1
 msgid "0 stands for \"unlimited\""
 msgstr "0 表示「不限制」"
@@ -824,8 +924,8 @@ msgid "<b>NAT and Firewall</b>"
 msgstr "<b>NAT 與防火牆</b>"
 
 #: ../gtk/parameters.ui.h:9
-msgid "<b>Ports</b>"
-msgstr "<b>連接埠</b>"
+msgid "<b>Network protocol and ports</b>"
+msgstr ""
 
 #: ../gtk/parameters.ui.h:10
 msgid "<b>Privacy</b>"
@@ -844,98 +944,112 @@ msgid "<b>Video</b>"
 msgstr "<b>視訊</b>"
 
 #: ../gtk/parameters.ui.h:14
+msgid ""
+"<i>Adaptive rate control is a technique to dynamically guess the available "
+"bandwidth during a call.</i>"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:15
 msgid "ALSA special device (optional):"
 msgstr "ALSA 特殊裝置 (選擇性):"
 
-#: ../gtk/parameters.ui.h:15
+#: ../gtk/parameters.ui.h:16
 msgid "Add"
 msgstr "加入"
 
-#: ../gtk/parameters.ui.h:16
+#: ../gtk/parameters.ui.h:17
 msgid "Audio RTP/UDP:"
 msgstr "音效 RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:17
+#: ../gtk/parameters.ui.h:18
 msgid "Audio codecs"
 msgstr "音訊編碼解碼器"
 
-#: ../gtk/parameters.ui.h:18
+#: ../gtk/parameters.ui.h:19
 msgid "Behind NAT / Firewall (specify gateway IP below)"
 msgstr "在 NAT / 防火牆之後 (在下面指定閘道器 IP)"
 
-#: ../gtk/parameters.ui.h:19
+#: ../gtk/parameters.ui.h:20
 msgid "Behind NAT / Firewall (use STUN to resolve)"
 msgstr "在 NAT / 防火牆之後 (使用 STUN 解析)"
 
-#: ../gtk/parameters.ui.h:21
+#: ../gtk/parameters.ui.h:22
 msgid "CIF"
 msgstr "CIF"
 
-#: ../gtk/parameters.ui.h:22
+#: ../gtk/parameters.ui.h:23
 msgid "Capture device:"
 msgstr "捕捉裝置:"
 
-#: ../gtk/parameters.ui.h:23
+#: ../gtk/parameters.ui.h:24
 msgid "Codecs"
 msgstr "編碼解碼器"
 
-#: ../gtk/parameters.ui.h:24
+#: ../gtk/parameters.ui.h:25
 msgid "Direct connection to the Internet"
 msgstr "直接連線到網際網路"
 
-#: ../gtk/parameters.ui.h:25
+#: ../gtk/parameters.ui.h:26
 msgid "Disable"
 msgstr "停用"
 
-#: ../gtk/parameters.ui.h:26
+#: ../gtk/parameters.ui.h:27
 msgid "Done"
 msgstr "完成"
 
-#: ../gtk/parameters.ui.h:27
+#: ../gtk/parameters.ui.h:28
 msgid "Download speed limit in Kbit/sec:"
 msgstr "下載速度限制於 Kbit/sec:"
 
-#: ../gtk/parameters.ui.h:28
+#: ../gtk/parameters.ui.h:29
 msgid "Edit"
 msgstr "編輯"
 
-#: ../gtk/parameters.ui.h:29
+#: ../gtk/parameters.ui.h:30
 msgid "Enable"
 msgstr "啟用"
 
-#: ../gtk/parameters.ui.h:30
+#: ../gtk/parameters.ui.h:31
+msgid "Enable adaptive rate control"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:32
 msgid "Enable echo cancellation"
 msgstr "啟用回音消除"
 
-#: ../gtk/parameters.ui.h:31
+#: ../gtk/parameters.ui.h:33
 msgid "Erase all passwords"
 msgstr "消除所有的密碼"
 
-#: ../gtk/parameters.ui.h:32
+#: ../gtk/parameters.ui.h:34
 msgid "Manage SIP Accounts"
 msgstr "管理 SIP 帳號"
 
-#: ../gtk/parameters.ui.h:33
+#: ../gtk/parameters.ui.h:35
+msgid "Media encryption type"
+msgstr ""
+
+#: ../gtk/parameters.ui.h:36
 msgid "Multimedia settings"
 msgstr "多媒體設定值"
 
-#: ../gtk/parameters.ui.h:34
+#: ../gtk/parameters.ui.h:37
 msgid "Network settings"
 msgstr "網路設定值"
 
-#: ../gtk/parameters.ui.h:35
+#: ../gtk/parameters.ui.h:38
 msgid "Playback device:"
 msgstr "播放裝置"
 
-#: ../gtk/parameters.ui.h:36
+#: ../gtk/parameters.ui.h:39
 msgid "Prefered video resolution:"
 msgstr "偏好的視訊解析度:"
 
-#: ../gtk/parameters.ui.h:37
+#: ../gtk/parameters.ui.h:40
 msgid "Public IP address:"
 msgstr "公共 IP 地址:"
 
-#: ../gtk/parameters.ui.h:38
+#: ../gtk/parameters.ui.h:41
 msgid ""
 "Register to FONICS\n"
 "virtual network !"
@@ -943,95 +1057,102 @@ msgstr ""
 "註冊到 FONICS\n"
 "虛擬網路!"
 
-#: ../gtk/parameters.ui.h:40
+#: ../gtk/parameters.ui.h:43
 msgid "Remove"
 msgstr "移除"
 
-#: ../gtk/parameters.ui.h:41
+#: ../gtk/parameters.ui.h:44
 msgid "Ring device:"
 msgstr "響鈴裝置:"
 
-#: ../gtk/parameters.ui.h:42
+#: ../gtk/parameters.ui.h:45
 msgid "Ring sound:"
 msgstr "鈴聲音效:"
 
-#: ../gtk/parameters.ui.h:43
-msgid "SIP (TCP):"
+#: ../gtk/parameters.ui.h:46
+#, fuzzy
+msgid "SIP (TCP)"
 msgstr "SIP (TCP):"
 
-#: ../gtk/parameters.ui.h:44
-msgid "SIP (UDP):"
+#: ../gtk/parameters.ui.h:47
+#, fuzzy
+msgid "SIP (TLS)"
+msgstr "SIP (TCP):"
+
+#: ../gtk/parameters.ui.h:48
+#, fuzzy
+msgid "SIP (UDP)"
 msgstr "SIP (UDP):"
 
-#: ../gtk/parameters.ui.h:45
+#: ../gtk/parameters.ui.h:49
 msgid "Send DTMFs as SIP info"
 msgstr "傳送 DTMFs 為 SIP 資訊"
 
-#: ../gtk/parameters.ui.h:46
+#: ../gtk/parameters.ui.h:50
 msgid "Set Maximum Transmission Unit:"
 msgstr "設定最大傳輸單位:"
 
-#: ../gtk/parameters.ui.h:47
+#: ../gtk/parameters.ui.h:51
 msgid "Settings"
 msgstr "設定值"
 
-#: ../gtk/parameters.ui.h:48
+#: ../gtk/parameters.ui.h:52
 msgid "Show advanced settings"
 msgstr "顯示進階設定值"
 
-#: ../gtk/parameters.ui.h:49
+#: ../gtk/parameters.ui.h:53
 msgid "Stun server:"
 msgstr "Stun 伺服器:"
 
-#: ../gtk/parameters.ui.h:50
+#: ../gtk/parameters.ui.h:54
 msgid "This section defines your SIP address when not using a SIP account"
 msgstr "這一區在不使用 SIP 帳號時定義您的 SIP 位址"
 
-#: ../gtk/parameters.ui.h:51
+#: ../gtk/parameters.ui.h:55
 msgid "Upload speed limit in Kbit/sec:"
 msgstr "上傳速度限制於 Kbit/sec:"
 
-#: ../gtk/parameters.ui.h:52
+#: ../gtk/parameters.ui.h:56
 msgid "Use IPv6 instead of IPv4"
 msgstr "使用 IPv6 代替 IPv4"
 
-#: ../gtk/parameters.ui.h:53
+#: ../gtk/parameters.ui.h:57
 msgid "User interface"
 msgstr "使用者介面"
 
-#: ../gtk/parameters.ui.h:54
+#: ../gtk/parameters.ui.h:58
 msgid "Video RTP/UDP:"
 msgstr "視訊 RTP/UDP:"
 
-#: ../gtk/parameters.ui.h:55
+#: ../gtk/parameters.ui.h:59
 msgid "Video codecs"
 msgstr "視訊編碼解碼器"
 
-#: ../gtk/parameters.ui.h:56
+#: ../gtk/parameters.ui.h:60
 msgid "Video input device:"
 msgstr "視訊輸入裝置:"
 
-#: ../gtk/parameters.ui.h:57
+#: ../gtk/parameters.ui.h:61
 msgid "Your display name (eg: John Doe):"
 msgstr "您的顯示名稱 (例如: John Doe):"
 
-#: ../gtk/parameters.ui.h:58
+#: ../gtk/parameters.ui.h:62
 msgid "Your resulting SIP address:"
 msgstr "您組成的 SIP 位址:"
 
-#: ../gtk/parameters.ui.h:59
+#: ../gtk/parameters.ui.h:63
 msgid "Your username:"
 msgstr "您的使用者名稱:"
 
-#: ../gtk/parameters.ui.h:60
+#: ../gtk/parameters.ui.h:64
 msgid "a sound card"
 msgstr "音效卡"
 
-#: ../gtk/parameters.ui.h:61
+#: ../gtk/parameters.ui.h:65
 msgid "default camera"
 msgstr "預設的攝影機"
 
-#: ../gtk/parameters.ui.h:62
+#: ../gtk/parameters.ui.h:66
 msgid "default soundcard"
 msgstr "預設的音效卡"
 
@@ -1055,25 +1176,19 @@ msgstr "Linphone"
 msgid "Please wait"
 msgstr "請稍候"
 
-#: ../coreapi/linphonecore.c:165
-#, c-format
-msgid "You have missed %i call."
-msgid_plural "You have missed %i calls."
-msgstr[0] "您有 %i 通未接來電。"
-
-#: ../coreapi/linphonecore.c:206
+#: ../coreapi/linphonecore.c:187
 msgid "aborted"
 msgstr "已放棄"
 
-#: ../coreapi/linphonecore.c:209
+#: ../coreapi/linphonecore.c:190
 msgid "completed"
 msgstr "已完成"
 
-#: ../coreapi/linphonecore.c:212
+#: ../coreapi/linphonecore.c:193
 msgid "missed"
 msgstr "未接"
 
-#: ../coreapi/linphonecore.c:217
+#: ../coreapi/linphonecore.c:198
 #, c-format
 msgid ""
 "%s at %s\n"
@@ -1088,74 +1203,60 @@ msgstr ""
 "狀態:%s\n"
 "持續時間:%i 分 %i 秒\n"
 
-#: ../coreapi/linphonecore.c:218
-msgid "Incoming call"
-msgstr "來電"
-
-#: ../coreapi/linphonecore.c:218
+#: ../coreapi/linphonecore.c:199
 msgid "Outgoing call"
 msgstr "去電"
 
-#: ../coreapi/linphonecore.c:998
+#: ../coreapi/linphonecore.c:1088
 msgid "Ready"
 msgstr "準備就緒"
 
-#: ../coreapi/linphonecore.c:1773
+#: ../coreapi/linphonecore.c:1831
 msgid "Looking for telephone number destination..."
 msgstr "尋找電話號碼目的端..."
 
-#: ../coreapi/linphonecore.c:1776
+#: ../coreapi/linphonecore.c:1834
 msgid "Could not resolve this number."
 msgstr "無法解析這個號碼。"
 
-#: ../coreapi/linphonecore.c:1820
-msgid "Could not parse given sip address. A sip url usually looks like sip:user@domain"
+#: ../coreapi/linphonecore.c:1878
+msgid ""
+"Could not parse given sip address. A sip url usually looks like sip:"
+"user@domain"
 msgstr "無法解析指定的 sip 位址。sip 網址通常看起來像 sip:user@domain"
 
-#: ../coreapi/linphonecore.c:1967
+#: ../coreapi/linphonecore.c:2025
 msgid "Contacting"
 msgstr "正在連絡"
 
-#: ../coreapi/linphonecore.c:1974
+#: ../coreapi/linphonecore.c:2032
 msgid "Could not call"
 msgstr "無法通話"
 
-#: ../coreapi/linphonecore.c:2081
-msgid "Sorry, you have to pause or stop the current call first !"
-msgstr "抱歉,您必須先暫停或停止目前的通話!"
-
-#: ../coreapi/linphonecore.c:2086
+#: ../coreapi/linphonecore.c:2140
 msgid "Sorry, we have reached the maximum number of simultaneous calls"
 msgstr "抱歉,我們已達瀏同步通話的最大數目"
 
-#: ../coreapi/linphonecore.c:2208
+#: ../coreapi/linphonecore.c:2270
 msgid "Modifying call parameters..."
 msgstr "修改通話參數..."
 
-#: ../coreapi/linphonecore.c:2311
+#: ../coreapi/linphonecore.c:2366
 msgid "Connected."
 msgstr "已連線。"
 
-#: ../coreapi/linphonecore.c:2334
+#: ../coreapi/linphonecore.c:2389
 msgid "Call aborted"
 msgstr "通話已放棄"
 
-#: ../coreapi/linphonecore.c:2374
-msgid "Call ended"
-msgstr "通話已結束"
-
-#: ../coreapi/linphonecore.c:2456
+#: ../coreapi/linphonecore.c:2530
 msgid "Could not pause the call"
 msgstr "無法暫停通話"
 
-#: ../coreapi/linphonecore.c:2460
+#: ../coreapi/linphonecore.c:2535
 msgid "Pausing the current call..."
 msgstr "暫停目前的通話..."
 
-#: ../coreapi/linphonecore.c:2499
-msgid "There is already a call in process, pause or stop it first."
-msgstr "已經有通話在進行中,請先暫停或停止它。"
-
 #: ../coreapi/misc.c:147
 msgid ""
 "Your computer appears to be using ALSA sound drivers.\n"
@@ -1232,11 +1333,14 @@ msgstr "等待中"
 msgid "Unknown-bug"
 msgstr "不明錯誤"
 
-#: ../coreapi/proxy.c:187
-msgid "The sip proxy address you entered is invalid, it must start with \"sip:\" followed by a hostname."
-msgstr "您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。"
+#: ../coreapi/proxy.c:192
+msgid ""
+"The sip proxy address you entered is invalid, it must start with \"sip:\" "
+"followed by a hostname."
+msgstr ""
+"您輸入的 sip 代理位址是無效的,它必須要以「sip:」開頭,後面接主機名稱。"
 
-#: ../coreapi/proxy.c:193
+#: ../coreapi/proxy.c:198
 msgid ""
 "The sip identity you entered is invalid.\n"
 "It should look like sip:username@proxydomain, such as sip:alice@example.net"
@@ -1244,136 +1348,197 @@ msgstr ""
 "您輸入的 sip 身分是無效的。\n"
 "它應該看起來像 sip:使用者名稱@代理網域,像是 sip:alice@example.net"
 
-#: ../coreapi/proxy.c:671
+#: ../coreapi/proxy.c:690
 #, c-format
 msgid "Could not login as %s"
 msgstr "無法以 %s 登入"
 
-#: ../coreapi/callbacks.c:170
+#: ../coreapi/callbacks.c:206
 msgid "is contacting you"
 msgstr "正在連絡您"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid " and asked autoanswer."
 msgstr "並要求自動接聽。"
 
-#: ../coreapi/callbacks.c:171
+#: ../coreapi/callbacks.c:207
 msgid "."
 msgstr "."
 
-#: ../coreapi/callbacks.c:226
+#: ../coreapi/callbacks.c:266
 msgid "Remote ringing."
 msgstr "遠端響鈴。"
 
-#: ../coreapi/callbacks.c:242
+#: ../coreapi/callbacks.c:282
 msgid "Remote ringing..."
 msgstr "遠端響鈴..."
 
-#: ../coreapi/callbacks.c:253
+#: ../coreapi/callbacks.c:293
 msgid "Early media."
 msgstr "早期媒體。"
 
-#: ../coreapi/callbacks.c:291
+#: ../coreapi/callbacks.c:331
 #, c-format
 msgid "Call with %s is paused."
 msgstr "和 %s 的通話已暫停。"
 
-#: ../coreapi/callbacks.c:302
+#: ../coreapi/callbacks.c:342
 #, c-format
 msgid "Call answered by %s - on hold."
 msgstr "通話由 %s 接聽 - 保留中。"
 
-#: ../coreapi/callbacks.c:317
+#: ../coreapi/callbacks.c:357
 msgid "Call resumed."
 msgstr "通話已繼續。"
 
-#: ../coreapi/callbacks.c:322
+#: ../coreapi/callbacks.c:362
 #, c-format
 msgid "Call answered by %s."
 msgstr "通話由 %s 接聽。"
 
-#: ../coreapi/callbacks.c:383
+#: ../coreapi/callbacks.c:432
 msgid "We are being paused..."
 msgstr "我們被暫停了..."
 
-#: ../coreapi/callbacks.c:387
+#: ../coreapi/callbacks.c:436
 msgid "We have been resumed..."
 msgstr "我們要繼續了..."
 
-#: ../coreapi/callbacks.c:424
+#: ../coreapi/callbacks.c:441
+msgid "Call has been updated by remote..."
+msgstr ""
+
+#: ../coreapi/callbacks.c:473
 msgid "Call terminated."
 msgstr "通話已終止。"
 
-#: ../coreapi/callbacks.c:431
+#: ../coreapi/callbacks.c:480
 msgid "User is busy."
 msgstr "使用者現正忙碌。"
 
-#: ../coreapi/callbacks.c:432
+#: ../coreapi/callbacks.c:481
 msgid "User is temporarily unavailable."
 msgstr "使用者暫時無法聯繫。"
 
 #. char *retrymsg=_("%s. Retry after %i minute(s).");
-#: ../coreapi/callbacks.c:434
+#: ../coreapi/callbacks.c:483
 msgid "User does not want to be disturbed."
 msgstr "使用者不想要被打擾。"
 
-#: ../coreapi/callbacks.c:435
+#: ../coreapi/callbacks.c:484
 msgid "Call declined."
 msgstr "通話被拒接。"
 
-#: ../coreapi/callbacks.c:447
+#: ../coreapi/callbacks.c:496
 msgid "No response."
 msgstr "沒有回應。"
 
-#: ../coreapi/callbacks.c:451
+#: ../coreapi/callbacks.c:500
 msgid "Protocol error."
 msgstr "通訊協定錯誤。"
 
-#: ../coreapi/callbacks.c:467
+#: ../coreapi/callbacks.c:516
 msgid "Redirected"
 msgstr "已重新導向"
 
-#: ../coreapi/callbacks.c:477
+#: ../coreapi/callbacks.c:526
 msgid "Not found"
 msgstr "找不到"
 
-#: ../coreapi/callbacks.c:487
+#: ../coreapi/callbacks.c:551
 msgid "No common codecs"
 msgstr "沒有通用的編碼解碼器"
 
-#: ../coreapi/callbacks.c:493
+#: ../coreapi/callbacks.c:557
 msgid "Call failed."
 msgstr "通話失敗。"
 
-#: ../coreapi/callbacks.c:557
+#: ../coreapi/callbacks.c:631
 #, c-format
 msgid "Registration on %s successful."
 msgstr "在 %s 註冊成功。"
 
-#: ../coreapi/callbacks.c:558
+#: ../coreapi/callbacks.c:632
 #, c-format
 msgid "Unregistration on %s done."
 msgstr "在 %s 取消註冊完成。"
 
-#: ../coreapi/callbacks.c:574
+#: ../coreapi/callbacks.c:648
 msgid "no response timeout"
 msgstr "沒有回應逾時"
 
-#: ../coreapi/callbacks.c:577
+#: ../coreapi/callbacks.c:651
 #, c-format
 msgid "Registration on %s failed: %s"
 msgstr "在 %s 註冊失敗:%s"
 
-#: ../coreapi/callbacks.c:619
-#, c-format
-msgid "We are transferred to %s"
-msgstr "我們被轉接到 %s"
-
-#: ../coreapi/sal_eXosip2.c:814
-#: ../coreapi/sal_eXosip2.c:816
+#: ../coreapi/sal_eXosip2.c:873 ../coreapi/sal_eXosip2.c:875
 msgid "Authentication failure"
 msgstr "驗證失敗"
 
+#: ../coreapi/linphonecall.c:128
+#, fuzzy, c-format
+msgid "Authentication token is %s"
+msgstr "驗證失敗"
+
+#: ../coreapi/linphonecall.c:1560
+#, c-format
+msgid "You have missed %i call."
+msgid_plural "You have missed %i calls."
+msgstr[0] "您有 %i 通未接來電。"
+
+#~ msgid "Windows"
+#~ msgstr "視窗"
+
+#~ msgid ""
+#~ "Pause all calls\n"
+#~ "and answer"
+#~ msgstr ""
+#~ "暫停所有播打\n"
+#~ "與接聽"
+
+#~ msgid "Unmute"
+#~ msgstr "取消靜音"
+
+#~ msgid "<b>Contact list</b>"
+#~ msgstr "<b>連絡人清單</b> "
+
+#~ msgid "Audio & video"
+#~ msgstr "語音 & 視訊"
+
+#~ msgid "Audio only"
+#~ msgstr "只有語音"
+
+#~ msgid "Duration:"
+#~ msgstr "時間長度:"
+
+#~ msgid "_Call history"
+#~ msgstr "通話紀錄(_C)"
+
+#~ msgid "_Linphone"
+#~ msgstr "_Linphone"
+
+#~ msgid "gtk-cancel"
+#~ msgstr "gtk-cancel"
+
+#~ msgid "gtk-ok"
+#~ msgstr "gtk-ok"
+
+#~ msgid "Register at startup"
+#~ msgstr "啟動時註冊"
+
+#~ msgid "gtk-close"
+#~ msgstr "gtk-close"
+
+#~ msgid "<b>Ports</b>"
+#~ msgstr "<b>連接埠</b>"
+
+#~ msgid "Sorry, you have to pause or stop the current call first !"
+#~ msgstr "抱歉,您必須先暫停或停止目前的通話!"
+
+#~ msgid "There is already a call in process, pause or stop it first."
+#~ msgstr "已經有通話在進行中,請先暫停或停止它。"
+
 #~ msgid ""
 #~ "Your machine appears to be connected to an IPv6 network. By default "
 #~ "linphone always uses IPv4. Please update your configuration if you want "
index a6e0093a589c29973a04ddbff2ff2c65c874eff5..a225ac2cb6513bc52dc33dd3344dd2a181403db1 100644 (file)
Binary files a/share/rings/toy-mono.wav and b/share/rings/toy-mono.wav differ